リソースのユーザーに Identity and Access Management(IAM)のロールを付与する前に、特定のリソースに関して付与できるロールの種類について確認することをおすすめします。
付与できるロールについて
該当するリソースタイプに関する権限がロールに含まれている場合は、そのリソースまたはそのリソースの上位に関するロールを付与できます。たとえば、storage.admin
ロールでは storage.buckets.get
API と storage.objects.get
API に対する権限が付与されるため、このロールはストレージ バケットとストレージ オブジェクトのリソースタイプに関しても付与できます。
ロールは、そのロールに含まれる権限の定義対象となるリソースタイプの「上位」にも付与できます。つまり、下位レベルのリソースに対するロールは、Google Cloud のリソース階層でより上位のリソースに関しても付与できます。たとえば、storage.admin
ロールはストレージ バケットに対してだけでなく、プロジェクト レベルまたは組織レベルでも付与できます。
ロールによって付与される権限は、指定したレベルとそれよりも下位のリソースにのみ影響します。上位レベルのリソースやピアリソースには影響しません。また、リソースにロールを付与する場合は、ロールの名前、説明、ロールに含まれるその他の権限にかかわらず、対象のリソースに該当する権限だけが付与されます。たとえば、ロール resourcemanager.organizationAdmin
(権限 resourcemanager.projects.list
を付与する)をプロジェクト レベルでユーザーに割り当てた場合、そのプロジェクトに対応する権限だけが付与されます。組織内のすべてのプロジェクトの一覧表示または管理を行うことはできません。同様に、特定の Compute Engine インスタンスに関する compute.admin
ロールを割り当てた場合は、そのインスタンスに対応する権限だけが付与され、プロジェクト内の他のインスタンスに対する権限は付与されません。
付与できるロールの一覧表示
付与可能なロールを一覧表示する前に、プロジェクトでサービスが有効になっていることを確認してください。サービスが有効になっていない場合、そのロールは返されません。
Console
Cloud Console で [IAM] ページに移動します。
ページの上部にある [プロジェクトを選択] プルダウンをクリックします。
ロールを表示するプロジェクトまたは組織を選択します。
[追加] をクリックします。
[メンバー] にメンバーのメールアドレスまたはドメインを入力します。
[ロールを選択] プルダウンには、そのリソースのメンバーに付与できるすべてのロール(カスタムロールを含む)が表示されます。
gcloud
gcloud iam list-grantable-roles
コマンドを使用すると、特定のリソースに適用可能なロールのリストが返されます。
gcloud iam list-grantable-roles full-resource-name
目的のリソースに応じて、多数のロールが返される可能性があります。結果数を制限するには、フィルタ式を指定できます。
出力は、以下のようになります。
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
roles.queryGrantableRoles
メソッドは、あるリソースに対して付与可能なすべてのロールのリストを返します。
後述のリクエストのデータを使用する前に、次のように置き換えます。
full-resource-name
: サービス名とリソースへのパスで構成される URI。例については、完全なリソース名をご覧ください。
HTTP メソッドと URL:
POST https://iam.googleapis.com/v1/roles:queryGrantableRoles
JSON 本文のリクエスト:
{ "fullResourceName": "full-resource-name" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "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." } ] }
C#
このサンプルを試す前に、IAM クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、IAM C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、IAM クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、IAM Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、IAM クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、IAM Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、IAM クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、IAM Python API のリファレンス ドキュメントをご覧ください。
上の例では、完全リソース名は DNS と互換性のある API サービス名とリソースパスで構成される、スキームのない URI です。
たとえば、プロジェクトに関して付与できるすべてのロールを返すには、次のように入力します。
//cloudresourcemanager.googleapis.com/projects/project-id
下位レベルのリソースについては、さらに詳細な完全修飾名を指定することになります。たとえば、Compute Engine インスタンスに関して付与できるすべてのロールを返すには、次のように入力します。
//compute.googleapis.com/projects/project-id/zones/zone-name/instances/instance-id
次のステップ
- 利用可能な IAM ロールを確認します。
- メンバーのアクセス権の付与、変更、取り消しを行う方法を学習する。
- さまざまなリソースタイプのリソース名の例を確認する。