Cloud Asset Inventory 是一項全球中繼資料資產管理服務,可讓您查看、搜尋、匯出、監控及分析 Google Cloud 資產中繼資料,並提供最多 35 天的建立、更新和刪除記錄。如果素材資源在過去 35 天內沒有變更,系統會回報最新狀態。
資產中繼資料可能來自下列位置:
Google Cloud 資源,例如 Compute Engine VM 執行個體、Cloud Storage 值區和 App Engine 執行個體。
在 Google Cloud 資源上設定的政策,例如 IAM 政策、組織政策和 Access Context Manager 政策。
執行階段資訊 (來自 OS 庫存管理服務)。
以下說明如何使用素材資源:
搜尋資源及其 IAM 允許政策 ,方法是使用自訂查詢語言,或透過 BigQuery SQL 查詢資產。
匯出資產中繼資料至 BigQuery 或 Cloud Storage。
分析資源的 IAM 和機構政策,並查看資源的有效 IAM 政策,瞭解哪些人具備哪些存取權。
監控資產變更,方法是設定及訂閱動態消息。
從資產產生洞察資料,有助於提升安全防護機制。
素材資源類型、素材資源名稱和內容類型
Cloud Asset Inventory 提供多種與資產互動的方法。視您使用的方法和所需的回應詳細資料而定,您可能需要在要求中指定資產類型、資產名稱和內容類型。
資產類型
部分 Cloud Asset Inventory 方法會根據資產類型傳回結果。資產類型包括 Google Cloud 資源、政策、OS 庫存執行階段資訊和關係。如要瞭解可用的資產類型,以及支援這些類型的 Cloud Asset Inventory 方法,請參閱「資產類型」。
資產名稱
部分 Cloud Asset Inventory 方法會根據資產名稱傳回結果。指定資產名稱時,請務必使用完整資源名稱。如需完整的資源名稱清單,請參閱「資產名稱」。
內容類型
如要要求資源的額外中繼資料,請指定中繼資料內容類型。如果未指定內容類型,系統只會傳回基本回應,其中包含資產名稱、上次更新時間,以及所屬專案、資料夾和機構等資訊。
內容類型名稱會因您與 Cloud Asset Inventory 的互動方式而異。 RPC 和 REST API 名稱相同。不過,gcloud CLI 內容類型名稱採用不同模式。為求一致性並方便說明,本文件其餘部分會以 RPC 和 REST 名稱來稱呼內容類型。
下表詳細列出內容類型和說明:
| 內容類型 | 說明 | |
|---|---|---|
| RPC 和 REST 名稱 | gcloud CLI 名稱 | |
ACCESS_POLICY | 
      access-policy | 
      資產上設定的 Access Context Manager 政策。 | 
IAM_POLICY | 
      iam-policy | 
      繫結至資源的 IAM 政策中繼資料。 | 
ORG_POLICY | 
      org-policy | 
      
        資產上設定的機構政策中繼資料。這類內容會輸出舊版組織政策 v1。如果是機構政策 v2,請嘗試 resource 內容類型和 orgpolicy.googleapis.com/Policy 資源類型。
       | 
    
OS_INVENTORY | 
      os-inventory | 
      執行階段 OS 庫存資訊。如要啟用 OS 庫存,請完成「設定 VM 管理員」中的相關步驟。 | 
RELATIONSHIP | 
      relationship | 
      
         需要存取 Security Command Center 進階或 Enterprise 方案,或 Gemini Cloud Assist。 許多 Google Cloud 資產會透過關係相互連結。舉例來說,Compute 執行個體群組可以包含 Compute 執行個體,而 GKE 叢集可以包含 節點。 關係資料自 2022 年 5 月 30 日起提供。關係可能有自己的更新時間戳記,因為關係的推斷時間可能與來源資產的更新時間不同。 如需支援的關係清單,請參閱「 關係類型」。  | 
    
RESOURCE | 
      resource | 
      資源的中繼資料。 | 
不同內容類型對回覆的影響
下列範例顯示透過 Cloud Asset Inventory 列出專案中的 VM 執行個體時,不同內容類型會如何影響回應。
沒有內容類型
列出 VM 執行個體時,如果未指定任何內容類型,您只會收到執行個體名稱、上次更新時間,以及所屬專案、資料夾和機構。
展開可查看回覆範例
--- ancestors: - projects/PROJECT_NUMBER - folders/FOLDER_NUMBER - organizations/ORGANIZATION_ID assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME updateTime: '2023-11-15T12:28:30.087825Z'
IAM_POLICY 內容類型
如果您指定 IAM_POLICY 內容類型,系統也會提供 VM 的 IAM 繫結 (如有)。
展開可查看回覆範例
---
ancestors:
- projects/PROJECT_NUMBER
- folders/FOLDER_NUMBER
- organizations/ORGANIZATION_ID
assetType: compute.googleapis.com/Instance
iamPolicy:
  bindings:
  - members:
    - user:USER_EMAIL_ADDRESS
    role: roles/compute.securityAdmin
  etag: ETAG
