有効な IAM ポリシーの表示

このトピックでは、特定のリソースで有効な Identity and Access Management(IAM)ポリシーを表示する方法を説明します。

IAM では、有効なポリシーが、リソース階層内のすべての親ポリシーと祖先ポリシーを継承する方法を説明します。

スコープと権限

有効な IAM ポリシーをリクエストする場合は、スコープを指定する必要があります。組織、フォルダ、プロジェクトなどがスコープの対象です。そのスコープ以下に設定されているすべての IAM ポリシーが返されます。リクエストのスコープは、Cloud Asset API の有効なプロジェクトと同じである必要はありません。 また、有効なプロジェクトとリクエスト スコープには異なる権限が必要です。

サポートされているポリシータイプ

有効な IAM ポリシーは、IAM 許可ポリシーのみをサポートします。次の形式のアクセス制御はサポートされていません。

始める前に

始める前に、次の手順を行います。

  1. プロジェクトで Cloud Asset Inventory API を有効にします。

    Cloud Asset Inventory API を有効にする

    このプロジェクトは、リクエストのスコープと同じである必要はありません。サービスを有効にするときにプロジェクトを設定する方法を学習する。

  2. Google Cloud SDK をインストールします。

  3. 省略可: Cloud Asset Inventory API を直接呼び出すには、curl コマンドにアクセスできることを確認します。

  4. アクセス許可を設定する。

    1. Cloud Asset API の権限を構成します。

    2. リクエストのスコープに対して次の権限を有効にします。

      • 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 プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      Console

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ 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 を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。組織 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 プロジェクト番号を確認するには、次の手順を行います。

      1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

        ダッシュボードに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスで組織を選択し、プロジェクト名を検索します。
      4. プロジェクト名をクリックして、そのプロジェクトに切り替えます。プロジェクト番号が [プロジェクト情報] カードに表示されます。

      gcloud CLI

      Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"

    • folders/FOLDER_ID

      Google Cloud フォルダ ID を確認する方法

      Console

      Google Cloud フォルダ ID を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. フォルダ名を検索します。フォルダ 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 を確認するには、次の手順を行います。

      1. Google Cloud コンソールに移動します。

        Google Cloud コンソールに移動

      2. メニューバーの切り替えボックスをクリックします。
      3. [選択元] ボックスをクリックして、組織を選択します。
      4. [すべて] タブをクリックします。組織 ID が組織名の横に表示されます。

      gcloud CLI

      Google Cloud 組織 ID を取得するには、次のコマンドを使用します。

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"