IAM のカスタムロールについて

Identity and Access Management(IAM)の事前定義ロールを使用すると、特定の Google Cloud リソースに対するアクセス権をきめ細かく設定でき、他のリソースへの不要なアクセスを防止できます。

IAM は、カスタマイズされた IAM ロールを作成する機能も備えています。1 つ以上の権限を含むカスタム IAM ロールを作成し、そのカスタムロールをユーザーに付与できます。IAM には、カスタムロールを作成して管理するための UI と API が用意されています。

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

始める前に

基本コンセプト

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

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

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

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

カスタムロールを作成する場合は、ロールを作成する組織またはプロジェクトを選択する必要があります。組織やプロジェクト内のリソースだけでなく、組織やプロジェクトに対してもカスタムロールを付与できます。

カスタムロールを作成するには、使用可能な 1 つ以上の IAM 権限を組み合わせます。権限は、Google Cloud リソースに特定の操作を行うことをユーザーに許可します。IAM の環境では、権限が次の形式で表されます。

service.resource.verb

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

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

カスタムロールは、ロールを作成したプロジェクトまたは組織にのみ付与できます。他のプロジェクトや組織、または他のプロジェクトや組織内のリソースに対しては、カスタムロールを付与できません。

必要な権限とロール

カスタムロールを作成するには、呼び出し側に iam.roles.create 権限が必要です。

オーナー以外のユーザー(組織管理者を含む)には、組織のロールの管理者ロール(roles/iam.organizationRoleAdmin)または IAM ロールの管理者ロール(roles/iam.roleAdmin)のいずれかを割り当てる必要があります。IAM セキュリティ レビュー担当者のロール(roles/iam.securityReviewer)を付与した場合、カスタムロールを表示できますが、管理はできません。ロールの付与方法については、アクセス権の付与、変更、取り消しをご覧ください。

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

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

組織ロールの管理者ロール

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

次の表に、組織ロールの管理者ロールの権限を示します。

ロール 権限
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

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

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

作成

カスタムロールを作成する前に、サービスに必要な事前定義ロール(または、複数の事前定義ロールの組み合わせ)が割り当てられているかどうか確認します。事前定義ロールの一覧とそれぞれのロールに含まれる権限については、事前定義ロールのリファレンスをご覧ください。

必要な事前定義ロール(または事前定義ロールの組み合わせ)がない場合は、付与する権限のみを含むカスタムロールを作成できます。詳細については、カスタムの役割の作成と管理をご覧ください。

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

カスタムロールでは一部の権限が表示されない場合や、使用できない場合があります。たとえば、サービスがベータ版の場合や、サービスで API を有効にしていない場合は、カスタムロールで権限が使用できないことがあります。

カスタムロールで特定の権限を使用できるかどうかを確認するには、カスタムロールでの権限のサポートレベルをご覧ください。特定のリソースで使用できる権限を確認するには、リソースで使用可能な権限を表示するをご覧ください。

権限の依存関係

一部の権限は、ペアで付与されたときにのみ有効です。たとえば、IAM ポリシーを更新するには、読み取り、変更、書き込みのパターンを使用する必要があります。そのため、ポリシーを更新する場合は setIamPolicy 権限に加えて、そのサービスとリソースタイプに対する getIamPolicy 権限が必要になります。

カスタムロールを有効にするには、同様の権限を持つ事前定義ロールに基づいてカスタムロールを作成します。事前定義ロールで、通常どの権限を組み合わせて使用しているかを知ることができます。

事前定義ロールに基づいてカスタムロールを作成する方法については、カスタムロールの作成と管理をご覧ください。

ロールの命名

ロールには ID とタイトルの両方が付けられます。ロールの ID は、ロールの一意の識別子です。ロールのタイトルは Cloud Console のロール一覧に表示されます。

ロールの ID は、ロールを作成したプロジェクトまたは組織内で一意にする必要があります。これで、プロジェクトまたは組織を含むロールの完全な ID が一意になります。ロールの ID は 64 文字以下で、英大文字、英小文字、数字、アンダースコア、ピリオドを使用できます。

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

