リソースに関して付与可能な役割の表示

リソースのユーザーに IAM の役割を付与する前に、特定のリソースに関して付与できる役割の種類について確認することをおすすめします。

付与できる役割について

該当するリソースタイプに関する権限が役割に含まれている場合は、そのリソースまたはそのリソースの上位に関する役割を付与できます。たとえば、役割 storage.admin では storage.buckets.get API と storage.objects.get API に対する権限が付与されるため、この役割はストレージ バケットとストレージ オブジェクトのリソースタイプに関しても付与できます。

役割は、その役割に含まれる権限の定義対象となるリソースタイプの「上位」にも付与できます。つまり、下位レベルのリソースに対する役割は、GCP のリソース階層でより上位のリソースに関しても付与できます。たとえば、役割 storage.adminストレージ バケットに対してだけでなく、プロジェクト レベルまたは組織レベルでも付与できます。

役割によって付与される権限は、指定したレベルとそれよりも下位のリソースにのみ影響します。上位レベルのリソースやピアリソースには影響しません。また、リソースに役割を付与する場合は、役割の名前、説明、役割に含まれるその他の権限にかかわらず、対象のリソースに該当する権限だけが付与されます。たとえば、役割 resourcemanager.organizationAdmin(権限 resourcemanager.projects.list を付与する)をプロジェクト レベルでユーザーに割り当てた場合、そのプロジェクトに対応する権限だけが付与されます。組織内のすべてのプロジェクトを一覧表示したり管理したりすることはできません。同様に、特定の Compute Engine インスタンスに関する役割 compute.admin を割り当てた場合は、そのインスタンスに対応する権限だけが付与され、プロジェクト内の他のインスタンスに対する権限は付与されません。

付与できる役割の一覧表示

Console

  1. GCP Console で [IAM] ページを開きます。

    [IAM] ページを開く

  2. ページの上部にある [プロジェクトを選択] プルダウンをクリックします。
  3. 役割を表示するプロジェクトまたは組織を選択します。
  4. [追加] をクリックします。
  5. [メンバー] にメンバーのメールアドレスまたはドメインを入力します。

[役割を選択] プルダウンには、そのリソースのメンバーに付与できるすべての役割(カスタムの役割を含む)が表示されます。

gcloud コマンド

特定のリソースに適用できるすべての役割のリストを返すには、gcloud iam list-grantable-roles コマンドを使用します。

gcloud iam list-grantable-roles [RESOURCE]

[RESOURCE] は、目的のリソースの完全修飾名に置き換えます。たとえば、プロジェクトに関して付与できるすべての役割を返すには、次のように入力します。

//cloudresourcemanager.googleapis.com/projects/[PROJECT-ID]

下位レベルのリソースについては、さらに詳細な完全修飾名を指定することになります。たとえば、Compute Engine インスタンスに関して付与できるすべての役割を返すには、次のように入力します。

//compute.googleapis.com/projects/[PROJECT-ID]/zones/[ZONE-NAME]/instances/[INSTANCE-ID]

目的のリソースに応じて、大量の役割が返される可能性があります。結果数を制限するには、フィルタ式を指定できます。

出力は、以下のようになります。

description: Full control of all Compute Engine resources.
name: roles/compute.admin
title: Compute Admin
---
description: Full control of Compute Engine instance resources.
name: roles/compute.instanceAdmin
title: Compute Instance Admin

// Additional results here...

REST API

QueryGrantableRoles は、あるリソースに関して付与できるすべての役割のリストを返します。

リクエスト:

POST https://iam.googleapis.com/v1/roles:queryGrantableRoles

レスポンス:

{
    "fullResourceName": [RESOURCE]
}

[RESOURCE] は、目的のリソースの完全修飾名に置き換えます。たとえば、プロジェクトに関して付与できるすべての役割を返すには、次のように入力します。

//cloudresourcemanager.googleapis.com/projects/[PROJECT-ID]

下位レベルのリソースについては、さらに詳細な完全修飾名を指定することになります。たとえば、Compute Engine インスタンスに関して付与できるすべての役割を返すには、次のように入力します。

//compute.googleapis.com/projects/[PROJECT-ID]/zones/[ZONE-NAME]/instances/[INSTANCE-ID]

レスポンス:

{
    "roles": [
        {
            "name": "roles/compute.admin",
            "title": "Compute Admin",
            "description": "Full control of all Compute Engine resources."
        },
        {
            "name": "roles/compute.instanceAdmin",
            "title": "Compute Instance Admin (beta)",
            "description": "Full control of Compute Engine instance resources."
        }
        // Additional results here...
    ]
}

C#

このサンプルを試す前に、Cloud IAM クイックスタート: クライアント ライブラリの使用の C# の設定手順に従ってください。詳細については、Cloud IAM C# API のリファレンス ドキュメントをご覧ください。

var request = new QueryGrantableRolesRequest
{
    FullResourceName = fullResourceName
};
var response = service.Roles.QueryGrantableRoles(request).Execute();

foreach (var role in response.Roles)
{
    Console.WriteLine("Title: " + role.Title);
    Console.WriteLine("Name: " + role.Name);
    Console.WriteLine("Description: " + role.Description);
    Console.WriteLine();
}

Python

このサンプルを試す前に、Cloud IAM クイックスタート: クライアント ライブラリの使用の Python の設定手順に従ってください。詳細については、Cloud IAM Python API のリファレンス ドキュメントをご覧ください。

def view_grantable_roles(full_resource_name):
    roles = service.roles().queryGrantableRoles(body={
        'fullResourceName': full_resource_name
    }).execute()

    for role in roles['roles']:
        print('Title: ' + role['title'])
        print('Name: ' + role['name'])
        print('Description: ' + role['description'])
        print(' ')

次のステップ

このページは役立ちましたか?評価をお願いいたします。

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

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