name: //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
updateTime: '2023-12-19T23:35:42.673842Z'RESOURCE 內容類型
如果您指定 RESOURCE 內容類型,也會收到與 VM 相關聯的所有中繼資料。
展開可查看回覆範例
---
ancestors:
- projects/PROJECT_NUMBER
- folders/FOLDER_NUMBER
- organizations/ORGANIZATION_ID
assetType: compute.googleapis.com/Instance
name: //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
resource:
  data:
    allocationAffinity:
      consumeAllocationType: ANY_ALLOCATION
    canIpForward: false
    confidentialInstanceConfig:
      enableConfidentialCompute: true
    cpuPlatform: AMD Rome
    creationTimestamp: '2023-11-14T14:35:37.059-08:00'
    deletionProtection: false
    description: ''
    disks:
    - architecture: X86_64
      autoDelete: true
      boot: true
      deviceName: INSTANCE_NAME
      diskSizeGb: '10'
      guestOsFeatures:
      - type: VIRTIO_SCSI_MULTIQUEUE
      - type: SEV_CAPABLE
      - type: SEV_SNP_CAPABLE
      - type: SEV_LIVE_MIGRATABLE
      - type: UEFI_COMPATIBLE
      - type: GVNIC
      index: 0
      interface: NVME
      licenses:
      - https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/licenses/ubuntu-2004-lts
      mode: READ_WRITE
      shieldedInstanceInitialState:
        dbx:
        - content: DATA
          fileType: BIN
        dbxs:
        - content: DATA
          fileType: BIN
      source: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/INSTANCE_NAME
      type: PERSISTENT
    displayDevice:
      enableDisplay: false
    fingerprint: FINGERPRINT
    id: 'ID'
    keyRevocationActionType: NONE_ON_KEY_REVOCATION
    labelFingerprint: LABEL_FINGERPRINT
    lastStartTimestamp: '2023-11-15T04:28:30.005-08:00'
    machineType: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n2d-standard-2
    name: INSTANCE_NAME
    networkInterfaces:
    - accessConfigs:
      - name: External NAT
        natIP: 34.27.105.222
        networkTier: PREMIUM
        type: ONE_TO_ONE_NAT
      fingerprint: jKU51FdTluk=
      name: nic0
      network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default
      networkIP: 10.128.15.212
      nicType: GVNIC
      stackType: IPV4_ONLY
      subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/default
    reservationAffinity:
      consumeReservationType: ANY_ALLOCATION
    resourceStatus: {}
    scheduling:
      automaticRestart: true
      onHostMaintenance: TERMINATE
      preemptible: false
      provisioningModel: STANDARD
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    serviceAccounts:
    - email: PROJECT_NUMBER-compute@developer.gserviceaccount.com
      scopes:
      - https://www.googleapis.com/auth/devstorage.read_only
      - https://www.googleapis.com/auth/logging.write
      - https://www.googleapis.com/auth/monitoring.write
      - https://www.googleapis.com/auth/servicecontrol
      - https://www.googleapis.com/auth/service.management.readonly
      - https://www.googleapis.com/auth/trace.append
    shieldedInstanceConfig:
      enableIntegrityMonitoring: true
      enableSecureBoot: false
      enableVtpm: true
    shieldedInstanceIntegrityPolicy:
      updateAutoLearnPolicy: true
    startRestricted: false
    status: RUNNING
    tags:
      fingerprint: FINGERPRINT
    zone: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE
  discoveryDocumentUri: https://www.googleapis.com/discovery/v1/apis/compute/v1/rest
  discoveryName: Instance
  location: ZONE
  parent: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
  version: v1
updateTime: '2023-11-15T12:28:30.087825Z'RELATIONSHIP 內容類型
如要使用關係功能,必須具備Security Command Center Premium 或 Enterprise 級別的存取權,或是 Gemini Cloud Assist。
如果您指定 RELATIONSHIP 內容類型,也會收到與 VM 執行個體相關資產相關聯的中繼資料。
展開可查看回覆範例
--- ancestors: - projects/PROJECT_NUMBER - folders/FOLDER_NUMBER - organizations/ORGANIZATION_ID assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME relatedAsset: ancestors: - projects/PROJECT_NUMBER - folders/FOLDER_NUMBER - organizations/ORGANIZATION_ID asset: //compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/disks/INSTANCE_NAME assetType: compute.googleapis.com/Disk relationshipType: COMPUTE_INSTANCE_USE_DISK updateTime: '2023-12-19T23:35:42.673842Z'
使用 RELATIONSHIP 內容類型時,您可以要求特定關係類型,不必要求所有關係。
資料更新間隔
Cloud Asset Inventory 會對目前資料提供最終一致性,並盡力確保歷來資料的一致性。雖然機率很低,但 Cloud Asset Inventory 可能會遺漏部分資料更新。
除非資源類型表格中另有註明,否則幾乎所有資產更新都會在幾分鐘內完成。