[パナソニック インフォメーションシステムズ株式会社]
[画像: https://prtimes.jp/i/1723/338/resize/ ]
在宅勤務などのテレワークが当たり前となり、VDI(仮想デスクトップ)基盤を整備する企業が増えていますが、一口にVDIといってもさまざまなタイプがあります……
[パナソニック インフォメーションシステムズ株式会社]
[画像: https://prtimes.jp/i/1723/338/resize/ ]
在宅勤務などのテレワークが当たり前となり、VDI(仮想デスクトップ)基盤を整備する企業が増えていますが、一口にVDIといってもさまざまなタイプがあります……
[エムエスアイコンピュータージャパン株式会社]
[画像1: https://prtimes.jp/i/53749/176/resize/ ]
MSIストア販売限定モデルとなる「Creator-15-A10SET-480JP」は場所を選ばないクリエイターのために開発されたRTX Studio対応の薄型・軽量・ハイスペックク……
[エムエスアイコンピュータージャパン株式会社]
[画像1: https://prtimes.jp/i/53749/178/resize/ ]
29.5インチでアスペクト比が21:9の湾曲パネルを搭載し、リフレッシュレート200Hz、応答速度1ms、解像度WFHD(2,560 × 1,080)、HDMI 2.0 × 2……
[カバー株式会社]
[画像1: https://prtimes.jp/i/30268/371/resize/ ]
世界で話題を集めるバーチャルYouTuber(通称:VTuber)グループ「ホロライブ」所属のVTuberタレント「白上フブキ」「紫咲シオン」「宝鐘マリン」「戌神こ……
[ASUS JAPAN株式会社]
■ ROG STRIX Z590-F GAMING WIFI
[画像1: https://prtimes.jp/i/17808/571/resize/ ]
[画像2: https://prtimes.jp/i/17808/571/resize/ ]
[画像3: https://prtimes.jp/i/17808/571/resize/ ]
…
システムプラットフォーム部で SRE をやっている
id:nabeop です。システムプラットフォーム部を一言で表すと、基盤を横断的に見る部署という感じです。
過去の発表などでもたびたび言及していますが、はてなのいくつかのサービスは AWS 上で構築されており、これまで「クラウドに構築する」は「AWS で構築する」とほぼ同義な世界でした。
ただし、AWS 以外も全く使っていなかったわけではなく、小さなプロジェクトや個人では Google Cloud の利用もありました。また最近は、各サービスで技術選択の多様化が進み「Google Cloud 上でサービスを構築する」という選択肢も十分ありえる状態になってきました。
このため、各サービスで Google Cloud の利用が本格化する前に、安心して使えるように IAM (Identity and Access Management) など環境を整備する必要が出てきました。
今回は、複数の開発チームが性質の異なる複数のサービスを Google Cloud で展開するにあたり、開発速度を落とさずに安心して利用できるような枠組みを考える過程で得られた知見をまとめてみようと思います。
はてなでは、toB 向け、toC 向け、受託開発など性質の異なる複数のサービスを、複数のチームが開発・運用しています。ここで注意することは、例えば A というチームでは X と Y というサービスを開発するなど、必ずしも開発チームとサービスが1対1で対応するわけではありません。
また、はてなで働くエンジニアにアンケートシリーズの僕のエントリにもあるように、オープンネスな文化も大事な要素です。
例えば、あるサービスで使われている技術は、実際に動いている様子も含めて、誰でも参照可能な状態になっています。そこから異なるサービスに技術が輸出され、さらに洗練されていくことは、よく目にする光景です。
さらに、はてなでは各チームに技術選択の裁量と責任が任されており、自身のサービスで最適と思われるサービスや技術スタックを選択できるようになっています。
こういったことを考えると、Google Cloud の環境を整備するにあたっては、以下の3点を実現できることが重要になります。
Google Cloud では、リソースなどのアクセス制御は Cloud IAM で実現されています。こういったリソースへのアクセス権限などについて、企業におけるベストプラクティスが以下のドキュメントで公開されています。
エンタープライズ企業のベスト プラクティス | ドキュメント | Google Cloud
ここで紹介されているように、基本的に Google Cloud では組織を頂点とした以下のツリー構造で、リソースが配置されます。
組織 -> フォルダ -> プロジェクト -> GCE などのリソース
このとき各種権限では、基本的に上位のリソースで設定されているロールを引き継ぎます。例えば下記のようなツリー構造になっている場合、example.com 組織で設定されているロールは、Project X にあるリソースにも適用されます。一方で、Folder B に設定されているロールは Project X には適用されません。

Google Cloud では、このロールの継承関係を利用することで、各リソースの権限分離を実現できます。
ただし権限によっては、設定できるリソースレベルが限られていることに注意が必要です。例えば「組織のロール管理者 (roles/iam.organizationRoleAdmin)」は組織のレベルでしか設定できませんが、「ロール管理者 (roles/iam.roleAdmin)」はプロジェクトレベルまで設定できます。
Google Cloud には「ロールの継承」という概念があり、そのロールはフォルダ単位で付与できることがわかりました。この性質を利用することで、次のようなツリー構造を作成できます。
リソースツリーの中で適切なフォルダに適切な権限を設定することで、「はてなにおける開発体制と文化」の最後に述べた3つの要件は満たせそうです。
ここで問題になってくるのは、Google Cloud におけるリソースのツリー構造の中で、「開発チームと管理者の責任境界をどのように置くか」という点でした。
最終的には下記のようなツリー構造にすることで、前述した3つの要件を満たせると考えました。

このツリーでは、ロールを以下のように設定することが想定されています。
roles/viwer)」をプロジェクトに対して設定するオレンジ色の階層に作成するフォルダを「チームフォルダ」と名付け、各開発チーム向けに払い出します。
上記のロールを設定することで、責任境界となる「チームフォルダ」より下位のリソースは開発チームがオーナーシップを持ちつつ、先に挙げた3つの要件も満たせます。
開発チームがリソースのオーナーシップを持つということは、具体的には以下を実行できると想定しています。
チームフォルダには、具体的に下記のロールを付与しています。
roles/iam.serviceAccountAdmin)
roles/resourcemanager.folderAdmin)roles/resourcemanager.projectIamAdmin)roles/resourcemanager.projectCreator)roles/resourcemanager.projectDeleter)
roles/resourcemanager.projectMover)roles/owner)Google Cloud のドキュメントでは、基本ロールを極力使わないで、事前定義ロールもしくはカスタムロールを使うことが推奨されています。
しかし、それで開発チームが十分なオーナーシップを持てるのか、いまひとつ自信がなかったため、あえて基本ロールのオーナーを付与しています。これはある程度の運用知見がたまり、本当に必要とされるロールの組み合わせが分かってきたら置き換えることを想定しています。
ロールを設定する対象は、主に以下の5つから選択することになります。
はてなでは、全社員に Google アカウントが付与されているため、上記のうち Google アカウント、サービスアカウント、Google グループから選択することになります。
とくにチームフォルダでは、各ロールを付与する対象は個人に紐付いている Google アカウントではなく、開発チームが管理している Google グループを使います。チーム移動などで構成メンバーに変更があった場合に、開発チーム側で Google グループの構成メンバーを変更することで、双方の管理の手間を減らす目的があります。
今回は、複数のチームによる複数のサービス構築を見据えて、Google Cloud で権限分離を検討したときに考えたことを紹介しました。Google Cloud の運用知見がない状態で検討したので、この内容が正解かどうかに確かな自信はないのが正直なところです。実際に運用することで問題点を洗い出し、より適切な形にしていきたいと思います。
Google Cloud の環境整備では、今回の権限分離のほかに次のような話題もあります。
このあたりも機会があればエントリにしたいと思っています。
はてなの SRE では、
ということを考えて、よりよい基盤構成の検証などをやってます。
我こそは!! という人の応募を待っています。
▶ SRE(Site Reliability Engineer)職 転職・中途 – 採用情報
▶ SRE(Site Reliability Engineer)職の新卒採用 – 採用情報
id:nabeop
渡辺道和。インターネットサービスプロバイダにおける大規模コンテンツ配信サービスなどを経て、2018年3月にシステムプラットフォーム部のWebオペレーションエンジニアとして入社。現在は同部SRE。AWS Summit Online 2020では「はてなにおける AWS Transit Gateway の導入と活用」で登壇。
Twitter: @nabeo
GitHub: nabeo
blog: nabeo がピーしているブログ (仮)
[株式会社ポニーキャニオン]
現在各配信サイトで話題を集めている下北沢発の音楽ユニット「空白ごっこ」がスペースシャワーネットワークが運営する新人アーティスト応援企画「STARTERS MATCH」へ参加することが決定した。
[画像1: https://p……
[カバー株式会社]
[画像1: https://prtimes.jp/i/30268/372/resize/ ]
『Bouquet』は、『hololive IDOL PROJECT』がこれまで公開したオリジナル楽曲から、『Floral Circlet』シリーズの楽曲と「hololive IDOL PROJECT 1st Live……