ポリシー分析を Cloud Storage に書き込む

このページでは、Identity and Access Management(IAM)ポリシーを非同期で分析し、結果を Cloud Storage に書き込む方法について説明します。この機能は、分析結果が Cloud Storage バケットに書き込まれる以外は、IAM ポリシーの分析とほとんど同じです。

始める前に

Enable the Cloud Asset API.

Enable the API

クエリの送信に使用するプロジェクトで API を有効にする必要があります。これは、クエリのスコープを設定するのと同じリソースにする必要はありません。

必要なロールと権限

ポリシーの分析を実行して結果を Cloud Storage にエクスポートするには、次のロールと権限が必要です。

必要な IAM のロール

ポリシーを分析して結果を BigQuery にエクスポートするために必要な権限を取得するには、クエリのスコープであるプロジェクト、フォルダ、または組織に対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、ポリシーを分析して結果を BigQuery にエクスポートするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

ポリシーを分析して結果を BigQuery にエクスポートするには、次の権限が必要です。

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • storage.objects.create
  • IAM のカスタムロールでポリシーを分析するには: iam.roles.get
  • Google Cloud CLI を使用してポリシーを分析するには: serviceusage.services.use

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

必要な Google Workspace の権限

プリンシパルが Google Workspace グループのメンバーになった結果、特定のロールまたは権限を持つかどうかを確認する場合は、groups.read Google Workspace の権限が必要です。この権限は、グループ読み取り管理者のロールだけでなく、グループ管理者や特権管理者のロールなどのより強力なロールに含まれています。詳細については、特定の管理者ロールを割り当てるをご覧ください。

ポリシーを分析して結果をエクスポートする

AnalyzeIamPolicyLongrunning メソッドを使用すると、指定された Cloud Storage バケットで分析リクエストを発行して結果を取得できます。

gcloud

後述のコマンドデータを使用する前に、次のように置き換えます。

  • RESOURCE_TYPE: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値 projectfolder、または organization を使用します。
  • RESOURCE_ID: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • PRINCIPAL: アクセスを分析する PRINCIPAL_TYPE:ID 形式のプリンシパル(例: user:my-user@example.com)。プリンシパル タイプの全一覧については、プリンシパル識別子をご覧ください。
  • PERMISSIONS: 確認する権限のカンマ区切りのリスト(例: compute.instances.get,compute.instances.start)。複数の権限を一覧表示すると、Policy Analyzer は一覧表示された中から任意の権限を確認します。
  • STORAGE_OBJECT_URI: 分析結果のエクスポート先に設定する Cloud Storage オブジェクトに関する gs://BUCKET_NAME/OBJECT_NAME 形式の一意のリソース識別子(例: gs://my-bucket/analysis.json)。

gcloud asset analyze-iam-policy-longrunningコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID \
    --full-resource-name=FULL_RESOURCE_NAME \
    --identity=PRINCIPAL \
    --permissions='PERMISSIONS' \
    --gcs-output-path=STORAGE_OBJECT_URI

Windows(PowerShell)

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID `
    --full-resource-name=FULL_RESOURCE_NAME `
    --identity=PRINCIPAL `
    --permissions='PERMISSIONS' `
    --gcs-output-path=STORAGE_OBJECT_URI

Windows(cmd.exe)

gcloud asset analyze-iam-policy-longrunning --RESOURCE_TYPE=RESOURCE_ID ^
    --full-resource-name=FULL_RESOURCE_NAME ^
    --identity=PRINCIPAL ^
    --permissions='PERMISSIONS' ^
    --gcs-output-path=STORAGE_OBJECT_URI

次のようなレスポンスが返されます。

Analyze IAM Policy in progress.
Use [gcloud asset operations describe projects/my-project/operations/AnalyzeIamPolicyLongrunning/1195028485971902504711950280359719028666] to check the status of the operation.

REST

IAM 許可ポリシーを分析し、結果を Cloud Storage にエクスポートするには、Cloud Asset Inventory API の analyzeIamPolicyLongrunning メソッドを使用します。

リクエストのデータを使用する前に、次のように置き換えます。

  • RESOURCE_TYPE: 検索の対象範囲に設定するリソースのタイプ。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。値 projectsfolders、または organizations を使用します。
  • RESOURCE_ID: 検索の対象範囲の Google Cloud プロジェクト、フォルダ、または組織の ID。このリソースとその子孫に添付された IAM 許可ポリシーのみが分析されます。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • FULL_RESOURCE_NAME: 省略可。アクセスを分析する対象リソースの完全なリソース名。リソース名の形式の一覧については、リソース名の形式をご覧ください。
  • PRINCIPAL: 省略可。アクセスを分析する PRINCIPAL_TYPE:ID 形式のプリンシパル(例: user:my-user@example.com)。プリンシパル タイプの全一覧については、プリンシパル識別子をご覧ください。
  • PERMISSION_1PERMISSION_2PERMISSION_N: 省略可。確認する権限(例: compute.instances.get)。複数の権限を一覧表示すると、Policy Analyzer は一覧表示された中から任意の権限を確認します。
  • STORAGE_OBJECT_URI: 分析結果のエクスポート先に設定する Cloud Storage オブジェクトに関する gs://BUCKET_NAME/OBJECT_NAME 形式の一意のリソース識別子(例: gs://my-bucket/analysis.json)。

HTTP メソッドと URL:

POST https://cloudasset.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID:analyzeIamPolicyLongrunning

リクエストの本文(JSON):

{
  "analysisQuery": {
    "resourceSelector": {
      "fullResourceName": "FULL_RESOURCE_NAME"
    },
    "identitySelector": {
      "identity": "PRINCIPAL"
    },
    "accessSelector": {
      "permissions": [
        "PERMISSION_1",
        "PERMISSION_2",
        "PERMISSION_N"
      ]
    },
    "outputConfig": {
      "gcsDestination": {
        "uri": "STORAGE_OBJECT_URI"
      }
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/my-project/operations/AnalyzeIamPolicyLongrunning/1206385342502762515812063858425027606003",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.asset.v1.AnalyzeIamPolicyLongrunningMetadata",
    "createTime": "2022-04-12T21:31:10.753173929Z"
  }
}

IAM ポリシーの分析結果を表示する

IAM ポリシー分析を表示するには:

  1. Google Cloud コンソールの [バケット] ページに移動します。

    [バケット] に移動

  2. 分析を書き込んだ先の新しいファイルを開きます。

結果では、{identity, role(s)/permission(s), resource} のタプルとともに、それらのタプルを生成する IAM ポリシーのリストが表示されます。