IAM ポリシーの分析

このページでは、Policy Analyzer を使用して、どの ID またはプリンシパル(ユーザー、サービス アカウント、グループ、ドメイン)が、どの Google Cloud リソースに対してどのアクセス権を持つかを調べる方法について説明します。

Policy Analyzer が回答を見つけるのを支援できる一般的な質問は、「この IAM サービス アカウントにどのユーザーがアクセスできるか」、「個人を特定できる情報(PII)を含む、この BigQuery データセットのデータを読み取ることができるのは、どのユーザーであるのか」、または「日時 X においてこの Cloud Storage バケットにアクセスできるのはどのユーザーであるのか」という質問です。

AnalyzeIamPolicy メソッドを使用して分析リクエストを発行し、レスポンスで結果を取得できます。処理する必要のあるデータの量によっては、分析結果は完全ではない可能性があります。完全な結果を取得するには、さらなる分析のために結果を書き込む、または独自に結果を保存します。AnalyzeIamPolicyLongrunning を使用して BigQuery または Cloud Storage に書き込めます。

概要

Polycy Analyzer を使用すると、アクセスを管理、可視化できます。また、監査やコンプライアンス関連の業務にも使用できます。

具体的には次のとおりです:

  • Policy Analyzer では、リソースとポリシーの階層と継承がサポートされています。有効なポリシーを分析する場合は、指定した分析スコープ継承されたポリシーとリソースの階層が考慮されます。
  • Policy Analyzer ではユーザー グループの拡張がサポートされているため、ユーザーがあるグループに含まれていても、ユーザーのアクセスを識別できます。
  • Policy Analyzer では、権限拡張に対するロールがサポートされます。これにより、権限やロールごとにクエリを実行できるため、クエリの柔軟性が向上します。
  • Policy Analyzer では、リソース階層内で一部のリソース拡張のみがサポートされています。たとえば、クエリ結果では、プロジェクト内のすべての VM インスタンスまたはフォルダ内のすべてのプロジェクトを拡張できます。
  • Policy Analyzer では IAM の条件付きロール バインディングがサポートされていますが、リクエストに関する追加のコンテキストが必要になる場合があります。たとえば、Policy Analyzer は、日時属性に基づいて条件を分析するために、リクエスト内の時点を必要とします。この機能は API と gcloud ツールを介してのみサポートされています。
  • IAM ポリシーを分析する際、Policy Analyzer は、さまざまなレベルでの「連鎖式の」なりすましなど、サービス アカウントへのなりすましの分析をサポートします。Policy Analyzer は、サービス アカウントを介して間接的アクセスを分析するのに役立ちます。この機能は API と gcloud ツールを介してのみサポートされています。

たとえば、次のような分析のユースケースが考えられます。

  • リソースにアクセスできるプリンシパルの決定: 指定したリソースにアクセス権が付与されたプリンシパルを見つけます。この種の分析は、次のような疑問への回答のために利用できます。

    • 「この IAM サービス アカウントにアクセスできるユーザーは誰か」
    • 「この IAM サービス アカウントの借用権限を持つユーザーは誰か」
    • 「プロジェクト A の課金管理者は誰か」
    • (API と gcloud ツールのみ): 「サービス アカウントになりすまして、プロジェクト A を更新できるユーザーは誰か」
  • 特定のロールまたは権限を持つプリンシパルを決定する: 該当するリソースに、指定されたロール / 権限を持つプリンシパルを見つけます。この種の分析は、次のような疑問への回答のために利用できます。

    • 「組織内でサービス アカウントの借用権限のあるユーザーは誰か」
    • 「組織の課金管理者は誰か」
    • (API と gcloud ツールのみ): 「サービス アカウントになりすまして BigQuery データセットを読み取ることができる組織内のユーザーは誰か」
  • プリンシパルがリソースに対して持つアクセス権の決定: 指定したプリンシパルに付与されている指定したリソースに対するアクセス権を検索します。この種の分析は、次のような疑問への回答のために利用できます。

    • 「この BigQuery データセットに対してユーザー Ivy はどのロールと権限を持つか」
    • 「このプロジェクトのリソースに対して dev-testers グループはどのロールと権限を持つか」
    • (API と gcloud ツールのみ): 「Ivy がサービス アカウントになりすました場合に、この BigQuery データセットに対してユーザー Ivy はどのロールと権限を付与されるか」
  • プリンシパルがアクセスできるリソースの決定: プリンシパルにアクセス権が付与されているリソースを検索します。これは、次のような疑問への答えを見つけるために実施できます。

    • 「ユーザー Ivy はどの BigQuery データセットに読み取り権限を持っているか」
    • dev-testers グループがデータオーナーであるのは、どの BigQuery データセットか」
    • 「John がプロジェクト A で削除できるのはどの VM か」
    • (API と gcloud ツールのみ): 「ユーザーの John がサービス アカウントになりすますことによって、削除できるのはどの VM か」
  • 条件付きアクセスの決定: 特定の条件属性に対してプリンシパルがアクセスできるリソースを検索します。これは、次のような疑問への答えを見つけるために実施できます。

    • (API と gcloud ツールのみ): 「特定のインスタンスに対して、特定の時点で compute.instances.get 権限または compute.instances.start 権限を付与されているプリンシパルはどれか」

