🔑

【Google Cloud IAM】少人数チームでメンバーの権限を管理する

2021/02/17に公開

Google Cloudを使った少人数のプロジェクトで、開発メンバーごとにサービスへのアクセス権限を管理するIAM設定についてまとめておきます。

「少人数のプロジェクト」と絞ったのはGoogle Cloud IAMのドキュメントを読むと設定のパターンが色々とあって混乱しやすいと感じたからです。「とりあえず小さく共同開発をはじめる」というケースに絞って紹介します。

より良い方法をご存知の方はコメントで指摘していただけるとありがたいです。

Google CloudのIAMの考え方

Google CloudのIAMについてまず知っておきたい3つの要素があります。

※ かいつまんだ説明なので詳しくはIAMの仕組みをどうぞ。

  1. メンバー: 誰に権限を付与するか。個人のGoogleアカウントや、Googleグループ、組織[1]など
  2. ロール: 何の権限を付与するか。「AppEngineの管理権限とLogsの閲覧権限」のようにロールごとに許可する権限を指定できる
  3. ポリシー:メンバーとロールを紐付けるもの。「このメンバーにはこのロールを付与」のようなイメージ

イメージが湧きづらいと思うので具体例をみていきます。

例1)プロジェクト内の全サービスの権限を渡してしまう場合

例えば、以下のようなケースを考えてみます。

  • 信頼できる2〜3人で開発をする
  • 開発用のGoogle Cloudプロジェクトを使う(本番環境用プロジェクトは別に作成する)
  • まだ何のGoogle Cloudサービスを使うか未定(例:GAE/GKE/GCE/CloudRunそれぞれ試してみて決めたい)

信頼できる少数のメンバー かつ 開発環境用に作成したGoogle Cloudプロジェクトいうことで、効率を重視するために全サービス(リソース)の操作権限を付与したいとします。この場合、たとえば以下のようにIAMの設定を行います。

  • メンバーには、共同作業者のGoogleアカウント(Gmailアドレス)を使う
  • ロールには、基本ロールの[編集者]を選ぶ

基本ロールはあらかじめ用意されているロールで、プロジェクト内の権限を一括で付与するものです。[閲覧者]、[編集者]、[オーナー]などの種類があり、[編集者]を選ぶとGoogle Cloudプロジェクトのほぼ全てのサービスの設定いじることが可能になります。

具体的な設定例を見てみましょう。Google CloudコンソールのIAMを開き[追加]を選びます。メンバーとロールの選択モーダルが開くので以下のようにポリシーを設定します。

これで指定したメールアドレスのユーザーに全ての編集権限が渡ることになります。このメールアドレスを間違えるとヤバいのでしっかりと確認しましょう。

例2) 一部のGoogle Cloudサービスの権限のみを渡す場合

続いて以下のようなケースを考えてみます。

  • 2〜3人で開発をする
  • 一部のGoogle Cloudサービスの編集権限や閲覧権限をメンバーごとに付与したい
  • 権限は必要になったときにその都度追加する

この場合、たとえば以下のようにIAMの設定を行います。

  • メンバーには、共同作業者のGoogleアカウント(Gmailアドレス)を使う
  • ロールには、事前定義ロールを使う

事前定義ロールとはGoogle側があらかじめ用意している権限のセットのようなものです。「CloudRun 閲覧者」のようにサービスごとにロールが用意されていたりします。

具体的には以下のようにポリシーを設定できます。

このようにサービスごとに閲覧や編集の権限を分けて付与することができます。

なおカスタムロールというものを使うとさらに細かく権限を設定できます。たとえば「AppEngineのインスタンスの一覧の閲覧」などの詳細な設定が可能です。

例3) 複数のGoogleアカウントの権限をまとめて管理する場合

ここまでの例ではIAMのメンバーとして個人のGmailアドレスを用いていました。共同開発者が増える可能性がある場合は、複数のGoogleアカウントをグループにまとめたくなるかもしれません。

Google CloudのIAMメンバーには、以下のようなグループを使用できます。

Google Workspace や Cloud Identity だとデバイス管理や多要素認証の導入などのセキュリティ対策ができるため、より安全に権限管理ができます。

ただ、導入には費用がかかったり(Cloud Identityだと)ドメインの登録が必須だったりと、小規模で開発をスタートする場合にはハードルが高いこともあるかもしれません。

Googleグループで複数のアカウントをまとめる

今回は最も手軽に始められるGoogleグループを使って、複数のGoogleアカウントをまとめる手順を軽く紹介します。あまりおすすめできる方法ではないので、人数が増えたらCloud Identityなどに移行するのが良いと思います。

まずGoogle Cloudのオーナー権限を持つアカウントでログインした状態でGoogleマイグループを開きます。

[マイグループを作成]を選ぶと、グループの設定を色々と選ぶモーダルが表示されます。

細かな説明は省きますが、グループメール○○@googlegroups.com)の部分をIAMのポリシーを設定するときに使用します。

権限設定は全て[グループメンバー](もしくはそれ以上厳しいもの)にしておきます。

グループにはGoogle Cloudプロジェクトでの権限を一括で付与したい複数のGoogleアカウントを追加していきます。誤ったアカウントを追加してしまわないように注意しましょう。

あとは作成したGoogleグループのメールアドレスをIAMのポリシー設定で[メンバー]として入力します。

これでGoogleグループのメンバーに対して特定の権限を付与することができます。


以上、Google Cloudで少人数開発するときのIAM設定例の紹介でした。

脚注
  1. Google CloudではGoogleワークスペースやCloud Identityで組織を管理できます ↩︎

Discussion