このトピックでは、特定のリソースで有効な Identity and Access Management(IAM)ポリシーを表示する方法を説明します。
IAM では、有効なポリシーが、リソース階層内のすべての親ポリシーと祖先ポリシーを継承する方法を説明します。
スコープと権限
有効な IAM ポリシーをリクエストする場合は、スコープを指定する必要があります。組織、フォルダ、プロジェクトなどがスコープの対象です。そのスコープ以下に設定されているすべての IAM ポリシーが返されます。リクエストのスコープは、Cloud Asset API の有効なプロジェクトと同じである必要はありません。 また、有効なプロジェクトとリクエスト スコープには異なる権限が必要です。
サポートされているポリシータイプ
有効な IAM ポリシーは、IAM 許可ポリシーのみをサポートします。次の形式のアクセス制御はサポートされていません。
始める前に
始める前に、次の手順を行います。
プロジェクトで Cloud Asset Inventory API を有効にします。
Cloud Asset Inventory API を有効にする
このプロジェクトは、リクエストのスコープと同じである必要はありません。サービスを有効にするときにプロジェクトを設定する方法を学習する。
Google Cloud SDK をインストールします。
省略可: Cloud Asset Inventory API を直接呼び出すには、
curl
コマンドにアクセスできることを確認します。アクセス許可を設定する。
Cloud Asset API の権限を構成します。
リクエストのスコープに対して次の権限を有効にします。
cloudasset.assets.analyzeIamPolicy
cloudasset.assets.searchAllResources
cloudasset.assets.searchAllIamPolicies
これらの権限は、次の事前定義ロールに含まれています。
Cloud Asset オーナー(
roles/cloudasset.owner
)Cloud Asset 閲覧者(
roles/cloudasset.viewer
)
Cloud Asset API の権限とロールの詳細については、アクセス制御をご覧ください。
有効な IAM ポリシーを取得する
gcloud
リソースで有効な IAM ポリシーを取得するには、gcloud asset get-effective-iam-policy
コマンドを使用して BatchGetEffectiveIamPolicies
を呼び出します。Google Cloud CLI のバージョン 399.0.0 以降を実行している必要があります。
gcloud asset get-effective-iam-policy \
--scope=SCOPE \
--names=ASSET_NAME_1,ASSET_NAME_2,...
次の値を指定します。
SCOPE
: プロジェクト、フォルダ、組織がスコープになります。使用できる値は次のとおりです。
projects/PROJECT_ID
projects/PROJECT_NUMBER
Google Cloud プロジェクト番号を確認する方法
Console
Google Cloud プロジェクト番号を確認するには、次の手順を行います。
-
Google Cloud コンソールの [ダッシュボード] ページに移動します。
- メニューバーの切り替えボックスをクリックします。
- [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
- プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。
gcloud CLI
Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID
Google Cloud フォルダ ID を確認する方法
Console
Google Cloud フォルダ ID を確認するには、次の手順を行います。
-
Google Cloud コンソールに移動します。
- メニューバーの切り替えボックスをクリックします。
- [選択元] ボックスをクリックして、組織を選択します。
- フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。
gcloud CLI
組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。
--format
オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。
gcloud resource-manager folders list --folder=FOLDER_ID
-
organizations/ORGANIZATION_ID
Google Cloud 組織 ID を確認する方法
Console
Google Cloud 組織 ID を確認するには、次の手順を行います。
-
Google Cloud コンソールに移動します。
- メニューバーの切り替えボックスをクリックします。
- [選択元] ボックスをクリックして、組織を選択します。
- [すべて] タブをクリックします。組織 ID が組織名の横に表示されます。
gcloud CLI
Google Cloud 組織 ID を取得するには、次のコマンドを使用します。
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
ASSET_NAME
: 有効な IAM ポリシーを取得する対象アセットのフルネームのカンマ区切りのリスト。1 つのバッチで取得できるポリシーは、最大 20 個のアセット分です。
次のサンプルコードは、gcloud
CLI コマンドの例です。
組織 ID が
123456
の場合:gcloud asset get-effective-iam-policy \ --scope=organizations/123456 \ --names=//cloudresourcemanager.googleapis.com/organizations/123456
1234567
のフォルダ ID の場合:gcloud asset get-effective-iam-policy \ --scope=folders/1234567 \ --names=//cloudresourcemanager.googleapis.com/folders/1234567
my-project
という名前のプロジェクト内の 2 つの Cloud SQL インスタンス リソースの場合:gcloud asset get-effective-iam-policy \ --scope=projects/my-project \ --names=//cloudsql.googleapis.com/projects/my-project/instances/instance1,//cloudsql.googleapis.com/projects/my-project/instances/instance2
REST
Cloud Asset Inventory API を使用して、リソースで有効な IAM ポリシーを取得するには、次の curl
コマンドを使用します。
curl -X POST \
-H "X-HTTP-Method-Override: GET" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"names": [
"ASSET_NAME_1",
"ASSET_NAME_2",
"..."
]
}' \
https://cloudasset.googleapis.com/v1/SCOPE/effectiveIamPolicies:batchGet
次の値を指定します。
ASSET_NAME
: 有効な IAM ポリシーを取得する対象アセットのフルネームのカンマ区切りのリスト。1 つのバッチで最大 20 個のアセットのポリシーを取得できます。
SCOPE
: プロジェクト、フォルダ、組織がスコープになります。使用できる値は次のとおりです。
projects/PROJECT_ID
projects/PROJECT_NUMBER
Google Cloud プロジェクト番号を確認する方法
Console
Google Cloud プロジェクト番号を確認するには、次の手順を行います。
-
Google Cloud コンソールの [ダッシュボード] ページに移動します。
- メニューバーの切り替えボックスをクリックします。
- [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
- プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。
gcloud CLI
Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
folders/FOLDER_ID
Google Cloud フォルダ ID を確認する方法
Console
Google Cloud フォルダ ID を確認するには、次の手順を行います。
-
Google Cloud コンソールに移動します。
- メニューバーの切り替えボックスをクリックします。
- [選択元] ボックスをクリックして、組織を選択します。
- フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。
gcloud CLI
組織レベルの Google Cloud フォルダ ID を取得するには、次のコマンドを使用します。
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
ここで、TOP_LEVEL_FOLDER_NAME は文字列の完全一致または部分一致です。
--format
オプションを削除すると、検出されたフォルダに関する詳細情報が表示されます。別のフォルダ内のフォルダの ID を取得するには、以下のとおりサブフォルダを一覧表示します。
gcloud resource-manager folders list --folder=FOLDER_ID
-
organizations/ORGANIZATION_ID
Google Cloud 組織 ID を確認する方法
Console
Google Cloud 組織 ID を確認するには、次の手順を行います。
-
Google Cloud コンソールに移動します。
- メニューバーの切り替えボックスをクリックします。
- [選択元] ボックスをクリックして、組織を選択します。
- [すべて] タブをクリックします。組織 ID が組織名の横に表示されます。
gcloud CLI
Google Cloud 組織 ID を取得するには、次のコマンドを使用します。
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-