IAM のカスタムの役割について

Cloud Identity and Access Management(Cloud IAM)は、特定の Google Cloud Platform リソースへの詳細なアクセス権を付与し、他のリソースへの望ましくないアクセスを防ぐ事前定義された役割を提供します。

Cloud IAM は、カスタマイズされた Cloud IAM の役割を作成する機能も提供しています。1 つ以上の権限を持つカスタムの Cloud IAM の役割を作成し、ユーザーにそのカスタムの役割を付与できます。Cloud IAM は、カスタムの役割を作成し、管理するための UI と API を提供します。

このトピックでは、カスタムの役割に含めることのできるすべての Cloud IAM 権限の包括的なリストは提供しません。特定の権限がカスタムの役割でサポートされているかどうかを確認するには、カスタムの役割での権限のサポートレベルをご覧ください。特定のサービスのカスタムの役割については、その他の IAM ドキュメントをご覧ください。

始める前に

基本コンセプト

Cloud IAM では、ユーザーに直接権限を付与することはありません。代わりに、役割を割り当てます。役割には、1 つ以上の権限が組み込まれています。Cloud IAM には、事前定義された役割とカスタムの役割の 2 種類の役割があります。

事前定義された役割は、Google によって作成、管理されます。その権限は、GCP に新しい機能やサービスが追加された場合など、必要に応じて自動的に更新されます。

カスタムの役割はユーザー定義であり、特定のニーズに合わせて 1 つ以上のサポートされている権限をバンドルできます。カスタムの役割は Google によって管理されません。新しい権限、機能、サービスが GCP に追加されても、カスタムの役割は自動的に更新されません。

カスタムの役割は、1 つ以上の使用可能な Cloud IAM 権限を組み合わせることで作成します。権限により、ユーザーは Google Cloud Platform のリソースに対して特定の操作を実行できます。Cloud IAM の環境では、権限は次の形式で表されます。

<service>.<resource>.<verb>

たとえば、compute.instances.list 権限を持つユーザーは所有する Google Compute Engine インスタンスを一覧表示でき、compute.instances.stop 権限を持つユーザーは VM を停止できます。

権限は通常、REST メソッドと 1:1 に対応しています(そうでない場合もあります)。つまり、GCP の各サービスには、各 REST メソッドに対して関連付けられている権限があります。メソッドを呼び出すには、呼び出し元にその権限が必要です。たとえば、topic.publish() の呼び出し元には pubsub.topics.publish 権限が必要です。

カスタムの役割は、役割やリソースを所有するのと同じプロジェクトまたは組織のポリシーで権限を付与するためにのみ使用できます。あるプロジェクトまたは組織のカスタムの役割を、別のプロジェクトまたは組織が所有するリソースに対して付与することはできません。

必要な権限と役割

カスタムの役割を作成するには、呼び出し元に iam.roles.create 権限が必要です。

オーナー以外のユーザー(組織管理者を含む)には、組織の役割の管理者の役割(roles/iam.organizationRoleAdmin)または IAM 役割の管理者の役割(roles/iam.roleAdmin)のいずれかを割り当てる必要があります。IAM セキュリティ レビュー担当者の役割(roles/iam.securityReviewer)を使用すると、カスタムの役割を表示できますが、管理はできません。

カスタムの役割のユーザー インターフェースは、Google Cloud Platform Console の [IAM の役割] にあります。これは、カスタムの役割を作成または管理する権限を持つユーザーのみが使用できます。デフォルトでは、プロジェクト オーナーのみが新しい役割を作成できます。プロジェクト オーナーは、同じプロジェクトの他のユーザーに IAM 役割の管理者の役割を付与することで、この機能へのアクセスを制御できます。組織の場合は、組織管理者のみが組織の役割の管理者の役割を付与できます。

管理者の役割については、後で詳しく説明します。

組織の役割の管理者の役割

組織に GCP アカウントが関連付けられている場合、組織の役割の管理者の役割を使用すると、組織内のすべてのカスタムの役割を管理できます。この役割は、組織レベルでのみ付与することができます。組織管理者のみが組織の役割の管理者の役割を付与できます。

次の表に、組織の役割の管理者の役割の権限を一覧表示します。

役割 権限
roles/iam.organizationRoleAdmin iam.roles.create
iam.roles.delete
iam.roles.undelete
iam.roles.get
iam.roles.list
iam.roles.update
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.list
resourcemanager.organizations.get
resourcemanager.organizations.getIamPolicy

役割の管理者の役割

役割の管理者の役割を使用すると、プロジェクトのすべてのカスタム役割を管理できます。この役割は、組織がない場合に使用します。この役割は、プロジェクトまたは組織のオーナーによってのみプロジェクト レベルで付与されます。

