このドキュメントでは、プロジェクトのアセット メタデータを Cloud Storage バケットにエクスポートする方法を説明します。
始める前に
Cloud Asset Inventory コマンドを実行するプロジェクトで Cloud Asset Inventory API を有効にします。
アカウントに Cloud Asset Inventory API を呼び出すための適切なロールがあることを確認します。呼び出しタイプごとの個々の権限については、権限をご覧ください。
エクスポート先の Cloud Storage バケットを作成します(まだ作成していない場合)。
制限事項
カスタム Cloud Key Management Service(Cloud KMS)鍵で暗号化された Cloud Storage バケットはサポートされていません。
Cloud Storage バケットに保持ポリシーを設定することはできません。
エクスポート中に、オペレーションによって出力フォルダに一時ファイルが作成されることがあります。これらの一時ファイルをオペレーションの進行中に削除しないでください。 オペレーションが完了すると、一時ファイルは自動的に削除されます。
ACCESS_POLICY
コンテンツ タイプは、組織レベルでのみエクスポートできます。エクスポート先のファイルがすでに存在し、そのファイルがエクスポート中の場合は、
400
エラーが返されます。権限をテストするために、Cloud Asset Inventory はデータをエクスポートする前に空のファイルを作成します。これにより、
google.cloud.storage.object.v1.finalized
の余分な Cloud Storage トリガー イベントが送信されます。
Cloud Storage へのアセット スナップショットをエクスポートする
gcloud
gcloud asset export \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --snapshot-time="SNAPSHOT_TIME" \ --output-path="gs://BUCKET_NAME/FILENAME"
次の値を指定します。
-
SCOPE
: 次のいずれかの値を使用できます。-
project=PROJECT_ID
。ここで、PROJECT_ID
は、エクスポートするアセット メタデータを含むプロジェクトの ID です。 -
folder=FOLDER_ID
。ここで、FOLDER_ID
は、エクスポートするアセット メタデータを含むフォルダの ID です。Google Cloud フォルダの ID を確認する方法
Google Cloud コンソール
Google Cloud フォルダの ID を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。
gcloud CLI
組織レベルの Google Cloud フォルダの ID を取得するには、次のコマンドを使用します。
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
ここで、TOP_LEVEL_FOLDER_NAME はフォルダ名の部分一致または完全一致です。
--format
フラグを削除すると、検出されたフォルダに関する詳細情報が表示されます。上記のコマンドは、フォルダ内のサブフォルダの ID を返しません。これを行うには、最上位フォルダの ID を使用して次のコマンドを実行します。
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
。ここで、ORGANIZATION_ID
は、エクスポートするアセット メタデータを含む組織の ID です。Google Cloud 組織の ID を確認する方法
Google Cloud コンソール
Google Cloud 組織の ID を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 ID が組織名の横に表示されます。
gcloud CLI
Google Cloud 組織の ID を取得するには、次のコマンドを使用します。
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: 省略可。 デフォルトの Cloud Asset Inventory サービス エージェントが存在する、BigQuery のデータセットとテーブルを管理する権限を持つプロジェクト ID。 課金プロジェクトの設定の詳細 ASSET_TYPE_#
: 省略可。 検索可能なアセットタイプのカンマ区切りのリスト。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT
エラーが返されます。--asset-types
が指定されていない場合、すべてのアセットタイプが返されます。CONTENT_TYPE
: 省略可。 取得するメタデータのコンテンツ タイプ。--content-type
が指定されていない場合、アセット名、アセットの最終更新日、アセットが属するプロジェクト、フォルダ、組織などの基本情報のみが返されます。-
RELATIONSHIP_TYPE_#
: 省略可。 Security Command Center のプレミアム ティアと エンタープライズ ティアのサブスクライバーのみご利用いただけます。取得するアセット関係タイプのカンマ区切りのリスト。これを機能させるには、CONTENT_TYPE
をRELATIONSHIP
に設定する必要があります。 -
SNAPSHOT_TIME
: 省略可。 アセットのスナップショットを撮る時刻(gcloud topic datetime 形式)。この値は過去 35 日以内にする必要があります。--snapshot-time
が指定されていない場合、現在の時刻にスナップショットが作成されます。 BUCKET_NAME
: 書き込み先の Cloud Storage バケットの名前。FILENAME
: 書き込み先の Cloud Storage バケット内のファイル。
すべてのオプションについては、gcloud CLI リファレンスをご覧ください。
例
次のコマンドを実行して、my-project
プロジェクトの 2024 年 1 月 30 日時点の resource
メタデータを、Cloud Storage バケット my-bucket
のファイル my-file.txt
にエクスポートします。
gcloud asset export \ --project=my-project \ --billing-project=my-project \ --content-type=resource \ --snapshot-time="2024-01-30" \ --output-path="gs://my-bucket/my-file.txt"
レスポンスの例
Export in progress for root asset [projects/my-project]. Use [gcloud asset operations describe projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000] to check the status of the operation.
REST
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:exportAssets
ヘッダー:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON 本文のリクエスト:
{ "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "readTime": "SNAPSHOT_TIME", "outputConfig": { "gcsDestination": { "uri": "gs://BUCKET_NAME/FILENAME" } } }
次の値を指定します。
-
SCOPE_PATH
: 次のいずれかの値を使用できます。使用できる値は次のとおりです。
-
projects/PROJECT_ID
。ここで、PROJECT_ID
は、エクスポートするアセット メタデータを含むプロジェクトの ID です。 -
projects/PROJECT_NUMBER
。ここで、PROJECT_NUMBER
は、エクスポートするアセット メタデータを含むプロジェクトの数です。Google Cloud プロジェクト番号を確認する方法
Google Cloud コンソール
Google Cloud プロジェクト番号を確認するには、次の手順を行います。
-
Google Cloud コンソールの [ようこそ] ページに移動します。
- メニューバーの切り替えボックスをクリックします。
-
リストボックスから組織を選択し、プロジェクト名を検索します。プロジェクト名、プロジェクト番号、プロジェクト ID は [ようこそ] の見出しの近くに表示されます。
最大 4,000 個のリソースが表示されます。目的のプロジェクトが表示されない場合は、[リソースの管理] ページに移動し、そのプロジェクトの名前を使用してリストをフィルタします。
gcloud CLI
Google Cloud プロジェクト番号を取得するには、次のコマンドを使用します。
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
。ここで、FOLDER_ID
は、エクスポートするアセット メタデータを含むフォルダの ID です。Google Cloud フォルダの ID を確認する方法
Google Cloud コンソール
Google Cloud フォルダの ID を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- フォルダ名を検索します。フォルダ ID がフォルダ名の横に表示されます。
gcloud CLI
組織レベルの Google Cloud フォルダの ID を取得するには、次のコマンドを使用します。
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
ここで、TOP_LEVEL_FOLDER_NAME はフォルダ名の部分一致または完全一致です。
--format
フラグを削除すると、検出されたフォルダに関する詳細情報が表示されます。上記のコマンドは、フォルダ内のサブフォルダの ID を返しません。これを行うには、最上位フォルダの ID を使用して次のコマンドを実行します。
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
。ここで、ORGANIZATION_ID
は、エクスポートするアセット メタデータを含む組織の ID です。Google Cloud 組織の ID を確認する方法
Google Cloud コンソール
Google Cloud 組織の ID を確認する手順は次のとおりです。
-
Google Cloud Console に移動します。
- メニューバーの切り替えボックスをクリックします。
- リストボックスから組織を選択します。
- [すべて] タブをクリックします。組織 ID が組織名の横に表示されます。
gcloud CLI
Google Cloud 組織の ID を取得するには、次のコマンドを使用します。
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: デフォルトの Cloud Asset Inventory サービス エージェントが存在する、BigQuery のデータセットとテーブルを管理する権限を持つプロジェクト ID。課金プロジェクトの設定の詳細 ASSET_TYPE_#
: 省略可。 検索可能なアセットタイプの配列。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT
エラーが返されます。assetTypes
が指定されていない場合、すべてのアセットタイプが返されます。CONTENT_TYPE
: 省略可。 取得するメタデータのコンテンツ タイプ。contentType
が指定されていない場合、アセット名、アセットの最終更新日、アセットが属するプロジェクト、フォルダ、組織などの基本情報のみが返されます。-
RELATIONSHIP_TYPE_#
: 省略可。 Security Command Center のプレミアム ティアと エンタープライズ ティアのサブスクライバーのみご利用いただけます。取得するアセット関係タイプのカンマ区切りのリスト。これを機能させるには、CONTENT_TYPE
をRELATIONSHIP
に設定する必要があります。 -
SNAPSHOT_TIME
: 省略可。 アセットのスナップショットを作成する時刻を RFC 3339 形式で表したもの。この値は過去 35 日以内にする必要があります。readTime
が指定されていない場合、現在の時刻にスナップショットが撮影されます。 BUCKET_NAME
: 書き込み先の Cloud Storage バケットの名前。FILENAME
: 書き込み先の Cloud Storage バケット内のファイル。
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
次のいずれかのコマンドを実行して、my-project
プロジェクトの 2024 年 1 月 30 日時点の resource
メタデータを、Cloud Storage バケット my-bucket
のファイル my-file.txt
にエクスポートします。
curl(Linux、macOS、Cloud Shell)
curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "contentType": "RESOURCE", "readTime": "2024-01-30T00:00:00Z", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/my-file" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:exportAssets" | Select-Object -Expand Content
レスポンスの例
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
C#
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
エクスポートのステータスを確認する
エクスポートが完了するまでに時間がかかります。エクスポートが完了したかどうかを確認するには、オペレーション ID を使用してオペレーションをクエリします。
エクスポートが完了しても、別のオペレーションと同じ宛先に別のエクスポート リクエストが実行されている可能性があります。同じ宛先への新しいエクスポート リクエストは、前回のリクエストが完了した後、または 15 分以上経過した場合に送信できます。これらの条件の外部で行われたエクスポート リクエストは、Cloud Asset Inventory によって拒否されます。
gcloud
エクスポートのステータスを確認する手順は次のとおりです。
エクスポート リクエストのレスポンスから、オペレーション ID を含む
OPERATION_PATH
を取得します。OPERATION_PATH
は、エクスポートに対するレスポンスに表示されます。形式は次のとおりです。projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
エクスポートのステータスを確認するには、
OPERATION_PATH
を指定して次のコマンドを実行します。gcloud asset operations describe OPERATION_PATH
REST
エクスポートのステータスを確認する手順は次のとおりです。
エクスポート リクエストのレスポンスから、オペレーション ID を含む
OPERATION_PATH
を取得します。OPERATION_PATH
は、エクスポートに対するレスポンスのname
フィールドの値として表示されます。形式は次のとおりです。projects/PROJECT_NUMBER/operations/ExportAssets/CONTENT_TYPE/OPERATION_ID
エクスポートのステータスを確認するには、次のリクエストを実行します。
REST
HTTP メソッドと URL:
GET https://cloudasset.googleapis.com/v1/OPERATION_PATH
コマンドの例
curl(Linux、macOS、Cloud Shell)
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/OPERATION_PATH
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/OPERATION_PATH" | Select-Object -Expand Content
レスポンスの例
{ "name": "projects/000000000000/operations/ExportAssets/RESOURCE/00000000000000000000000000000000", "metadata": { "@type": "type.googleapis.com/google.cloud.asset.v1.ExportAssetsRequest", "parent": "projects/000000000000", "readTime": "2024-01-30T00:00:00Z", "contentType": "RESOURCE", "outputConfig": { "gcsDestination": { "uri": "gs://my-bucket/export.txt" } } } }
アセット スナップショットを表示する
アセットのスナップショットを表示するには:
Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
アセット スナップショットをエクスポートしたバケットの名前をクリックし、エクスポート ファイル名をクリックします。
[ダウンロード] をクリックしてアセット スナップショットをダウンロードし、任意のテキスト エディタで開きます。