TL

Cloud Service

Cloud IAM

「誰が・どのリソースに・何をできるか」をリソース階層に沿って制御する Google Cloud の認証認可サービス。全サービスのアクセス制御の土台で、利用は無料。AWS IAM に相当。

中級セキュリティ運用上の優秀性
最終更新: 2026-06-03公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.誰がどのリソースに何をできるかを制御する認証認可の土台。
  • 2.権限はロールにまとめ、組織→フォルダ→Pjへ継承。利用は無料。
  • 3.基本ロールを避け事前定義/カスタムで最小権限に絞るのが鉄則。

解決する課題

組織全体に同じアクセス制御モデルを行き渡らせつつ、事故と漏洩を防ぎます。

  • 全員がオーナー、では事故が起きる → 必要な人に必要なロールだけを、必要な階層で渡したい
  • アプリにキーを埋め込みたくない → サービスアカウントWorkload Identity 連携で鍵レスに
  • 数百プロジェクトの権限を個別管理したくない → 組織・フォルダ単位で付与して継承させたい
  • 監査で「誰が何をできるか/何をしたか」を説明したい

主要概念と用語

  • プリンシパル(メンバー): アクセスする主体。Google アカウント(user:)、Google グループ(group:)、サービスアカウント(serviceAccount:)、Google Workspace / Cloud Identity ドメイン(domain:)、allUsers / allAuthenticatedUsers など
  • ロール: 権限(service.resource.verb 形式のパーミッション。例 compute.instances.start)の集合。プリンシパルに「権限」を直接ではなくロール経由で付与する
    • 基本ロール(basic / primitive): roles/ownerroles/editorroles/viewer。広すぎるため本番では非推奨
    • 事前定義ロール(predefined): サービスごとに用途別に用意された推奨ロール(例 roles/storage.objectViewer
    • カスタムロール: 必要なパーミッションだけを束ねた独自ロール
  • IAM 許可ポリシー(allow policy): リソースに紐づくバインディングrolemembers の対応)の集合
  • リソース階層: 組織(Organization)→ フォルダ(Folder)→ プロジェクト(Project)→ リソース。上位で付与したロールは下位に継承される
  • サービスアカウント: 人ではなくワークロード(VM・Cloud Run・GKE 等)に紐づく ID。AWS の IAM ロールに近い
  • 条件(IAM Conditions / CEL): リソース名・時刻・属性などで付与を絞り込む条件付きアクセス

仕様・制限・クォータ

  • グローバルサービス(リージョンに依存しない。プリンシパルとポリシーは全リージョン共通)
  • 権限はプリンシパルに直接付与できない。必ずロールにまとめてバインドする(AWS のように JSON で個別の Action を列挙するモデルとは異なる)
  • ポリシーにはサイズ上限(1 リソースあたりのバインディング数・許可ポリシーの最大サイズ)があり、メンバーをグループ化することで上限と管理コストを抑えるのが定石
  • IAM Deny ポリシーは許可ポリシーとは別建てで、組織 / フォルダ / プロジェクトにアタッチする
  • 短期トークンは Security Token Service(STS)/ IAM Credentials API が発行(signJwt / generateAccessToken 等)。AWS の STS に相当

内部の仕組み

リクエストが来ると、IAM はそのリソースから上位階層へさかのぼって有効なポリシーを合成し、評価します。

  1. デフォルトは拒否(どのロールにも含まれなければアクセス不可)
  2. 対象リソース+継承された上位(プロジェクト/フォルダ/組織)のバインディングを集め、要求パーミッションを含むロールが付与されていれば許可
  3. ただし該当する IAM Deny ルールがあれば、許可より優先して拒否
許可は加算・継承され、Deny が最優先

許可ポリシーは**加算(allow のみ)**で、AWS の「明示的 Allow」を階層で積み上げるイメージです。さらに Deny ポリシーは許可を上書きします。下位で許可を「外す」ことはできず、上位の付与は下位に必ず継承される点に注意してください。

