このページでは、アセットの履歴を表示する方法について説明します。Cloud Asset API を使用すると、過去 5 週間のうちの特定期間中の複数のアセットのイベント変更履歴を表示できます。イベント変更履歴には、指定したアセットの一定期間における作成イベント、削除イベント、更新イベントがすべて表示されます。
始める前に
gcloud
gcloud
ツールを使用して Cloud Asset Inventory にアクセスする前に、Cloud Asset API を有効にする必要があります。API は Cloud Asset API コマンドを実行するプロジェクトでのみ有効にする必要があるのでご注意ください。
Cloud Asset Inventory API を有効にする- ローカル クライアントに Cloud SDK をインストールします。
api
- ローカルマシンに oauth2l をインストールして、Google OAuth システムとやり取りできるようにします。
- Unix
curl
コマンドにアクセスできるかを確認します。 プロジェクト、フォルダ、または組織に対する次のいずれかのロールがアカウントに付与されているかを確認します。
- Cloud Asset 閲覧者(
roles/cloudasset.viewer
) - オーナーの基本ロール(
roles/owner
)
- Cloud Asset 閲覧者(
アカウントを構成する
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 asset
の Cloud SDK リファレンスでも確認できます。
このセクションで示す gcloud asset get-history
は、プロジェクトの履歴を取得します。組織の履歴を取得するには、コマンドで --organization=ORGANIZATION_ID
フラグを使用します。
次の例では、プロジェクト内のアセットの履歴を取得します。
なお、start-time
は、現在の時刻から 35 日を引いた値より後に指定する必要があります。
- アカウントの構成を完了して、Cloud Asset API を呼び出せるか確認します。
- 履歴を検索するアセットの完全なリソース名を確認します。Cloud Asset API 形式の名前の一覧については、こちらをご覧ください。これは、以下の例に示す asset-names 変数です。
- 期間の開始時間と終了時間(RFC 3339 UTC 形式)を決定します。開始時間のみが必須です。詳細については、
TimeWindow
をご覧ください。 - アセットの履歴を取得するレベルを決定します。次のコマンドの例は、各種アセットの履歴を取得する方法を示しています。
すべてのリソース メタデータを含む、プロジェクト内の指定したアセットの履歴を取得します。
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 メソッドを使用します。
- アカウントの構成を完了して、Cloud Asset API を呼び出せるか確認します。
- 履歴を検索するアセットの完全なリソース名を確認します。Cloud Asset API 形式の名前の一覧については、こちらをご覧ください。次の例では、
//compute.googleapis.com/projects/my_project_id/global/firewalls/default-firewall
を使用しています。 - 期間の開始時間と終了時間(RFC 3339 UTC 形式)を決定します。
開始時間のみが必須です。詳細については、
TimeWindow
をご覧ください。 - アセットの履歴を取得するレベルを決定します。次のコマンドの例は、各種アセットの履歴を取得する方法を示しています。
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