カスタムロールのタイトルは一意にする必要はありません。そのため、Cloud Console に同じタイトルの複数のカスタム役割が表示される可能性があります。混乱を避けるために、カスタムロールには一意でわかりやすいタイトルを使用してください。また、ロールのタイトルで、組織レベルのロールかプロジェクト レベルのロールかを示すことも検討してください。

ロールのタイトルの長さは 100 バイト以下にしてください。タイトルには英大文字、英小文字、数字、記号を使用できます。ロールのタイトルはいつでも変更できます。

ロールの説明

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

テストとデプロイ

カスタムロールにはリリース ステージがあります。これは、ロールの stage プロパティに格納されます。アクティブなカスタムロールの最も一般的なリリース ステージは、ALPHABETAGA です。これらのリリース ステージは情報提供を目的としています。これにより、各ロールを広く使用できるかどうかをトラッキングできます。

次のリリース ステージ(ALPHABETA、または GA)を使用して、ロールの状態を伝えることをおすすめします。

  • ALPHA: ロールはまだ開発またはテスト中です。あるいは、まだ公開されていない Google Cloud サービスまたは機能の権限が含まれています。これは、広く利用することはできません。
  • BETA: ロールのテストが限定的に行われています。あるいは、一般提供されていない Google Cloud サービスまたは機能の権限が含まれています。
  • GA: このロールは広くテストされています。権限はすべて一般提供されている Google Cloud サービスまたは機能に使用できます。

リリース ステージ候補の一覧については、ロール リファレンスをご覧ください。

ロールのリリース ステージを変更する方法については、既存のカスタムロールの編集をご覧ください。

メンテナンス

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

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

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

事前定義ロールに基づくカスタムロールは、[説明] フィールドに事前定義ロールの情報を入れるようにしてください。これで、事前定義ロールに対する変更に基づいてカスタムロールを更新する必要があるかどうかを簡単に確認できます。Cloud Console で新しいカスタムロールを作成すると、その情報が [説明] に自動的に挿入されます。

カスタムロールの権限と説明を更新する方法については、既存のカスタムロールの編集をご覧ください。

最近変更されたロールと権限について確認するには、権限変更ログをご覧ください。

カスタムロールを無効にする

組織内でカスタムロールの使用を中止したい場合は、ロールを無効にできます。ロールを無効にするには、リリース ステージを DISABLED に変更します。

ロールを無効にすると、そのロールを付与するすべてのロール バインディングが無効になります。そのロールをユーザーに付与しても効果はありません。

カスタムロールを無効にする方法については、カスタムロールを無効にするをご覧ください。

既知の制限事項

  • 事前定義ロールに、カスタムロールで許可されていない権限が含まれていることがあります。カスタムロールで特定の権限を使用できるかどうかを確認するには、カスタムロールでの権限のサポートレベルをご覧ください。
  • resourcemanager.projects.list 権限は組織レベルのカスタムロールでのみサポートされます。プロジェクト レベルのカスタムロールでは許可されません。resourcemanager.projects.list 権限を含む事前定義ロールを新しいプロジェクト レベルのカスタムロールにコピーすると、次のいずれかのメッセージが表示されます。
    • Cloud Console:「プロジェクト レベルのカスタムロールに適用できません」という警告メッセージが表示されます。対象の権限リストから resourcemanager.projects.list 権限が自動的に削除され、役割の作成に進むことができます。
    • Cloud SDK gcloud コマンドライン ツール:「INVALID_ARGUMENT: Permission resourcemanager.projects.list is not valid」のようなエラー メッセージが返されます。役割の定義から resourcemanager.projects.list 権限を削除して操作をやり直すまで、カスタムの役割は作成されません。
    • Google Cloud APIs:「Permission resourcemanager.projects.list is not valid」のようなエラー メッセージと HTTP 400 エラーコードが返され、ステータスが INVALID_ARGUMENT になります。役割の定義から resourcemanager.projects.list 権限を削除して操作をやり直すまで、カスタムの役割は作成されません。

次のステップ