有効な IAM ポリシーの表示

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

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

スコープと権限

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

始める前に

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

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

    このプロジェクトは、リクエストのスコープと同じにする必要はありません。詳しくは、サービスを有効にする際のプロジェクトの設定をご覧ください。

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

  3. Unix の curl コマンドで Cloud Asset Inventory API を呼び出すように環境を設定するには、次の手順を行います。

    1. ローカルマシンに oauth2l をインストールし、Google OAuth システムを操作できるようにします。
    2. Unix curl コマンドにアクセスできるかを確認します。
    3. 認証用のアクセス トークンを取得します。

      TOKEN=$(gcloud auth print-access-token)
      
  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 ポリシーを取得する

curl コマンドで Cloud Asset Inventory API を使用して、リソースで有効な IAM ポリシーを取得するには、次の手順を行います。

  1. リクエスト本文用のファイル request.json を作成し、その内容を JSON 形式でリクエストに設定します。

    次のリクエスト本文では、FULL_RESOURCE_NAME_1FULL_RESOURCE_NAME_2 に対して有効な IAM ポリシーを取得します。

    {
     "names": [
       "FULL_RESOURCE_NAME_1",
       "FULL_RESOURCE_NAME_2",
     ]
    }
    

    FULL_RESOURCE_NAME には特有な形式の一意のリソース名が必要です。Cloud Asset API でサポートされているアセットタイプの完全な名前のリストについては、リソース名の形式をご覧ください。

    1 つのバッチで最大 10 個のリソースに対して有効な IAM ポリシーを取得できます。

  2. 次の curl コマンドを使用して有効な IAM ポリシーを取得して、SCOPE 以下に設定されたポリシーを取得します。

    SERVER_URL="https://cloudasset.googleapis.com";
    
    curl \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: ENABLED_PROJECT" \
    -H "X-HTTP-Method-Override: GET" \
    -d @request.json \
    "${SERVER_URL}/v1/SCOPE/effectiveIamPolicies:batchGet"
    

    SCOPE の場合、サポートされる値は次のとおりです。

    • organizations/ORGANIZATION_NUMBER
    • folders/FOLDER_NUMBER
    • projects/PROJECT_NUMBER
    • projects/PROJECT_ID

    ENABLED_PROJECT の場合、サポートされる値は次のとおりです。

    • PROJECT_NUMBER
    • PROJECT_ID