設計パターン / ベストプラクティス

  • 最小権限の原則: 基本ロール(Owner/Editor/Viewer)を避け、事前定義ロール、足りなければカスタムロールで必要なパーミッションだけに絞る
  • 付与は階層の適切な高さで: 全社共通は組織/フォルダ、個別はプロジェクト/リソースに。個人ではなくグループへ付与して入退社に強くする
  • サービスアカウントキーを作らない: VM/Cloud Run/GKE にはアタッチしたサービスアカウントを使い、外部ワークロードには Workload Identity 連携(Workload Identity Federation)、GKE Pod には Workload Identity を使って鍵レスにする
  • IAM Conditions で時間・リソース名・タグ(条件)により付与を限定する
  • 組織ポリシー(Organization Policy) と併用し、IAM だけでは縛れないガードレール(外部公開の禁止等)を設定する

運用・監視

  • IAM Recommender(ロール推奨) が直近の利用実績から過剰なロールの引き下げを提案
  • Policy Analyzer で「このプリンシパルはどのリソースに何ができるか」を棚卸し、Policy Troubleshooter でアクセス可否の理由を逆引き
  • Cloud Audit Logs(管理アクティビティ/データアクセス)で「誰がいつ何をしたか」を監査
  • 権限エラー時は、有効ポリシー(継承込み)→ 条件 → Deny ポリシーの順で確認する

コスト

IAM 自体は無料で、ロール付与・ポリシー評価・STS によるトークン発行に料金はかかりません。ただし周辺の機能には課金されるものがあります。

項目課金備考
IAM(ロール/ポリシー/評価)無料サービスアカウント・基本/事前定義/カスタムロールとも無料
Cloud Audit Logs(監査ログ)一部有料管理アクティビティは無料、データアクセスログは Logging の取り込み/保管料が発生

セキュリティ

  • 基本ロールを本番で使わない(特に roles/owner の乱発を避ける)
  • サービスアカウントキー(JSON)を発行・配布しない。鍵レス(連携 / アタッチ)を優先する
  • 特権操作には MFA(2 段階認証)を Cloud Identity / Workspace 側で必須化し、allUsers / allAuthenticatedUsers の付与を監査する
  • IAM Conditions と Deny ポリシーで、想定外の経路・時間・リソースを塞ぐ
アンチパターン

サービスアカウントのJSON キーを発行して VM やリポジトリに置くのは NG。漏洩すれば長期間悪用されます。VM/Cloud Run にはサービスアカウントをアタッチし、外部からは Workload Identity 連携を使えば、鍵の管理・漏洩リスクそのものを排除できます。

関連サービス・比較(AWS との対応)

観点Cloud IAM(GCP)AWS IAM
権限の付け方ロールをプリンシパルにバインド(権限の直接付与は不可)ポリシー(JSON)で Action/Resource を記述
スコープ/継承組織→フォルダ→プロジェクト→リソースに継承アカウント単位(明示付与、継承なし)
ワークロードの権限サービスアカウント(アタッチ / 連携)IAM ロール(インスタンスプロファイル等)
拒否の仕組みIAM Deny ポリシー(許可を上書き)ポリシーの明示的 Deny
短期トークンSTS / IAM Credentials APISTS(AssumeRole)
権限分析Policy Analyzer / Troubleshooter / RecommenderIAM Access Analyzer

ハンズオン / CLI例

# プロジェクトに対し、ユーザーにストレージ閲覧の事前定義ロールを付与
gcloud projects add-iam-policy-binding my-project \
  --member="user:alice@example.com" \
  --role="roles/storage.objectViewer"

# ワークロード用のサービスアカウントを作成し、必要なロールだけ付与
gcloud iam service-accounts create app-sa \
  --display-name="App Service Account"

gcloud projects add-iam-policy-binding my-project \
  --member="serviceAccount:app-sa@my-project.iam.gserviceaccount.com" \
  --role="roles/pubsub.subscriber"

# 現在のプロジェクトの IAM 許可ポリシーを確認(誰に何のロールが付いているか)
gcloud projects get-iam-policy my-project --format=json

# 認証中の自分の権限主体を確認(トラブル時に便利)
gcloud auth list

Google Cloud Service

Cloud IAMを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

セキュリティ・ID

比較で見る軸

クラウド: Google Cloud / カテゴリ: セキュリティ・ID / 難易度: intermediate

導入後に効く点

権限はロールにまとめ、組織→フォルダ→Pjへ継承。利用は無料。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
セキュリティ・ID
難易度
intermediate
関連資格
設計柱
security / operational

判断チェックリスト

  • 自社の用途が「セキュリティ・ID / security」に近いか確認する。
  • 強みである「誰がどのリソースに何をできるかを制御する認証認可の土台。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

セキュリティ・IDsecurityoperational

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。