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 には、基本の役割、事前定義された役割、カスタム役割の 3 種類の役割があります。

基本の役割には、Cloud IAM 導入前に存在していた、オーナー、編集者、閲覧者の 3 つの役割が含まれます。

事前定義された役割は、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 は一意にする必要があります。長さは 64 文字以下です。英字(大文字と小文字)、数字、アンダースコア、ピリオドを使用できます。

カスタム役割のタイトルは一意にする必要はありません。このため、GCP Console に同じタイトルのカスタム役割が複数表示される可能性があります。混乱を避けるために、カスタムの役割には一意でわかりやすいタイトルを使用してください。タイトルの長さは 100 文字以下にし、英字(大文字と小文字)、数字、記号を使用できます。役割のタイトルはいつでも変更できます。

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

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

役割の説明

カスタムの役割を編集した後で役割の説明を更新し、変更日とその役割の目的の要約の両方を含めてください。説明は 256 文字以下にし、英字(大文字と小文字)、数字、記号を使用できます。

テストとデプロイ

カスタムの役割には 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 エラーコードとステータス Permission resourcemanager.projects.list is not valid とともに、エラー メッセージ(INVALID_ARGUMENT)が表示されます。カスタムの役割は、役割の定義から resourcemanager.projects.list 権限を削除して処理を再試行するまで作成されません。

次のステップ

その他の IAM ドキュメント

ドキュメント 説明
App Engine 用 Cloud IAM App Engine 用 Cloud IAM の役割について説明します
BigQuery 用 Cloud IAM BigQuery 用 Cloud IAM の役割について説明します
Cloud Bigtable 用 Cloud IAM Cloud Bigtable 用 Cloud IAM の役割について説明します
Cloud Billing API 用 Cloud IAM Cloud Billing API 用 Cloud IAM の役割と権限について説明します
Cloud Dataflow 用 Cloud IAM Cloud Dataflow 用 Cloud IAM の役割と権限について説明します
Cloud Dataproc 用 Cloud IAM Cloud Dataproc 用 Cloud IAM の役割と権限について説明します
Cloud Datastore 用 Cloud IAM Cloud Datastore 用 Cloud IAM の役割と権限について説明します
Cloud DNS 用 Cloud IAM Cloud DNS 用 Cloud IAM の役割と権限について説明します
Cloud KMS 用 Cloud IAM Cloud KMS 用 Cloud IAM の役割と権限について説明します
AI Platform 用 Cloud IAM AI Platform 用 Cloud IAM の役割と権限について説明します
Cloud Pub/Sub 用 Cloud IAM Cloud Pub/Sub 用 Cloud IAM の役割について説明します
Cloud Spanner 用 Cloud IAM Cloud Spanner 用 Cloud IAM の役割と権限について説明します
Cloud SQL 用 Cloud IAM Cloud SQL 用 Cloud IAM の役割について説明します
Translation 用 Cloud IAM Translation 用 Cloud IAM の役割について説明します
Cloud Storage 用 Cloud IAM Cloud Storage 用 Cloud IAM の役割と権限について説明します
Compute Engine 用 Cloud IAM Compute Engine 用 Cloud IAM の役割について説明します
GKE 用 Cloud IAM GKE 用 Cloud IAM の役割と権限について説明します
Deployment Manager 用 Cloud IAM Deployment Manager 用 Cloud IAM の役割と権限について説明します
組織用 Cloud IAM 組織用 Cloud IAM の役割について説明します。
フォルダ用 Cloud IAM フォルダ用 Cloud IAM の役割について説明します。
プロジェクト用 Cloud IAM プロジェクト用 Cloud IAM の役割について説明します。
サービス管理用 Cloud IAM サービス管理用 Cloud IAM の役割と権限について説明します
Stackdriver Debugger 用 Cloud IAM Debugger 用 Cloud IAM の役割について説明します
Stackdriver Logging 用 Cloud IAM Logging 用 Cloud IAM の役割について説明します
Stackdriver Monitoring 用 Cloud IAM Monitoring 用 Cloud IAM の役割と権限について説明します
Stackdriver Trace 用 Cloud IAM Trace 用 Cloud IAM の役割と権限について説明します
このページは役立ちましたか?評価をお願いいたします。

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

Cloud IAM のドキュメント