IAM 許可ポリシーの履歴を確認する

このページでは、IAM 許可ポリシーの変更履歴を確認する方法について説明します。

リソースの許可ポリシーの変更を確認するには、監査ログで SetIamPolicy メソッドを含むエントリを検索します。

許可ポリシーの変更は、Cloud Asset Inventory で確認することもできます。

SetIamPolicy で許可ポリシーの変更を表示する

許可ポリシーの変更を確認するには、監査ログで SetIamPolicy メソッドを含むエントリを調べます。監査ログを確認するには、Google Cloud コンソールまたは gcloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. クエリエディタで、次のいずれかのクエリを入力します。次のクエリは、監査ログで protoPayloadmethodName フィールドに SetIamPolicy を含むエントリを検索します。

    • リソースで行われたすべての許可ポリシーの変更のログを取得するには、次のクエリを使用します。

      logName="RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity"
      protoPayload.methodName:SetIamPolicy
      
    • 特定のユーザーまたはサービス アカウントに関連する許可ポリシーの変更のログを取得するには、次のクエリを使用します。

      logName="RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity"
      protoPayload.methodName:SetIamPolicy
      protoPayload.serviceData.policyDelta.bindingDeltas.member:"EMAIL_ADDRESS"
      

      次の値を指定します。

      • RESOURCE_TYPE: 監査ログを一覧表示するリソースタイプ。projectsfoldersorganizations のいずれかの値を使用します。
      • RESOURCE_ID: Google Cloud プロジェクト、フォルダ、または組織 ID。プロジェクト ID は英数字です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
      • EMAIL_ADDRESS: ユーザーまたはサービス アカウントのメールアドレス。例: example-user@example.com
  3. [クエリを実行] をクリックして、このクエリを実行します。

  4. タイムライン セレクタを使用して、クエリに適した期間を指定します。また、クエリエディタにタイムスタンプ式を直接追加することもできます。詳細については、期間を指定してログを表示するをご覧ください。

gcloud

gcloud logging read コマンドは、ログエントリを読み取ります。

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

  • RESOURCE_TYPE: 監査ログを一覧表示するリソースタイプ。値 projectsfolders、または organizations を使用します。
  • RESOURCE_ID: Google Cloud プロジェクト、組織、またはフォルダ ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • TIME_PERIOD: 監査ログを一覧表示する期間。この値より古くないエントリが返されます。指定しない場合、デフォルト値は 1d です。時刻形式については、gcloud topic datetimes をご覧ください。
  • RESOURCE_TYPE_SINGULAR: 監査ログを一覧表示するリソースタイプ。値 projectfolder、または organization を使用します。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud logging read \
    'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity
    AND protoPayload.methodName=SetIamPolicy' \
    --freshness=TIME_PERIOD \
    --RESOURCE_TYPE_SINGULAR=RESOURCE_ID

Windows(PowerShell)

gcloud logging read `
    'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity
    AND protoPayload.methodName=SetIamPolicy' `
    --freshness=TIME_PERIOD `
    --RESOURCE_TYPE_SINGULAR=RESOURCE_ID

Windows(cmd.exe)

gcloud logging read ^
    'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity
    AND protoPayload.methodName=SetIamPolicy' ^
    --freshness=TIME_PERIOD ^
    --RESOURCE_TYPE_SINGULAR=RESOURCE_ID

Cloud Asset Inventory で許可ポリシーの変更を表示する

Google Cloud コンソールまたは gcloud CLI で Cloud Asset Inventory を使用して、許可ポリシーの変更を表示することもできます。

コンソール

  1. Google Cloud コンソールで、[アセット インベントリ] ページに移動します。

    アセット インベントリに移動

  2. [IAM ポリシー] タブをクリックします。

  3. [フィルタ] フィールドで、次のクエリを実行します。

    Resource : RESOURCE_ID

    RESOURCE_ID は、Google Cloud プロジェクト、フォルダ、または組織 ID に置き換えます。プロジェクト ID は英数字です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。

  4. リソースの許可ポリシーの変更履歴を表示するには、リソースの名前をクリックし、[変更履歴] タブを選択します。

  5. リソースの許可ポリシーの変更を比較するには、[比較するレコードを選択] メニューから 2 つの異なるタイムスタンプ レコードを選択します。

gcloud

gcloud asset get-history コマンドは、時間枠が重複するアセットの許可ポリシーの更新履歴を取得します。

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

  • RESOURCE_TYPE: 監査ログを一覧表示するリソースタイプ。値 projectfolder、または organization を使用します。
  • RESOURCE_ID: Google Cloud プロジェクト、組織、またはフォルダ ID。プロジェクト ID は英数字からなる文字列です(例: my-project)。フォルダ ID と組織 ID は数値です(例: 123456789012)。
  • ASSET_NAME: 許可ポリシーの履歴を表示するリソースのフォーマット済みリソース名のカンマ区切りリスト。例: //cloudresourcemanager.googleapis.com/projects/my-project。これらのリソースは、許可ポリシーを受け入れるリソースタイプにすることができます。
  • START_TIME: 期間の開始時点。最長期間は 7 日です。この値は、現在の時刻または過去 35 日以内の時刻にする必要があります。時刻形式については、gcloud topic datetimes をご覧ください。
  • END_TIME: 省略可。期間の終了時点。最長期間は 7 日です。この値は、現在の時刻または過去 35 日以内の時刻にする必要があります。指定しない場合、終了時刻は現在の時刻とみなされます。時刻形式については、gcloud topic datetimes をご覧ください。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud asset get-history \
    --RESOURCE_TYPE=RESOURCE_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --content-type=iam-policy \
    --start-time=START_TIME \
    --end-time=END_TIME

Windows(PowerShell)

gcloud asset get-history `
    --RESOURCE_TYPE=RESOURCE_ID `
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... `
    --content-type=iam-policy `
    --start-time=START_TIME `
    --end-time=END_TIME

Windows(cmd.exe)

gcloud asset get-history ^
    --RESOURCE_TYPE=RESOURCE_ID ^
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... ^
    --content-type=iam-policy ^
    --start-time=START_TIME ^
    --end-time=END_TIME