フィードを作成して登録すると、リソースとポリシーの変更に関するリアルタイム通知を受け取ることができます。
フィードを作成するときに、組織内、フォルダ内、プロジェクト内についてサポートされているリソースタイプ、IAM ポリシー、アクセス ポリシー、組織ポリシーの変更をモニタリングするよう指定できます。また、フィードに条件を追加して、アセットに対する特定の種類の変更に関する通知のみを受け取ることもできます。
フィードを作成すると、指定したアセットが変更されるたびに Pub/Sub を介して通知が届きます。Pub/Sub トピックに最初に公開されるメッセージは、文字列形式のウェルカム メッセージで、後続のすべてのメッセージは TemporalAsset の形式です。
以下は、RESOURCE
コンテンツ タイプの Pub/Sub メッセージの例です。
{
"asset":{
"ancestors":[
"projects/000000000000",
"folders/000000000000",
"organizations/000000000000"
],
"assetType":"storage.googleapis.com/Bucket",
"name":"//storage.googleapis.com/my-bucket",
"resource":{
"data":{
LATEST_ASSET_METADATA
},
"discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
"discoveryName":"Bucket",
"location":"us",
"parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
"version":"v1"
},
"updateTime":"2024-01-30T00:00:00.000000Z"
},
"priorAsset":{
"ancestors":[
"projects/000000000000",
"folders/000000000000",
"organizations/000000000000"
],
"assetType":"storage.googleapis.com/Bucket",
"name":"//storage.googleapis.com/my-bucket",
"resource":{
"data":{
PREVIOUS_ASSET_METADATA
},
"discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
"discoveryName":"Bucket",
"location":"us",
"parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
"version":"v1"
},
"updateTime":"2024-01-29T00:00:00.000000Z"
},
"priorAssetState":"PRESENT",
"window":{
"startTime":"2024-01-30T00:00:00.000000Z"
}
}
Pub/Sub またはサブスクリプションの設定方法の詳細については、Pub/Sub のドキュメントをご覧ください。
始める前に
Cloud Asset Inventory コマンドを実行するプロジェクトで Cloud Asset Inventory API を有効にします。
アカウントに Cloud Asset Inventory API を呼び出すための適切なロールがあることを確認します。通話タイプごとの個々の権限については、権限をご覧ください。
Pub/Sub トピックをまだ作成していない場合は、Pub/Sub トピックを作成します。
制限事項
フィードの作成、更新、削除が有効になるまで、最大で 10 分かかることがあります。
フィードが作成されるプロジェクトは、フィードよりも長く存続する必要があります。これは、宛先の Pub/Sub トピックへの公開に使用されるサービス アカウントがそのプロジェクト内にあるためです。プロジェクト削除が確定されるとすぐに、フィードは機能しなくなって削除されます。
親には最大 200 個のフィードを作成できます。この上限は、その親の直後のフィードのみに適用され、その子のフィードは計上されません。たとえば、ある組織に 10 個のプロジェクトがある場合、各プロジェクトは最大 200 個のフィードを持ち、組織は最大 200 個のフィードを持つことができます。
フィードを作成する
gcloud
gcloud asset feeds create FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \ --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \ --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --content-type=CONTENT_TYPE \ --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --condition-title="CONDITION_TITLE" \ --condition-description="CONDITION_DESCRIPTION" \ --condition-expression="CONDITION_EXPRESSION"
次の値を指定します。
-
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))"
-
-
FEED_ID
: 一意のアセット フィード識別子。-
BILLING_PROJECT_ID
: 省略可。 Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細 TOPIC_PROJECT_ID
: Pub/Sub トピックが配置されているプロジェクトの ID。TOPIC_ID
: 通知公開先の Pub/Sub トピックの ID。- 次のアセット定義の少なくとも 1 つ:
ASSET_NAME_#
: 省略可。 アセットのフルネームのカンマ区切りのリスト。ASSET_TYPE_#
: 省略可。 検索可能なアセットタイプのカンマ区切りのリスト。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT
エラーが返されます。--asset-types
が指定されていない場合、すべてのアセットタイプが返されます。
CONTENT_TYPE
: 省略可。 取得するメタデータの コンテンツ タイプ。--content-type
が指定されていない場合、アセット名、アセットの最終更新日、アセットが属するプロジェクト、フォルダ、組織などの基本情報のみが返されます。-
RELATIONSHIP_TYPE_#
: 省略可。 Security Command Center のプレミアム ティアと エンタープライズ ティアのサブスクライバーのみご利用いただけます。取得する アセット関係の種類のカンマ区切りのリスト。これを機能させるには、CONTENT_TYPE
をRELATIONSHIP
に設定する必要があります。 - オプションのフィード条件を追加する場合は、コマンドに次の詳細を含めます。
CONDITION_TITLE
: フィード条件に割り当てるタイトル。-
CONDITION_DESCRIPTION
: フィード条件に割り当てる説明。 - フィードに適用する
CONDITION_EXPRESSION
条件式。
すべてのオプションについては、gcloud CLI リファレンスをご覧ください。
例
次のコマンドを実行して、my-topic
Pub/Sub トピックにフィードを作成し、my-project
プロジェクト内の次のリソースが変更されたときに通知します。
my-bucket
Cloud Storage バケット- 任意の BigQuery テーブル
gcloud asset feeds create my-feed \ --project=my-project \ --pubsub-topic=projects/my-project/topics/my-topic \ --asset-names=//storage.googleapis.com/my-bucket \ --asset-types=bigquery.googleapis.com/Table \ --content-type=resource
レスポンスの例
assetNames: - //storage.googleapis.com/my-bucket assetTypes: - bigquery.googleapis.com/Table condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
REST
HTTP メソッドと URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds
ヘッダー:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON 本文のリクエスト:
{ "feedId": "FEED_ID", "feed": { "assetNames": [ "ASSET_NAME_1", "ASSET_NAME_2", "..." ], "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID" } }, "condition": { "title": "CONDITION_TITLE", "description": "CONDITION_DESCRIPTION", "expression": "CONDITION_EXPRESSION" } } }
次の値を指定します。
-
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
: Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細 FEED_ID
: 一意のアセット フィード識別子。- 次のアセット定義の少なくとも 1 つ:
ASSET_NAME_#
: 省略可。 アセットのフルネームの配列。ASSET_TYPE_#
: 省略可。 検索可能なアセットタイプの配列。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT
エラーが返されます。assetTypes
が指定されていない場合、すべてのアセットタイプが返されます。
CONTENT_TYPE
: 省略可。 取得するメタデータの コンテンツ タイプ。contentType
が指定されていない場合、アセット名、アセットの最終更新日、アセットが属するプロジェクト、フォルダ、組織などの基本情報のみが返されます。-
RELATIONSHIP_TYPE_#
: 省略可。 Security Command Center のプレミアム ティアと エンタープライズ ティアのサブスクライバーのみご利用いただけます。取得する アセット関係の種類のカンマ区切りのリスト。これを機能させるには、CONTENT_TYPE
をRELATIONSHIP
に設定する必要があります。 TOPIC_PROJECT_ID
: Pub/Sub トピックが配置されているプロジェクトの ID。TOPIC_ID
: 通知公開先の Pub/Sub トピックの ID。- オプションのフィード条件を追加する場合は、コマンドに次の詳細を含めます。
CONDITION_TITLE
: フィード条件に割り当てるタイトル。-
CONDITION_DESCRIPTION
: フィード条件に割り当てる説明。 - フィードに適用する
CONDITION_EXPRESSION
条件式。
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
次のコマンドのいずれかを実行して、my-project
プロジェクト内の次のリソースが変更されたときに通知する my-topic
Pub/Sub トピックにフィードを作成します。
my-bucket
Cloud Storage バケット- 任意の BigQuery テーブル
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 '{ "feedId": "my-feed", "feed": { "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "feedId": "my-feed", "feed": { "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content
レスポンスの例
{ "name": "projects/000000000000/feeds/my-feed", "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }
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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
フィードの取得
gcloud
gcloud asset feeds describe FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID
次の値を指定します。
-
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
: Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細 FEED_ID
: 一意のアセット フィード識別子。
すべてのオプションについては、gcloud CLI リファレンスをご覧ください。
レスポンスの例
assetNames: - //storage.googleapis.com/my-bucket assetTypes: - bigquery.googleapis.com/Table condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
REST
HTTP メソッドと URL:
GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID
ヘッダー:
X-Goog-User-Project: BILLING_PROJECT_ID
次の値を指定します。
-
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。 課金プロジェクトの設定の詳細 FEED_ID
: 一意のアセット フィード識別子。
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
特定のフィードを取得するには、次のいずれかのコマンドを実行します。
curl(Linux、macOS、Cloud Shell)
curl -X GET \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content
レスポンスの例
{ "name": "projects/000000000000/feeds/my-feed", "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }
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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
フィードの一覧表示
プロジェクト、フォルダ、組織に対するすべてのフィードを一覧表示するには、次のいずれかのリクエストを行います。
gcloud
gcloud asset feeds list \ --SCOPE \ --billing-project=BILLING_PROJECT_ID
次の値を指定します。
-
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
: Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細
すべてのオプションについては、gcloud CLI リファレンスをご覧ください。
レスポンスの例
- assetNames: - //storage.googleapis.com/my-bucket assetTypes: - bigquery.googleapis.com/Table condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
REST
HTTP メソッドと URL:
GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds
ヘッダー:
X-Goog-User-Project: BILLING_PROJECT_ID
次の値を指定します。
-
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。 課金プロジェクトの設定の詳細
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
次のいずれかのコマンドを実行して、my-project
プロジェクト内のすべてのフィードを一覧表示します。
curl(Linux、macOS、Cloud Shell)
curl -X GET \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content
レスポンスの例
{ "feeds": [ { "name": "projects/000000000000/feeds/my-feed", "assetNames": [ "//storage.googleapis.com/my-bucket" ], "assetTypes": [ "bigquery.googleapis.com/Table" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } ] }
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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
フィードの更新
既存のフィードの属性は、次の方法で更新できます。
特定のアセット名の追加と削除、またはフィードからすべてのアセット名の消去。
特定のアセットタイプを追加または削除する、またはフィードからすべてのアセットタイプを消去する。
条件のオーバーライド、またはフィードから条件の削除。
gcloud
gcloud asset feeds update FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \ --clear-asset-names \ --add-asset-names=ASSET_NAME_1,ASSET_NAME_2,... \ --remove-asset-names=ASSET_NAME_3,ASSET_NAME_4,... \ --clear-asset-types \ --add-asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \ --remove-asset-types=ASSET_TYPE_3,ASSET_TYPE_4,... \ --clear-content-type \ --content-type=CONTENT_TYPE \ --clear-relationship-types \ --remove-relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --add-relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \ --clear-condition-title \ --condition-title="CONDITION_TITLE" \ --clear-condition-description \ --condition-description="CONDITION_DESCRIPTION" \ --clear-condition-expression --condition-expression="CONDITION_EXPRESSION"
次の値を指定します。
-
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))"
-
-
FEED_ID
: 一意のアセット フィード識別子。-
BILLING_PROJECT_ID
: 省略可。 Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細 TOPIC_PROJECT_ID
: Pub/Sub トピックが配置されているプロジェクトの ID。TOPIC_ID
: 通知公開先の Pub/Sub トピックの ID。- 次のアセット定義の少なくとも 1 つ:
ASSET_NAME_#
: 省略可。 アセットのフルネームのカンマ区切りのリスト。ASSET_TYPE_#
: 省略可。 検索可能なアセットタイプのカンマ区切りのリスト。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT
エラーが返されます。--asset-types
が指定されていない場合、すべてのアセットタイプが返されます。
CONTENT_TYPE
: 省略可。 取得するメタデータのコンテンツ タイプ。--content-type
が指定されていない場合、アセット名、アセットの最終更新日、アセットが属するプロジェクト、フォルダ、組織などの基本情報のみが返されます。-
RELATIONSHIP_TYPE_#
: 省略可。 Security Command Center のプレミアム ティアと エンタープライズ ティアのサブスクライバーのみご利用いただけます。取得するアセット関係タイプのカンマ区切りのリスト。これを機能させるには、CONTENT_TYPE
をRELATIONSHIP
に設定する必要があります。 - オプションのフィード条件を追加する場合は、コマンドに次の詳細を含めます。
CONDITION_TITLE
: フィード条件に割り当てるタイトル。-
CONDITION_DESCRIPTION
: フィード条件に割り当てる説明。 - フィードに適用する
CONDITION_EXPRESSION
条件式。
すべてのオプションについては、gcloud CLI リファレンスをご覧ください。
例
次のコマンドを実行して、my-project
プロジェクトの my-topic
Pub/Sub トピックを更新します。このリクエストにより、モニタリングからすべてのアセット名が削除され、アセットタイプ gkemulticloud.googleapis.com/AttachedCluster
が追加されます。
gcloud asset feeds update my-feed \ --project=my-project \ --pubsub-topic=projects/my-project/topics/my-topic \ --clear-asset-names \ --add-asset-types=gkemulticloud.googleapis.com/AttachedCluster
レスポンスの例
assetTypes: - bigquery.googleapis.com/Table - gkemulticloud.googleapis.com/AttachedCluster condition: {} contentType: RESOURCE feedOutputConfig: pubsubDestination: topic: projects/my-project/topics/my-topic name: projects/000000000000/feeds/my-feed
フィードの属性を更新するには、update_mask
で属性のパスを指定し、その属性の値を指定する必要があります。
REST
HTTP メソッドと URL:
PATCH https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID
ヘッダー:
X-Goog-User-Project: BILLING_PROJECT_ID
JSON 本文のリクエスト:
{ "feed": { "assetNames": [ "ASSET_NAME_1", "ASSET_NAME_2", "..." ], "assetTypes": [ "ASSET_TYPE_1", "ASSET_TYPE_2", "..." ], "contentType": "CONTENT_TYPE", "relationshipTypes": [ "RELATIONSHIP_TYPE_1", "RELATIONSHIP_TYPE_2", "..." ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID" } } }, "condition": { "title": "CONDITION_TITLE", "description": "CONDITION_DESCRIPTION", "expression": "CONDITION_EXPRESSION" }, "update_mask": { "paths": [ "feed_output_config.pubsub_destination.topic", ATTRIBUTE_PATH_1, ATTRIBUTE_PATH_2, ... ] } }
次の値を指定します。
-
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
: Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細 FEED_ID
: 一意のアセット フィード識別子。- 次のアセット定義の少なくとも 1 つ:
ASSET_NAME_#
: 省略可。 アセットのフルネームの配列。ASSET_TYPE_#
: 省略可。 検索可能なアセットタイプの配列。RE2 互換の正規表現がサポートされています。正規表現が、サポートされているアセットタイプと一致しない場合は、INVALID_ARGUMENT
エラーが返されます。assetTypes
が指定されていない場合、すべてのアセットタイプが返されます。
CONTENT_TYPE
: 省略可。 取得するメタデータのコンテンツ タイプ。contentType
が指定されていない場合、アセット名、アセットの最終更新日、アセットが属するプロジェクト、フォルダ、組織などの基本情報のみが返されます。-
RELATIONSHIP_TYPE_#
: 省略可。 Security Command Center のプレミアム ティアと エンタープライズ ティアのサブスクライバーのみご利用いただけます。取得するアセット関係タイプのカンマ区切りのリスト。これを機能させるには、CONTENT_TYPE
をRELATIONSHIP
に設定する必要があります。 TOPIC_PROJECT_ID
: Pub/Sub トピックが配置されているプロジェクトの ID。TOPIC_ID
: 通知公開先の Pub/Sub トピックの ID。- オプションのフィード条件を追加する場合は、コマンドに次の詳細を含めます。
CONDITION_TITLE
: フィード条件に割り当てるタイトル。-
CONDITION_DESCRIPTION
: フィード条件に割り当てる説明。 - フィードに適用する
CONDITION_EXPRESSION
条件式。
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
次のいずれかのコマンドを実行して、my-project
プロジェクトの my-topic
Pub/Sub トピックを更新します。このリクエストにより、モニタリングからすべてのアセット名が削除され、アセットタイプ gkemulticloud.googleapis.com/AttachedCluster
が追加されます。
curl(Linux、macOS、Cloud Shell)
curl -X PATCH \ -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 '{ "feed": { "assetNames": [], "assetTypes": [ "gkemulticloud.googleapis.com/AttachedCluster" ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }, "update_mask": { "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"] } }' \ https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "feed": { "assetNames": [], "assetTypes": [ "gkemulticloud.googleapis.com/AttachedCluster" ], "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } }, "update_mask": { "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"] } } "@ Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content
レスポンスの例
{ "feeds": [ { "name": "projects/000000000000/feeds/my-feed", "assetTypes": [ "bigquery.googleapis.com/Table", "gkemulticloud.googleapis.com/AttachedCluster" ], "contentType": "RESOURCE", "feedOutputConfig": { "pubsubDestination": { "topic": "projects/my-project/topics/my-topic" } } } ] }
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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
フィードの削除
アセットの変更通知を受け取りたくない場合は、次のいずれかのリクエストを実行してフィードを削除します。
gcloud
gcloud asset feeds delete FEED_ID \ --SCOPE \ --billing-project=BILLING_PROJECT_ID
次の値を指定します。
-
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
: Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細
すべてのオプションについては、gcloud CLI リファレンスをご覧ください。
レスポンスの例
削除が成功すると、レスポンスは返されません。
REST
HTTP メソッドと URL:
DELETE https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID
ヘッダー:
X-Goog-User-Project: BILLING_PROJECT_ID
次の値を指定します。
-
SCOPE_PATH
: 次のいずれかの値を使用できます。使用できる値は次のとおりです。
-
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
: Pub/Sub トピックを管理する権限を持つ、デフォルトの Cloud Asset Inventory サービス エージェントが存在するプロジェクト ID。 課金プロジェクトの設定の詳細
すべてのオプションについては、REST リファレンスをご覧ください。
コマンドの例
特定のフィードを削除するには、次のいずれかのコマンドを実行します。
curl(Linux、macOS、Cloud Shell)
curl -X DELETE \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed
PowerShell(Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method DELETE ` -Headers $headers ` -Uri "https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed" | Select-Object -Expand Content
レスポンスの例
{}
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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Asset Inventory 用のクライアント ライブラリをインストールして使用する方法については、Cloud Asset Inventory クライアント ライブラリをご覧ください。
Cloud Asset Inventory への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
フィードの状態
任意のアセットに対して特定の種類の変更のみを表示するには、フィードに条件を追加します。条件は Common Expression Language(CEL)で記述します。
条件のサポートには、制限が付けられています。場合によっては、条件を使用してフィードを作成または更新すると、遅延が生じることがあります。
制限事項
条件式の長さは 3,000 文字以内に制限されます。
条件式のほとんどの変数名は、小文字で、単語ごとにアンダースコアが付いています。例:
example_variable
例外は、Resource オブジェクト内の
data
のサブフィールドの変数名です。単語区切り文字はなく、最初の単語以外の各単語の最初の文字は大文字になります。例:exampleVariable
条件式の検証には、フィードの作成時または更新時に行われるものもあります。ただし、そのような検証は、特にダイナミック型の
temporal_asset.asset.resource.data
フィールドで設定される条件では、包括的なものではありません。可能であれば、適切な gcloud CLI または REST API パラメータを使用してフィードをフィルタリングしてください。評価中にエラーが発生した場合、通知は送信されませんが、エラーはログに記録されます。
temporal_asset.asset.resource.data
のダイナミック型の場合、存在しないフィールドで指定された条件によってランタイム エラーが発生し、通知が公開されません。たとえば、条件temporal_asset.asset.resource.data.name != "my_name"
では、更新にname
フィールドが含まれていない場合、評価が失敗し、通知は送信されません。特定のフィールドが存在する場合のみ条件が動作する場合は、条件が正しく評価されるよう、条件に存在チェックを追加します。静的列挙型は、完全修飾されたパス名または生の整数のいずれでも表すことができます。たとえば、次の式は
prior_asset_state
に対し有効です。temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
および
temporal_asset.prior_asset_state == 3
temporal_asset.asset.resource.data
の動的列挙型は、生の文字列として表現されます。たとえば、以下の式は、アセットタイプcloudresourcemanager.googleapis.com/Project
に対し有効です。temporal_asset.asset.resource.data.lifecycleState == "ACTIVE"
CEL で条件式を作成する
フィード条件では、Common Expression Language(CEL)を使用して、属性データに基づいてブール判定を行います。条件式は、論理演算子を使用して結合された 1 つ以上のステートメントで構成されます。各ステートメントは、通知が送信されるかどうかを判定するために TemporalAsset
に適用される属性ベースの制御ルールを表します。
フィードの状態にとって最も重要な CEL 機能は次のとおりです。
変数: 条件で使用される変数は、
temporal_asset.deleted
(Boolean
)やtemporal_asset.asset.name
(String
)などの特定の属性を表します。これらの変数には、実行時のコンテキストに基づいて値が設定されます。演算子:
String
などの各データ型は、論理式の作成に使用できる一連の演算子をサポートします。通常、演算子を使用して変数に含まれる値とリテラル値とを比較します(例:temporal_asset.asset.name == "//cloudresourcemanager.googleapis.com/projects/12345"
)。この例では、temporal_asset.asset.name
の入力値が//cloudresourcemanager.googleapis.com/projects/12345
である場合、式はtrue
と評価されます。関数: 関数は、より複雑な演算をサポートするデータ型向けの複合演算子です。条件式には、特定のデータ型と組み合わせて使用できる事前定義された関数があります。たとえば、
temporal_asset.asset.name.contains("keyword")
はcontains
という関数を使用して、temporal_asset.asset.name
の値に"keyword"
が含まれているかどうかを確認します。存在する場合は、true
と評価されます。論理演算子: Conditions では、基本的な式のステートメントから複雑な論理式を作成するために使用できる論理演算子(
&&
(AND)と||
(OR))がサポートされています。これらの論理演算子を使用すると、1 つの条件式で複数の入力変数を使用できます。たとえば、temporal_asset.deleted && temporal_asset.window.start_time.getFullYear() > 2020
は 2 つの基本的なステートメントを結合し、評価結果としてtrue
を生成するには両方のステートメントが満たされる必要があります。
CEL 機能の詳細については、言語の定義をご覧ください。
条件変数の使用
条件変数を使用すると、さまざまな属性に関する条件を作成できます。サポートされている条件変数は次のとおりです。
- temporal_asset: TemporalAsset 形式の最新のアセット変更。条件が true と判定されると、構成された宛先に
TemporalAsset
が送信されます。
条件式の例
以下の条件式は、作成イベントに関する通知を送信します。
temporal_asset.deleted == false &&
temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
以下の条件式は、フォルダ 12345
と 23456
に格納されたリソースに関する通知を送信します。
"folders/12345" in temporal_asset.asset.ancestors ||
"folders/23456" in temporal_asset.asset.ancestors
次の条件式は、フィード内のアセットタイプがすでに compute.googleapis.com/Firewall
に設定されていることを前提として、新たに許可されたルールがファイアウォールに追加されるときに通知を送信します。
size(temporal_asset.asset.resource.data.allowed) >
size(temporal_asset.prior_asset.resource.data.allowed)
次の条件式は、フィードでアセットタイプがすでに compute.googleapis.com/Instance
に設定されていることを前提として、n1-standard-1
マシンタイプの VM インスタンスに関する通知を送信します。
temporal_asset.asset.resource.data.machineType.endsWith('/machineTypes/n1-standard-1')
次の条件式は、フィードでアセットタイプが storage.googleapis.com/Bucket
に設定され、コンテンツ タイプが IAM_POLICY
に設定されていると想定して、allUsers
の IAM ポリシーを含むストレージ バケットに関する通知を送信します。
temporal_asset.asset.iam_policy.bindings.exists(b, b.members.exists(m, m == "allUsers"))
次の条件式は、ラベルに test
キーを含むストレージ バケットが削除されたときに通知を送信します。
temporal_asset.deleted == true && temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.PRESENT && "test" in temporal_asset.prior_asset.resource.data.labels
トラブルシューティング
リソースまたは IAM ポリシーの更新に関する通知が届かない場合は、次の手順でトラブルシューティングを行うことができます。
アセットでメタデータが変更されているかを確認する。リアルタイム フィードは、サポートされているリソースタイプのメタデータが変更された場合にのみ更新を送信します。Cloud Storage バケットに新しいファイルをアップロードするなどの操作を行っても、メタデータの変更はトリガーされません。
アセットが、フィードで指定したアセット名またはアセットタイプと一致していることを確認します。
プロジェクトの削除については、プロジェクトをシャットダウンした後、30 日以内であれば操作を元に戻すことができます。そのため、プロジェクトが完全に削除されるまで、アセット メタデータの
deleted
フィールドは設定されません。削除保留中のプロジェクトをモニタリングするには、プロジェクトのlifecycleState
フィールドに条件を設定します。次に例を示します。temporal_asset.asset.resource.data.lifecycleState == "DELETE_REQUESTED"
Cloud Logging
リアルタイム フィードが Pub/Sub を介してリソースまたは IAM ポリシーの更新を送信しない場合、Cloud Asset Inventory は Logging を介してエラーのステータスとメッセージを記録します。Logging はデフォルトで有効になっており、Google Cloud Observability に属します。Google Cloud Observability の料金をご覧ください。
リアルタイム フィードのログの表示
リアルタイム フィード のログは、Pub/Sub トピックによってインデックスに登録されます。すべてのログを表示するには:
Google Cloud コンソールの [ログ エクスプローラ] ページに移動します。
[すべてのフィールドを検索] ボックスの横にある [リソース] リストをクリックします。
Cloud Pub/Sub Topic
を検索してから、Cloud Pub/Sub トピックのリソースタイプをクリックします。表示するトピック ID をクリックします。
[適用] をクリックします。
ログフィールドには UTF-8 文字エンコーディングが適用されます。UTF-8 以外の文字列は、疑問符に置き換えられます。
ログに記録される情報
リアルタイム フィードのログエントリには、以下の種類の情報が含まれています。
重大度、プロジェクト ID、プロジェクト番号、タイムスタンプなど、ほとんどの Google Cloud ログで表示される一般情報。
jsonPayload
のリアルタイム フィードのログ フィールド。アセット名、フィード出力の構成、リソースの公開または IAM ポリシーの更新時のエラー ステータスが含まれます。
次の表に、各フィールドにどのような種類の情報が格納されるかを示します。
フィールド | データタイプと説明 |
---|---|
name |
フィードのフルネーム。形式は次のいずれかです。
|
asset_name |
更新情報を受け取るアセットのフルネーム。次に例を示します。
詳細については、リソース名をご覧ください。 |
condition |
アセットの更新を公開するかどうかを判定するフィード条件。 |
error_status |
アセットの更新をフィードに公開できない場合のステータス。 |
feed_output_config |
アセットの更新の公開場所を定義するフィード出力構成。 |