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

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

始める前に

Enable the Cloud Asset API.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

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 ポリシーのリストが表示されます。