Compass note

未踏の地へ踏み出すコンパス的エンジニアノート

GCP IAM 権限付与周りを調べてみた

IAM を使用すると Google CLoud リソースに対するアクセス権をきめ細かく設定できます。

IAM を使用することで最小権限のセキュリティ原則を導入できます。

この「最小権限のセキュリティ原則」は「必要以上に多くの権限を付与しない」ことが規定されています。

Google Cloud Identity and Access Management(IAM)とは?

Google Cloud の Identity and Access Management(IAM)サービスを使用すると、Google Cloud リソースの権限を作成および管理できます。Cloud IAM は、Google Cloud サービスに関するアクセス制御を 1 つのシステムに統合し、一貫性のあるオペレーションを提供します。

IAM の仕組み

IAM ではユーザ ID 単位でどのようなアクセス権(ロール)を持つかを定義出来ます。

IAM では複数の権限をロールにまとめて認証されたメンバーに付与します。

IAM のアクセス管理モデルでは「メンバー」「ロール」「ポリシー」の 3 つで構成されています。

  1. メンバー
    • Google アカウント(エンドユーザ)
    • サービスアカウント(アプリor仮想マシン)
    • Google グループ
    • Google Workspace or Cloud Identity ドメイン
  2. ロール
    • 権限のコレクションのこと。リソースに対して許可されているペレーションが決まる。
    • メンバーに役割を付与すると、その役割に含まれる全ての権限が付与されます。
  3. ポリシー
    • IAM ポリシーは、1 つ以上のメンバーを 1 つのロールにバインドします
    • リソースに対してどのようなアクセス権を誰に許可するのかを定義する場合、ポリシーを作成してそのポリシーをリソースに接続します。

IAM のロールのタイプ

IAM には 3 つのロールがあります。

  1. 基本ロール:IAM の導入前に存在していたオーナー、編集者、閲覧者のロール
  2. 事前定義ロール:特定のサービスへのアクセスを細かく制御する。Google Cloud によって管理される
  3. カスタムロール:ユーザ指定の権限のリストに応じたきめ細やかなアクセス権が提供される

GCP IAM の基本ロールと権限

ロール名 権限
roles/viewer 既存のリソースやデータを表示する(ただし変更は不可能)など、状態に影響しない読み取り専用アクションに必要な権限。
roles/editor すべての閲覧者権限と、状態を変更するアクション(既存のリソースの変更など)に必要な権限。
roles/owner すべての編集者権限と、以下のアクションを実行するために必要な権限。プロジェクトおよびプロジェクト内のすべてのリソースの権限とロールを管理する。プロジェクトの課金情報を設定する。
roles/browser(ベータ版) フォルダ、組織、Cloud IAM ポリシーなど、プロジェクトの階層を参照するための読み取りアクセス権。このロールには、プロジェクトのリソースを表示する権限は含まれていません。

cloud.google.com

GCP IAM:App Engine デプロイ作業者へ付与する最適な IAM 役割

Google では最小限の権限を付与するように推奨しています。

  1. プロジェクト編集者:アクセス権範囲が広すぎるので不可
  2. App Engine サービス管理者:モジュールレベルとバージョンレベルの設定に対する書き込み権限が付与されるので不可 C. App Engine デプロイ担当者:最適。新しいバージョンを作成できる書き込みアクセス権限のみが付与される
  3. App Engine コード閲覧者:読み取り専用のアクセス権なので不可

参考)

cloud.google.com