2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS IAM経験者のためのGCP IAM入門 ~ロール・ポリシー・権限管理を徹底比較~

Posted at

「AWS IAMは使いこなしてるけど、GCPのIAMはなんだか馴染めない…」

そんなエンジニアのために、この記事では AWS IAMに精通している方がスムーズにGCP IAMを理解・活用するための視点で構成 しています。

  • IAMの考え方の違い
  • ポリシーとロールの構造の比較
  • GCP IAMの三要素「誰に・何を・どこで」
  • サービスアカウントや条件付きポリシーの使い所
  • 実例ベースの比較コード付き

🧭 全体構成マップ

AWS IAM ユーザー/グループ/ロール + ポリシー
GCP IAM プリンシパル + ロール + リソース(組織/フォルダ/プロジェクト)
AWS IAM                    GCP IAM
───────────────           ──────────────────────────
IAMユーザー                プリンシパル(user: / serviceAccount:)
IAMロール                  サービスアカウント / Impersonation
IAMグループ                G Suite グループ(Google Groups)
ポリシー(JSON)          ロール(Primitive / Predefined / Custom)
                           + IAMポリシーバインディング

🏗️ 基本概念の違いと読み替えマッピング

概念 AWS IAM GCP IAM 備考
ポリシー JSONで記述 ロールにまとめられている GCPは単体のポリシードキュメントが無い
ロール IAMロールとアクセス許可のセット ロール=権限セット GCPロールは3タイプ
リソース階層 単一アカウント 組織 → フォルダ → プロジェクト 継承ベースでアクセス管理
条件付き権限 "Condition": {...} 条件付きIAM GCPは強力な条件式サポート
クロスアクセス AssumeRole + TrustPolicy サービスアカウントのImpersonation GCPの方が細かく柔軟

🧪 具体例で理解する:Cloud Storage(GCS) vs S3

✅ AWSでのS3の読み取り権限付与

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:GetObject"],
    "Resource": "arn:aws:s3:::my-bucket/*"
  }]
}

→ IAMユーザーまたはIAMロールにアタッチ。


✅ GCPでのGCS読み取り権限付与(gcloud CLI)

gcloud projects add-iam-policy-binding my-project \
  --member="user:alice@example.com" \
  --role="roles/storage.objectViewer"

🔍 ポイント:

  • member: IAMプリンシパル(ユーザー、サービスアカウントなど)
  • role: 権限をまとめたロール
  • リソース: ここではプロジェクトスコープ(Storageはその下に紐づく)

🧠 GCP IAMの三要素モデル("Who", "What", "Where")

要素 内容
Who(誰に) Member(ユーザー/サービスアカウント) user:alice@example.com
What(何を) Role(権限のセット) roles/compute.instanceAdmin
Where(どこで) Resource(組織/フォルダ/プロジェクト) projects/my-project-id

🔒 IAM Conditions(条件付きアクセス)の強力さ

GCPはアクセス時点の属性に応じて許可条件を記述可能です。

⏰ 例:アクセス期限を設ける

--condition="expression=request.time < timestamp('2025-12-31T23:59:59Z'), title=expire2025, description=期限付き"

AWSにも Condition はありますが、GCPの条件式は [Common Expression Language (CEL)] をベースに柔軟です。


🤖 サービスアカウントと「なりすまし」権限(Impersonation)

✅ 例:Cloud Run → BigQuery 読み取り

# BigQuery読み取りロールをサービスアカウントに付与
gcloud projects add-iam-policy-binding my-project \
  --member="serviceAccount:cloud-run-sa@project.iam.gserviceaccount.com" \
  --role="roles/bigquery.dataViewer"

✅ Impersonationを許可するロール

# あるユーザーにサービスアカウントの "なりすまし" を許可
gcloud iam service-accounts add-iam-policy-binding cloud-run-sa@project.iam.gserviceaccount.com \
  --member="user:devops@example.com" \
  --role="roles/iam.serviceAccountTokenCreator"

🔧 カスタムロールの定義例(Terraform)

resource "google_project_iam_custom_role" "custom_read_logs" {
  role_id     = "customReadLogs"
  title       = "Read Logs Only"
  description = "Allow only read access to logs"
  permissions = [
    "logging.logEntries.list",
    "logging.logEntries.get"
  ]
  project     = var.project_id
}

roles/customReadLogs を割り当て可能に。


🎯 まとめ

✅ GCP IAMの特徴(AWSとの違い)

  • 権限の継承(組織 → プロジェクト)により 管理スコープが広く柔軟
  • ロールベースの設計(プリミティブ、プリ定義、カスタム)
  • 条件付きポリシーや サービスアカウントの impersonation で粒度の高い制御が可能
  • GCPは“人”よりも“リソースを中心にしたアクセス管理”
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?