次の表に、役割の管理者の役割の権限を一覧表示します。

役割 権限
roles/iam.roleAdmin iam.roles.create
iam.roles.delete
iam.roles.undelete
iam.roles.get
iam.roles.list
iam.roles.update
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy

カスタムの役割のライフサイクル

カスタムの役割をモデル化、作成、管理する方法を決定する際に適用される概念がいくつかあります。

作成

カスタムの役割を作成する前に、ニーズを満たすサービスの既存の事前定義済み役割(または役割のセット)がないことを確認してください。特定のサービスに適用される権限は、その他の IAM ドキュメントのリンクから参照できます。事前定義済み役割に含まれる権限については、役割メタデータの取得をご覧ください。

1 つ以上の事前定義済み役割で付与された権限のセットが適切でない場合は、事前定義済みの 1 つ以上の役割に基づいてカスタムの役割を作成し、必要に応じて権限を追加または削除する必要があります。それを行う方法の詳細については、カスタムの役割の作成と管理をご覧ください。

サポートされていないかまたは使用できない権限

また、カスタムの役割では一部の権限が表示されない場合や、使用できない場合があることにも注意してください。たとえば、サービスがベータ版の場合や、サービスに対して API を有効化していない場合は、権限をカスタムの役割で使用できないことがあります。

権限をカスタムの役割に含めることができるかどうかを判断するには、カスタムの役割の作成と管理リソースで使用可能な権限の表示セクションをご覧ください。

次の Cloud IAM 権限はカスタムの役割でサポートされていません。

  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

特定の GCP サービスのカスタムの役割でサポートされている権限を確認するには、次の表を参照してください。

権限の依存関係

一部の権限は、ペアで付与されたときにのみ有効です。たとえば、Cloud IAM ポリシーの更新には読み取り - 変更 - 書き込みパターンを使用する必要があるため、ポリシーの更新前に etag を取得できるように、ほとんどの場合 setIamPolicygetIamPolicy を使用する必要があります。

役割の命名

カスタムの役割の ID は一意である必要がありますが、名前プロパティが一意である必要はありません。

したがって、GCP Console には同じ名前の複数のカスタムの役割が表示される可能性があります。混乱を避けるために、カスタムの役割には一意でわかりやすい名前を使用してください。

役割の ID は変更できないため、慎重に選択してください。役割を削除することはできますが、37 日間の削除プロセスが完了するまでは、同じ ID で新しいカスタムの役割を作成することはできません。削除プロセスの詳細については、カスタムの役割の削除をご覧ください。

役割名は、GCP Console に表示される名前です。明確な名前を選択すると、ユーザーが GCP Console でカスタムの役割を選択する際の混乱を避けることができます。また、どの役割が組織レベルで、どの役割がプロジェクトレベルかを役割名に挿入して示すことも検討してください。役割名はいつでも変更できます。

役割の説明

カスタムの役割を編集した後で役割の説明を更新し、変更日とその役割の目的の要約の両方を含めてください。

テストとデプロイ

カスタムの役割には role.stage プロパティが含まれます。最初は、ステージを ALPHA に設定して、役割が初期の開発段階にあり、本番運用の準備ができていないことを示します。次に、組織のメンバーの少人数がいくつかのサンプルの使用事例でその役割を使用できるようにします。

新しく作成されたカスタムの役割にメンバーが満足している場合は、role.stage プロパティを BETA または GA に変更します。一般に、カスタムの役割がベータ版のサービスの権限を参照している場合は、ベータ版でなくなるまで GA ではなく BETA とマークする必要があります。

メンテナンス

ジョブ機能とプロダクト機能は常に進化しています。カスタムの役割を最新の状態に保ち、必要最小限の権限を割り当てておくには、メンテナンス作業が必要です。

たとえば、リリースされたサービスが新しいベータ版機能を取得すると、それらの API メソッドが一般公開され、対応する基本の役割と事前定義済みの役割に権限が自動的に追加されます。そのサービスのカスタムの役割は新しい権限を継承しないため、カスタムの役割に割り当てられたユーザーが、新しいベータ版機能にアクセスできないと報告する場合があります。その時点で、それらの権限を追加するか、別のカスタムの役割を作成して、特定のユーザーにこれらのベータ版機能へのアクセス権のみを付与できます。

Google では、権限を追加(または削除)して既存の事前定義済みの役割を更新することがありますが、事前定義済みの役割に基づいてカスタムの役割を変更することはありません。カスタムの役割は権限のフラットリストなので、これの基になっている可能性のある事前定義済み役割へのリンクはありません。