始める前に

  • プロジェクトで Cloud Asset API を有効にする必要があります

  • API を使用して、これらのクエリを実行する場合は、環境と gcurl を設定する必要があります。

    1. 環境を設定する

    2. gcurl エイリアスを設定するには、次の手順を実行します。

      Compute Engine インスタンス上の場合は、次のコマンドを実行します。

      alias gcurl='curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
      

      Compute Engine インスタンス上ではない場合は、次のコマンドを実行します。

      alias gcurl='curl -H "$(oauth2l header --json CREDENTIALS cloud-platform)" \
      -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
      

      ここで CREDENTIALS は認証情報ファイルのパスです(~/credentials.json など)。

必要な権限

ポリシー分析を実行するには、以下の権限が必要です。

スコープに対する権限

ポリシーを分析するには、分析するスコープに対する次の IAM 権限が必要です。

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies

これらの権限は、次の事前定義ロールに含まれています。

  • Cloud Asset オーナー(roles/cloudasset.owner
  • Cloud Asset 閲覧者(roles/cloudasset.viewer

Cloud Asset API の権限とロールの詳細については、アクセス制御をご覧ください。

IAM ロールに対する権限

フォルダまたはプロジェクトをリクエストのスコープとして指定するときに、その分析が組織レベルで定義された IAM カスタムロールを持つプリンシパルが存在する場合は、そのロールに対する iam.roles.get 権限が必要です。これにより、分析がユーザーの代わりにその定義を使用できます。

Google Workspace のグループのメンバーに対する権限

リソースにアクセスできるプリンシパルを確認して、グループのメンバーを拡大することを選択した場合は、エンドユーザーの認証情報を持つメンバーへのグループの拡大が試みられます。このため、メンバーを表示する権限があるグループのメンバーのみが自分に表示されます。

プリンシパルがリソースに対して持っているアクセス権またはプリンシパルがアクセスできるリソースを決定するクエリの作成時は、プリンシパルを指定します。Google は、指定されたプリンシパルがメンバーになっているグループ(直接的か間接的かを問いません)を検索しようとします。ここでも、エンドユーザーの認証情報が使用されます。表示されるのは、メンバーを表示する権限を持っているグループだけです。

メンバーシップを表示するには、プリンシパルに groups.read 権限を付与する必要があります。この権限を含むロールには、グループ読み取り管理者のロール、またはグループ管理者や特権管理者などのより強力なロールが含まれます。詳細については、このトピックをご覧ください。

分析クエリ

分析クエリは、スコープ、1 つ以上のセレクタ、その他の詳細オプションで構成されます。

スコープ

分析クエリごとに、スコープを指定する必要があります。組織、フォルダ、プロジェクト。(スコープ指定リソースレベルまたはそれ以下の)スコープで定義されたすべての IAM ポリシーは、分析に含まれます。その結果、スコープ指定リソースレベルより上と定義された IAM ポリシーは、分析では考慮されません。

リソース セレクタ

リソース セレクタを使用すると、1 つのリソースを指定して、指定されたスコープ内で誰がどのリソースにアクセスするか分析できます。

詳細については、IamPolicyAnalysisQuery のリファレンスをご覧ください。

ID セレクタ

ID セレクタを使用して ID を指定すると、指定された ID がアクセスできるリソースを、指定されたスコープで分析できます。

詳細については、IamPolicyAnalysisQuery のリファレンスをご覧ください。

アクセス セレクタ

アクセス セレクタを使用すると、複数のロールまたは権限を指定して、指定されたスコープのどのリソースに対して、誰に付与されているかを調べることができます。

詳細については、IamPolicyAnalysisQuery のリファレンスをご覧ください。

詳細オプション

スコープとセレクタ以外にも、クエリにその他の詳細オプションを指定して、結果をさらに取得することもできます。

詳細については、IamPolicyAnalysisQuery のリファレンスをご覧ください。

リソースにアクセスできるプリンシパルを決定する

Policy Analyzer を使用して、どのプリンシパルが、プロジェクト、フォルダ、組織内の固有のリソースに対する特定のロールまたは権限を有しているか確認できます。この情報を取得するには、アクセスを分析したいリソースおよび確認する 1 つ以上のロールまたは権限を含むクエリを作成します。

Console

  1. Cloud Console で、[Policy Analyzer] ページに移動します。

    [Policy Analyzer] ページに移動

  2. [テンプレートからクエリを作成] セクションで、[カスタマイズされたクエリを作成] をクリックします。

  3. [クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。

  4. 確認するリソースと、確認するロールまたは権限を選択します。

    1. [パラメータ 1] フィールドで、プルダウン メニューから [リソース] を選択します。
    2. [リソース] フィールドに、アクセスを分析するリソースの完全なリソース名を入力します。完全なリソース名がわからない場合は、リソースの表示名の入力を開始し、表示されるリソースのリストから該当するリソースを選択します。
    3. [セレクタを追加] をクリックします。
    4. [パラメータ 2] フィールドで、[ロール] か [権限] を選択します。
    5. [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールまたは権限を選択します。
    6. 省略可: 追加のロールと権限を確認するには、確認したいすべてのロールと権限が表示されるまで、[ロール] と [権限] セレクタを追加を継続します。
  5. 省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。

  6. [カスタムクエリ] ペインで、[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、指定されたリソースに対する指定されたロールまたは権限を有するすべてのプリンシパルの結果テーブルが表示されます。

gcloud

asset analyze-iam-policy gcloud コマンドを使用して、API 対応プロジェクトで AnalyzeIamPolicy を呼び出せます。Cloud SDK バージョン 314.0.0 以降を実行している必要があります。gcloud version コマンドでバージョンを確認できます。

ORG_IDFULL_RESOURCE_NAMECOMMA_SEPARATED_PERMISSIONS を持つプリンシパルを確認するには:

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --full-resource-name="FULL_RESOURCE_NAME" \
    --permissions="COMMA_SEPARATED_PERMISSIONS"

たとえば、組織 1234567890 の Compute Engine インスタンス ipa-gce-instance-2 に対する compute.instances.get 権限または compute.instances.start 権限を持つプリンシパルを確認するには:

gcloud asset analyze-iam-policy --organization="1234567890" \
    --full-resource-name="//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2" \
    --permissions="compute.instances.get,compute.instances.start"

REST

  1. IAM ポリシーを分析し、gcurl エイリアスを使用して結果を書き込みます。

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

    たとえば、次のリクエストの本文では、Compute Engine インスタンス ipa-gce-instance-2 に対する compute.instances.get 権限または compute.instances.start 権限を持つユーザーを確認します。

    {
      "analysisQuery": {
        "resourceSelector": {
          "fullResourceName":
            "//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2"
         },
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        }
      }
    }
    
  3. 次の gcurl コマンドを使用して IAM ポリシーを分析します。

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    ここで、ORG_ID は組織 ID です(1234567890 など)。

特定のロールまたは権限を持つプリンシパルを決定する

Policy Analyzer を使用して、組織内のどの Google Cloud リソースに対する特定のロールまたは権限を持つプリンシパルを確認できます。この情報を取得するには、確認する 1 つ以上のロールまたは権限を含むものの、リソースを指定していないクエリを作成します。

Console

  1. Cloud Console で、[Policy Analyzer] ページに移動します。

    [Policy Analyzer] ページに移動

  2. [テンプレートからクエリを作成] セクションで、[カスタマイズされたクエリを作成] をクリックします。

  3. [クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。

  4. [パラメータ 1] フィールドで、[役割] か [権限] を選択します。

  5. [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールか権限を選択します。

  6. 省略可: 追加のロールと権限を確認するには、次の操作を行います。

    1. [セレクタを追加] をクリックします。
    2. [パラメータ 2] フィールドで、[ロール] か [権限] を選択します。
    3. [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールまたは権限を選択します。
    4. 確認するロールと権限がすべて表示されるまで、[ロール] と [権限] セレクタを追加を継続します。
  7. 省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。

  8. [カスタムクエリ] ペインで、[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、対象範囲内のリソースに対して指定されたロールまたは権限を有するすべてのプリンシパルの結果テーブルが表示されます。

gcloud

asset analyze-iam-policy gcloud コマンドを使用して、API 対応プロジェクトで AnalyzeIamPolicy を呼び出せます。Cloud SDK バージョン 314.0.0 以降を実行している必要があります。gcloud version コマンドでバージョンを確認できます。

どのプリンシパルが ORG_IDCOMMA_SEPARATED_PERMISSIONS を持っているかを確認するには:

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --permissions="COMMA_SEPARATED_PERMISSIONS"

たとえば、組織 1234567890 の compute.instances.get 権限または compute.instances.start 権限を持つプリンシパルを確認するには:

gcloud asset analyze-iam-policy --organization="1234567890" \
    --permissions="compute.instances.get,compute.instances.start"

REST

  1. IAM ポリシーを分析し、gcurl エイリアスを使用して結果を書き込みます。

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

    たとえば、次のリクエストの本文では、任意の該当するリソースに対する compute.instances.get 権限または compute.instances.start 権限を持つプリンシパルを確認します。

    {
      "analysisQuery": {
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        }
      }
    }
    
  3. 次の gcurl コマンドを使用して IAM ポリシーを分析します。

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    ここで、ORG_ID は組織 ID です(1234567890 など)。

プリンシパルがリソースに対して持つアクセス権を決定する

Policy Analyzer を使用して、プリンシパルが組織内のリソースに対して持つロールまたは権限を確認できます。この情報を取得するには、分析するアクセスがあるプリンシパルとアクセスを分析するリソースを含むクエリを作成します。

Console

1. Cloud Console で、[Policy Analyzer] ページに移動します。

  <a class="button button-primary" href="https://console.cloud.google.com/iam-admin/analyzer"
  target="console" track-type="task" track-name="consoleLink"
  track-metadata-position="body" track-metadata-end-goal="queryOnPrincipalWithResource">
  Go to the Policy analyzer page</a>
  1. [テンプレートからクエリを作成] セクションで、[カスタマイズされたクエリを作成] をクリックします。
  2. [クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。
  3. 確認するリソースとプリンシパルを選択します。

    1. [パラメータ 1] フィールドで、プルダウン メニューから [リソース] を選択します。
    2. [リソース] フィールドに、アクセスを分析するリソースの完全なリソース名を入力します。完全なリソース名がわからない場合は、リソースの表示名の入力を開始し、表示されるリソースのリストから該当するリソースを選択します。
    3. [セレクタを追加] をクリックします。
    4. [パラメータ 2] フィールドで、プルダウン メニューから [プリンシパル] を選択します。
    5. [プリンシパル] フィールドに、ユーザー名か、サービス アカウント名か、グループ名の入力を開始します。次に、表示されたプリンシパルのリストから、分析するアクセスがあるユーザー、サービス アカウント、またはグループを選択します。
  4. 省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。

  5. [カスタムクエリ] ペインで、[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、指定したプリンシパルが指定したリソースに対して有するすべてのロールの結果テーブルが表示されます。

gcloud

asset analyze-iam-policy gcloud コマンドを使用して、API 対応プロジェクトで AnalyzeIamPolicy を呼び出せます。Cloud SDK バージョン 314.0.0 以降を実行している必要があります。gcloud version コマンドでバージョンを確認できます。

USERORG_IDFULL_RESOURCE_NAME に対してどのロールまたは権限を持つかを決定するには:

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --full-resource-name="FULL_RESOURCE_NAME" \
    --identity="USER"

たとえば、組織 1234567890 の Compute Engine インスタンス ipa-gce-instance-2 にユーザー user1@example.com が付与されているロールまたは権限は、次のとおり検索します。

gcloud asset analyze-iam-policy --organization="1234567890" \
    --full-resource-name="//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2" \
    --identity="user:user1@example.com"

REST

  1. IAM ポリシーを分析し、gcurl エイリアスを使用して結果を書き込みます。

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

    たとえば、次のリクエスト本文では、ユーザー user1@example.com が Compute Engine インスタンス ipa-gce-instance-2 に対しどのロールまたは権限が付与されているかをチェックします。

    {
      "analysisQuery": {
        "resourceSelector": {
          "fullResourceName":
            "//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2"
         },
        "identitySelector": {
          "identity": "user:user1@example.com"
        }
      }
    }
    
  3. 次の gcurl コマンドを使用して IAM ポリシーを分析します。

    gcurl -d @request.json \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    ここで、ORG_ID は組織 ID です(1234567890 など)。

プリンシパルがアクセスできるリソースを決定する

Policy Analyzer を使用して、プリンシパルが組織内のどのリソースに対し特定のロールまたは権限を持つかを確認できます。この情報を取得するには、分析するアクセスがあるプリンシパルと、確認する 1 つ以上の権限またはロールを含むクエリを作成します。

Console

  1. Cloud Console で、[Policy Analyzer] ページに移動します。

    [Policy Analyzer] ページに移動

  2. [テンプレートからクエリを作成] セクションで、[カスタマイズされたクエリを作成] をクリックします。

  3. [クエリスコープを選択] フィールドで、クエリを調査するプロジェクト、フォルダ、組織を選択します。ポリシー アナライザは、プロジェクト、フォルダ、組織へのアクセスと、そのプロジェクト、フォルダ、組織内のリソースを分析します。

  4. 確認するプリンシパルと、確認するロールまたは権限を選択します。

    1. [パラメータ 1] フィールドで、プルダウン メニューから [プリンシパル] を選択します。
    2. [プリンシパル] フィールドに、ユーザー名か、サービス アカウント名か、グループ名の入力を開始します。次に、表示されたプリンシパルのリストから、分析するアクセスがあるユーザー、サービス アカウント、またはグループを選択します。
    3. [セレクタを追加] をクリックします。
    4. [パラメータ 2] フィールドで、[ロール] か [権限] を選択します。
    5. [ロールを選択] フィールドか [権限を選択] フィールドで、確認するロールまたは権限を選択します。
    6. 省略可: 追加のロールと権限を確認するには、確認するすべてのロールと権限が表示されるまで、[ロール] と [権限] セレクタの追加を継続します。
  5. 省略可: [続行] をクリックして、このクエリで有効にする詳細オプションを選択します。

  6. [カスタムクエリ] ペインで、[クエリを実行] をクリックします。レポートページには、入力したクエリ パラメータと、指定されたプリンシパルが指定されたロールまたは権限を有するすべてのリソースの結果テーブルが表示されます。

gcloud

asset analyze-iam-policy gcloud コマンドを使用して、API 対応プロジェクトで AnalyzeIamPolicy を呼び出せます。Cloud SDK バージョン 314.0.0 以降を実行している必要があります。gcloud version コマンドでバージョンを確認できます。

USERORG_ID 配下のどのリソースに対し COMMA_SEPARATED_PERMISSIONS を持つかを決定するには:

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --identity="USER" \
    --permissions="COMMA_SEPARATED_PERMISSIONS"

たとえば、user1@example.com が組織 1234567890 のどのリソースに対して compute.instances.get 権限または compute.instances.start 権限を持つかは、以下のとおり検索します。

gcloud asset analyze-iam-policy --organization="1234567890" \
    --identity="user:user1@example.com" \
    --permissions="compute.instances.get,compute.instances.start"

REST

  1. IAM ポリシーを分析し、gcurl エイリアスを使用して結果を書き込みます。

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

    たとえば、次のリクエストの本文では、user1@example.comcompute.instances.get 権限または compute.instances.start 権限を持つリソースを確認します。

    {
      "analysisQuery": {
        "identitySelector": {
          "identity": "user:user1@example.com"
         },
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        }
      }
    }
    
  3. 次の gcurl コマンドを使用して IAM ポリシーを分析します。

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    ここで、ORG_ID は組織 ID です(1234567890 など)。

条件付きアクセスの決定

Policy Analyzer では、IAM 条件付きロール バインディングを分析して、リソースへのアクセスを限定する条件属性を持つプリンシパルを特定できます。たとえば、特定の日付または時間にのみアクセスを許可するリソースに対する 1 つ以上のロールをサービス アカウントに付与できます。

ConditionContext フィールドで accessTime を設定することで、日時属性の条件付きロール バインディング分析を有効にできます。

gcloud

asset analyze-iam-policy gcloud コマンドを使用して、API 対応プロジェクトで AnalyzeIamPolicy を呼び出せます。Cloud SDK バージョン 335.0.0 以降を実行している必要があります。gcloud version コマンドでバージョンを確認できます。

DATE_TIME の時点で ORG_IDFULL_RESOURCE_NAME に対する COMMA_SEPARATED_PERMISSIONS を付与されているプリンシパルを確認するには:

gcloud asset analyze-iam-policy --organization="ORG_ID" \
    --full-resource-name="FULL_RESOURCE_NAME" \
    --permissions="COMMA_SEPARATED_PERMISSIONS" \
    --access-time="DATE_TIME"

たとえば、2099-03-01T00:00:00Z の時点で組織 1234567890 の Compute Engine インスタンス ipa-gce-instance-2 に対する compute.instances.get 権限または compute.instances.start 権限を付与されているプリンシパルを確認します。時刻形式については、gcloud topic datetimes をご覧ください。

gcloud asset analyze-iam-policy --organization="1234567890" \
    --full-resource-name="//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2" \
    --permissions="compute.instances.get,compute.instances.start" \
    --access-time="2099-03-01T00:00:00Z"

REST

  1. IAM ポリシーを分析し、gcurl エイリアスを使用して結果を書き込みます。

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

    たとえば、次のリクエストの本文は、2099-03-01T00:00:00Z の時点で Compute Engine インスタンス ipa-gce-instance-2 に対する compute.instances.get 権限または compute.instances.start 権限を付与されているユーザーを確認します。

    {
      "analysisQuery": {
        "resourceSelector": {
          "fullResourceName":
            "//compute.googleapis.com/projects/project1/zones/us-central1-a/instances/ipa-gce-instance-2"
         },
        "accessSelector": {
          "permissions": [
            "compute.instances.get",
            "compute.instances.start"
          ]
        },
        "conditionContext": {
          "accessTime": "2099-03-01T00:00:00Z"
        }
      }
    }
    
  3. 次の gcurl コマンドを使用して IAM ポリシーを分析します。

    gcurl -d @request.json  \
    "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:analyzeIamPolicy"
    

    ここで、ORG_ID は組織 ID です(1234567890 など)。

クライアント ライブラリと API リファレンス

クエリの構築

クエリのその他のユースケースとオプションについては、IAM ポリシークエリのサンプルの分析をご覧ください。