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

カスタムの役割のアルファ版に関するフィードバックを提供

Google Cloud Identity and Access Management(IAM)では、特定の Google Cloud Platform リソースへのより詳細なアクセスを可能にし、他のリソースへの不要なアクセスを防ぐ事前定義済みの役割が提供されています。

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

このトピックでは、カスタムの役割に含めることのできるすべての Cloud IAM 権限の包括的なリストは提供しません。特定のサービスに適用できる権限を確認するには、その他の IAM ドキュメントのリンクを使用してください。

始める前に

基本概念

ユーザーに権限を直接付与することはありません。代わりに、役割を割り当てます。役割には、1 つ以上の権限が組み込まれています。事前定義済みの役割は Google によって作成され、新しい機能やその他の変更に必要な最新の権限を維持します。カスタムの役割では、ニーズを満たすために 1 つ以上の使用可能な権限を組み込むことができます。組織レベルとプロジェクト レベルでカスタムの役割を作成できます。

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

`<service>.<resource>.<verb>`

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

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

カスタムの役割は、プロジェクト全体または組織全体で使用するためにのみ作成することができます。フォルダレベルで作成することはできません。

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

必要な権限と役割

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

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

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

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

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

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

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

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

IAM 役割の管理者の役割

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

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

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

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

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

作成

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

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

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

権限の依存関係

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

また、Google Cloud Console が期待どおりの動作をするためには、resourcemanager.projects.getresourcemanager.projects.list の権限を適切なレベルで付与する必要があります。一般には、親リソースに対するリスト権限と、子リソースに対する取得権限を付与する必要があります。

役割の命名

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

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

役割の ID は変更できないため、慎重に選択してください。役割を削除することはできますが、削除された役割の削除を取り消せる 7 日間の待機期間が経過するまでは、同じ ID で新しいカスタムの役割を作成できません。

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

役割の説明

カスタムの役割を編集した後は必ず役割の説明を更新して、少なくとも変更日と意図した職務の要約を反映してください。

テストとデプロイ

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

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

メンテナンス

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

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

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

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

カスタムの役割の無効化

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

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

アルファ版の制限事項

機能の制限

  • 組織レベルまたはプロジェクト レベルでカスタムの役割を作成し、付与できます。プロジェクトの下位の任意のレベルでカスタムの役割を付与することもできます。たとえば、組織、プロジェクト、プロジェクトのリソース(Google Compute Engine インスタンスなど)のユーザーに役割を付与できます。

  • プロジェクト レベルや組織レベルで作成できるカスタムの役割は 300 までです。役割に削除のマークが付けられている場合、削除を取り消せるように 7 日間完全には削除されません。役割を復元するためのスペースの不足によって削除の取り消しが失敗しないように、この「削除(復元可能)」状態の役割は 300 の制限に対してカウントされます。

信頼性に関する期待

  • これはアルファ版です。本番環境のワークロードにこの機能を使用しないでください。さらなるアップデートのテストプランについて、アカウント マネージャーにご相談ください。

  • カスタムの役割の API と UI は変更される可能性があります。

報告されている問題

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

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

    • Cloud Platform Console: 禁止された権限
    • Cloud SDK gcloud コマンドライン ツール: not valid

次のステップ

その他の IAM ドキュメント

ドキュメント 説明
IAM の概要 IAM の基本概念について説明します。
役割について IAM の基本的な役割やキュレートされた役割について説明します。
組織用 IAM 組織用 IAM の役割と権限について説明しています。
プロジェクト用 IAM プロジェクト用 IAM の役割と権限について説明しています。
App Engine 用 IAM App Engine 用 IAM の役割と権限について説明しています。
Compute Engine 用 IAM Compute Engine 用 IAM の役割と権限について説明しています。
Cloud Storage 用 IAM Cloud Storage 用 IAM の役割と権限について説明しています。
Cloud BigQuery 用 IAM Cloud BigQuery 用 IAM の役割と権限について説明しています。
Cloud Bigtable 用 IAM Cloud Bigtable 用 IAM の役割と権限について説明しています。
Stackdriver Logging 用 IAM Stackdriver Logging 用 IAM の役割と権限について説明しています。
Cloud Pub/Sub 用 IAM Cloud Pub/Sub 用 IAM の役割と権限について説明しています。
Cloud Dataflow 用 IAM Cloud Dataflow 用 IAM の役割と権限について説明しています。
Stackdriver Debugger 用 IAM Stackdriver Debugger 用 IAM の役割と権限について説明しています。
Cloud Deployment Manager 用 IAM Cloud Deployment Manager 用 IAM の役割と権限について説明しています。
Cloud Datastore 用 IAM Cloud Datastore 用 IAM の役割と権限について説明しています。
Cloud Dataproc 用 IAM Cloud Dataproc 用 IAM の役割と権限について説明しています。
Google Kubernetes Engine用 IAM Google Kubernetes Engine用 IAM の役割と権限について説明しています。
Cloud DNS 用 IAM Cloud DNS 用 IAM の役割と権限について説明しています。
Google Genomics 用 IAM Google Genomics 用 IAM の役割と権限について説明しています。
Stackdriver Trace 用 IAM Stackdriver Trace 用 IAM の役割と権限について説明しています。
Cloud Billing API 用 IAM Cloud Billing API 用 IAM の役割と権限について説明しています。
Service Management 用 IAM Service Management 用 IAM の役割と権限について説明しています。

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

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