事前定義済みの役割に対する最新の変更によりカスタムの役割の更新が保証されるかどうかを簡単に確認できるように、これらの詳細を既存のカスタムの役割の [説明] フィールドに追加することをおすすめします。GCP Console は、新しいカスタムの役割を作成するときに、自動的にその情報を [説明] に入れます。

最近変更された権限について確認するには、IAM 権限変更ログを参照してください。

カスタムの役割の無効化

組織内のユーザーによる役割の使用を止める場合は、role.stage プロパティを DEPRECATED に変更し、必要に応じて deprecation_message を設定して、使用する必要がある代替の役割や詳細情報の入手場所をユーザーに知らせます。サポートが終了した役割を参照する可能性のあるポリシーが組織内に残らないようにする必要もあります。

役割を無効にできることを確認した後、roles:UpdateRole() を呼び出してこの役割を無効にします

既知の制限

  • 一部の事前定義済みの役割には、サポートが終了した権限や、カスタムの役割では許可されない権限が含まれています。サポートが終了した権限または制限された権限を含む事前定義済みの役割に基づくカスタムの役割には、それらの権限は含まれません。サポートされているすべての権限のリストについては、カスタムの役割での権限のサポートレベルのトピックを参照してください。

  • プロジェクト内で作成されたカスタム役割が他のプロジェクトの一覧を表示することはできません。resourcemanager.projects.list 権限を含む事前定義された役割を新しいプロジェクト レベルのカスタムの役割にコピーすると、次のメッセージのいずれかが表示されます。

    • GCP Console: 警告メッセージ [プロジェクト レベルのカスタムの役割に適用できません] が表示されます。resourcemanager.projects.list 権限が含まれている権限のリストから自動的に選択解除され、役割の作成に進むことができます。
    • Cloud SDK gcloud コマンドライン ツール: エラー メッセージ [INVALID_ARGUMENT: Permission resourcemanager.projects.list is not valid] が表示されます。カスタムの役割は、役割の定義から resourcemanager.projects.list 権限を削除してオペレーションを再試行するまで作成されません。
    • Google Cloud API: HTTP 400 エラーコードとステータス INVALID_ARGUMENT とともに、エラー メッセージ [Permission resourcemanager.projects.list is not valid] が表示されます。カスタムの役割は、役割の定義から resourcemanager.projects.list 権限を削除してオペレーションを再試行するまで作成されません。

次のステップ

その他の IAM ドキュメント

ドキュメント 説明
IAM の概要 IAM の基本概念について説明します。
役割について IAM の基本の役割と定義済みの役割について説明します。
組織用 IAM 組織用 IAM の役割と権限について説明しています。
プロジェクト用 IAM プロジェクト用 IAM の役割と権限について説明しています。
App Engine 用 IAM App Engine 用 IAM の役割と権限について説明しています。
Cloud BigQuery 用 IAM Cloud BigQuery 用 IAM の役割と権限について説明しています。
Cloud Bigtable 用 IAM Cloud Bigtable 用 IAM の役割と権限について説明しています。
Cloud Billing API 用 IAM Cloud Billing API 用 IAM の役割と権限について説明しています。
Cloud Dataflow 用 IAM Cloud Dataflow 用 IAM の役割と権限について説明しています。
Cloud Dataproc 用 IAM Cloud Dataproc 用 IAM の役割と権限について説明しています。
Cloud Datastore 用 IAM Cloud Datastore 用 IAM の役割と権限について説明しています。
注: Cloud Datastore では現在、カスタムの役割はサポートされていません。
Cloud Deployment Manager 用 IAM Cloud Deployment Manager 用 IAM の役割と権限について説明しています。
Cloud DNS 用 IAM Cloud DNS 用 IAM の役割と権限について説明しています。
Kubernetes Engine 用 IAM Kubernetes Engine 用 IAM の役割と権限について説明しています。
Cloud Pub/Sub 用 IAM Cloud Pub/Sub 用 IAM の役割と権限について説明しています。
Cloud SQL 用 IAM Cloud SQL 用 IAM の役割と権限について説明しています。
Cloud Storage 用 IAM Cloud Storage 用 IAM の役割と権限について説明しています。
Compute Engine 用 IAM Compute Engine 用 IAM の役割と権限について説明しています。
フォルダ用 IAM フォルダ用 IAM の役割と権限について説明しています。
Service Management 用 IAM Service Management 用 IAM の役割と権限について説明しています。
Stackdriver Debugger 用 IAM Stackdriver Debugger 用 IAM の役割と権限について説明しています。
Stackdriver Logging 用 IAM Stackdriver Logging 用 IAM の役割と権限について説明しています。
Stackdriver Trace 用 IAM Stackdriver Trace 用 IAM の役割と権限について説明しています。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Identity and Access Management のドキュメント