アセット履歴の表示

このページでは、アセットの履歴を表示する方法について説明します。Cloud Asset API を使用すると、過去 5 週間のうちの特定期間中の複数のアセットのイベント変更履歴を表示できます。イベント変更履歴には、指定したアセットの一定期間における作成イベント、削除イベント、更新イベントがすべて表示されます。

始める前に

gcloud

  1. gcloud ツールを使用して Cloud Asset Inventory にアクセスする前に、Cloud Asset API を有効にする必要があります。API は Cloud Asset API コマンドを実行するプロジェクトでのみ有効にする必要があるのでご注意ください。
    Cloud Asset Inventory API を有効にする
  2. ローカル クライアントに Cloud SDK をインストールします。

api

  1. ローカルマシンに oauth2l をインストールして、Google OAuth システムとやり取りできるようにします。
  2. Unix curl コマンドにアクセスできるかを確認します。
  3. プロジェクト、フォルダ、または組織に対する次のいずれかのロールがアカウントに付与されているかを確認します。

    • Cloud Asset 閲覧者(roles/cloudasset.viewer
    • オーナーの基本ロール(roles/owner

アカウントを構成する

API リクエストの contentType パラメータによっては、Cloud Asset API を呼び出すために、履歴を取得したいアセットを含むルートまたは親に対する次の権限を持つロールをアカウントに付与しておく必要があります。

  • cloudasset.assets.exportResource
  • cloudasset.assets.exportIamPolicy
  • cloudasset.assets.exportOrgPolicy
  • cloudasset.assets.exportAccessPolicy

アカウントに Cloud Asset 閲覧者(roles/cloudasset.viewer)のロール、Cloud Asset オーナー(roles/cloudasset.owner)のロール、またはリソースルートに対するオーナー(roles/owner)の基本ロールが付与されている場合、アカウントには、Cloud Asset API を呼び出すための十分な権限が付与されていることになります。それ以外の場合は、権限の構成ページの手順に従ってください。

アセット履歴の取得

Cloud Asset API を使用して、プロジェクト内の指定したアセットの特定期間内の作成履歴、削除履歴、更新履歴を取得するには、以下の手順に従います。

gcloud

gcloud ツールを使用する前に、Cloud SDK ドキュメントをご確認ください。--help フラグを使用すると、ツール、リソース、コマンドについてのヘルプを表示できます。

gcloud asset --help

--help フラグで表示されるヘルプテキストは、gcloud assetCloud SDK リファレンスでも確認できます。

このセクションで示す gcloud asset get-history は、プロジェクトの履歴を取得します。組織の履歴を取得するには、コマンドで --organization=ORGANIZATION_ID フラグを使用します。

次の例では、プロジェクト内のアセットの履歴を取得します。

なお、start-time は、現在の時刻から 35 日を引いた値より後に指定する必要があります。

  1. アカウントの構成を完了して、Cloud Asset API を呼び出せるか確認します。
  2. 履歴を検索するアセットの完全なリソース名を確認します。Cloud Asset API 形式の名前の一覧については、こちらをご覧ください。これは、以下の例に示す asset-names 変数です。
  3. 期間の開始時間と終了時間(RFC 3339 UTC 形式)を決定します。開始時間のみが必須です。詳細については、TimeWindow をご覧ください。
  4. アセットの履歴を取得するレベルを決定します。次のコマンドの例は、各種アセットの履歴を取得する方法を示しています。

すべてのリソース メタデータを含む、プロジェクト内の指定したアセットの履歴を取得します。

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset get-history --project='PROJECT_ID' \
  --asset-names='//compute.googleapis.com/projects/test-project/zo\
nes/us-central1-f/instances/instance1' \
  --start-time=$YESTERDAY \
  --end-time=$NOW --content-type='resource'

プロジェクト内の指定されたアセットのすべての IAM ポリシーの履歴を取得します。

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud asset get-history --project='PROJECT_ID' \
  --asset-names='//cloudresourcemanager.googleapis.com/projects/10\
179387634' --start-time=$YESTERDAY \
  --end-time=$NOW \
  --content-type='iam-policy'
 

api

このセクションで示しているコマンドは、プロジェクトの履歴を取得します。組織の履歴を取得するには、gcurl コマンドで https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER:batchGetAssetsHistory REST メソッドを使用します。

  1. アカウントの構成を完了して、Cloud Asset API を呼び出せるか確認します。
  2. 履歴を検索するアセットの完全なリソース名を確認します。Cloud Asset API 形式の名前の一覧については、こちらをご覧ください。次の例では、//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall を使用しています。
  3. 期間の開始時間と終了時間(RFC 3339 UTC 形式)を決定します。 開始時間のみが必須です。詳細については、TimeWindow をご覧ください。
  4. アセットの履歴を取得するレベルを決定します。次のコマンドの例は、各種アセットの履歴を取得する方法を示しています。

TOKEN 変数を設定する

アクセス トークンを取得するには、~/credentials.json ファイルで次のコマンドを実行します。

oauth2l header --json ~/credentials.json cloud-platform

次のような出力が表示されます。y29.xxxxxx はアクセス トークンです。

Authorization: Bearer y29.xxxxxxx

TOKEN 変数をアクセス トークンに設定します。

TOKEN=y29.xxxxxxx

すべてのリソース メタデータを含む、プロジェクト内の指定したアセットの履歴を取得する

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetNames": \
            "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

リソース メタデータを含まない、プロジェクト内の指定したアセットの履歴を取得する

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"assetNames": \
            "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory

プロジェクト内の指定されたアセットのすべての IAM ポリシーの履歴を取得する

YESTERDAY=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ" -d "yesterday")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
     -d '{"contentType":"IAM_POLICY", \
          "assetNames": \
            "//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall", \
          "readTimeWindow": {"startTime": "'$YESTERDAY'"}}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:batchGetAssetsHistory