アセットの一覧表示

このページでは、Cloud Asset Inventory アセットリスト サービスの使用方法を説明します。Cloud Asset Inventory API を使用すると、特定のタイムスタンプにおけるアセットのリストをページ分けして表示できます。

始める前に

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. アセットを一覧表示するプロジェクトまたは組織で、次のいずれかのロールがアカウント割り当てられていることを確認します。
    • roles/cloudasset.viewer
    • roles/cloudasset.owner

アカウントを構成する

Cloud Asset API を呼び出すには、ルート(親)リソース(一覧表示するアセットを含むプロジェクトまたは組織)に対応する権限がアカウントに付与されている必要があります。リクエストの各 ContentType に必要な権限は次のとおりです。

  • CONTENT_TYPE_UNSPECIFIED: cloudasset.assets.listResource
  • RESOURCE: cloudasset.assets.listResource
  • IAM_POLICY: cloudasset.assets.listIamPolicy
  • ORG_POLICY: cloudasset.assets.listOrgPolicy
  • ACCESS_POLICY: cloudasset.assets.listAccessPolicy
  • OS_INVENTORY: cloudasset.assets.listOSInventories

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

アセットの一覧表示

Cloud Asset API を使用してプロジェクト内のアセットの一覧を任意の期間内に一覧表示するには、次の手順に従います。

gcloud

このセクションに記載のコマンドを実行すると、プロジェクト内のアセットが一覧表示されます。組織内のアセットを一覧表示するには、コマンドで --organization=ORGANIZATION_ID フラグを使用します。

次の例では、プロジェクト内のアセットを一覧表示します。

なお、指定可能な最も早い snapshot-time には、現在の時刻から 35 日間を引いた値が指定されています。

  1. アカウントを構成するの手順に沿って、Cloud Asset API を呼び出せるようにします。
  2. 一覧表示するアセットのリソースタイプを決定します。これは、下記の例の asset-types 変数です。
  3. アセットを一覧表示する時間を決定します。これは、gcloud コマンドの snapshot-time(RFC 3339 UTC 形式)です。

尚、--billing-project フラグを使用すると、課金プロジェクトを指定できます。これは、リクエストの送信に使用するプロジェクトです。プロジェクトからアセットを一覧表示するときに、フラグ --project を使用して一覧表示するターゲット プロジェクトを指定するか、フラグ --organization を使用してターゲット組織を指定します。または、フラグ --folder を持つフォルダを指定します。

フラグとオプションの全一覧を表示するには、gcloud alpha asset list --help を実行します。

すべてのリソース メタデータを含め、プロジェクト内のアセットを一覧表示します。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project='PROJECT_ID' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

リソース メタデータを含めない形で、プロジェクト内のアセットを一覧表示します。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project='PROJECT_ID' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

すべてのリソース メタデータを含め、組織内のアセットを一覧表示します。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --organization='ORGANIZATION_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

リソース メタデータを含めない形で、組織内のアセットを一覧表示します。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --organization='ORGANIZATION_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

すべてのリソース メタデータを含め、フォルダ内のアセットを一覧表示します。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --folder='FOLDER_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

リソース メタデータを含めない形で、フォルダ内のアセットを一覧表示します。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --folder='FOLDER_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

API

このセクションに示すコマンドは、プロジェクト、組織、またはフォルダのアセットを一覧表示します。

  1. アカウントを構成するの手順に沿って、Cloud Asset API を呼び出せるようにします。
  2. アセットを一覧表示する時間を決定します。これは、以下のコマンドにおける RFC 3339 UTC 形式の readTime パラメータです。
  3. 一覧表示するアセットのリソースタイプを決定します。次の例では、compute.googleapis.com/Instance を使用しています。

Token 変数を設定する

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

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

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

Authorization: Bearer y29.xxxxxxx

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

Token=y29.xxxxxxx

すべてのリソース メタデータを含め、プロジェクト内のアセットを一覧表示します

最初のページに対して pageToken パラメータを設定せず、前のページ リクエストに応じてページトークン値に設定する必要があります。なお、pageToken は上記の Token とは異なります。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/assets

リソース メタデータを含めない形で、プロジェクト内のアセットを一覧表示します

最初のページに対して pageToken パラメータを設定せず、前のページ リクエストに応じてページトークン値に設定する必要があります。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/assets

すべてのリソース メタデータを含め、組織内のアセットを一覧表示する

最初のページに対して pageToken パラメータを設定せず、前のページ リクエストに応じてページトークン値に設定する必要があります。なお、pageToken は上記の Token とは異なります。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER/assets

リソース メタデータを含めない形で、組織内のアセットを一覧表示する

最初のページに対して pageToken パラメータを設定せず、前のページ リクエストに応じてページトークン値に設定する必要があります。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/ogranizations/ORGANIZATION_NUMBER/assets

すべてのリソース メタデータを含め、フォルダ内のアセットを一覧表示します。

最初のページに対して pageToken パラメータを設定せず、前のページ リクエストに応じてページトークン値に設定する必要があります。なお、pageToken は上記の Token とは異なります。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER/assets

リソース メタデータを含めない形で、プロジェクト内のアセットを一覧表示します

最初のページに対して pageToken パラメータを設定せず、前のページ リクエストに応じてページトークン値に設定する必要があります。

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER/assets

API リファレンス