從活動記錄遷移至稽核記錄


如果您使用活動記錄查看 Compute Engine 管理員活動和系統事件,請參閱這份指南,瞭解如何改以稽核記錄尋找類似的記錄項目。

Compute Engine 活動記錄已淘汰。您可以根據記錄名稱來識別活動記錄項目:

logName: "projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"

Compute Engine 稽核記錄包含活動記錄提供的相同資訊,另外還有更多其他資訊。但稽核記錄顯示資訊的方式與活動記錄不同。因此您需要調整查詢。

如何從活動記錄遷移至稽核記錄

如要使用稽核記錄而非活動記錄,請調整查詢。請按照下列步驟操作。

  1. 找出舊查詢。舉例來說,您可能會將這些記錄儲存在 記錄檢視器中的儲存搜尋中,或是使用 API 或 SDK 建立指令碼。如要進一步瞭解如何監控資源,請參閱「記錄」說明文件。

  2. 將活動記錄欄位替換為適當的稽核記錄欄位。請參閱表格,瞭解各欄位如何對應。

    舉例來說,如果舊版活動記錄查詢尋找名為 jsonPayload.resource.name 的欄位,則新的稽核記錄查詢應改為尋找 protoPayload.resourceName

  3. 儲存並使用新的稽核記錄查詢。例如,在 Cloud Logging 中建立儲存搜尋或更新指令碼。

範例

以下列舉幾個轉換後的查詢:

查詢與特定資源相關的活動

查詢示例
舊版活動記錄gcloud logging read jsonPayload.resource.name="VM_NAME"
稽核記錄

使用下列其中一種方法

  1. gcloud logging read protoPayload.resourceName:"VM_NAME"
  2. gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

使用選項 1 時,「has」(:) 運算子會比對專案中名稱含有 VM_NAME 的所有資源。在選項 2 中,「equals」運算子 (=) 只會比對具有該名稱的特定完整修飾資源。

查詢最近的管理員活動記錄項目

查詢示例
舊版活動記錄gcloud logging read logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log"
稽核記錄gcloud logging read logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"

查詢最近建立執行個體的記錄項目

查詢示例
舊版活動記錄gcloud logging read 'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log" AND jsonPayload.event_subtype="compute.instances.insert"'
稽核記錄gcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.methodName:"compute.instances.insert"'

查詢所有執行個體建立作業的開始時間

查詢示例
舊版活動記錄gcloud logging read 'jsonPayload.event_type="GCE_API_CALL" AND jsonPayload.event_subtype="compute.instances.insert"'
稽核記錄gcloud logging read 'operation.first="true" AND protoPayload.methodName:"compute.instances.insert"'

查詢任何作業的完成狀態

查詢示例
舊版活動記錄gcloud logging read jsonPayload.event_type="GCE_OPERATION_DONE"
稽核記錄gcloud logging read operation.last="true"

活動記錄和稽核記錄的差異

請參閱本節,瞭解稽核記錄的結構與活動記錄的差異。將舊版活動記錄查詢轉換為稽核記錄查詢時,請留意這些差異。舉例來說,請在查詢中將所有舊版活動記錄欄位名稱,替換為對應的稽核記錄欄位名稱。

雖然稽核記錄和活動記錄都會傳回記錄項目物件,但兩者之間有以下差異:

以下範例說明記錄名稱和酬載的差異:

記錄項目範例
舊版活動記錄
{
  insertId:  "1x3bbhjg2wwvz1x"
  jsonPayload: {
    event_subtype: "compute.instances.stop"
    ...
    resource: {
      id: "12345678900123456789"
      name: "my-instance-name"
      type: "instance"
      zone: "us-east1-b"
    }
    ...
  }
  labels: {…}
  logName:  "projects/my-project/logs/compute.googleapis.com%2Factivity_log"
  receiveTimestamp:  "2019-08-26T12:22:44.602794616Z"
  ...
}
稽核記錄
{
  insertId:  "-w6o499e22fwk"
  logName:  "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity"
  protoPayload: {
    ...
    methodName: "beta.compute.instances.stop"
    ...
    resourceName: "projects/my-project/zones/us-east1-b/instances/my-instance-name"
  }
  receiveTimestamp:  "2019-08-26T12:22:46.881198276Z"
  ...
}

將欄位從活動記錄對應到稽核記錄

請使用下表將活動記錄欄位對應至查詢中的對應稽核記錄欄位。

欄位

請使用下表,在更新後的查詢中將舊版活動記錄欄位替換為稽核記錄欄位。

例如,如果您的舊版活動記錄查詢包含以 jsonPayload.resource.type 為基礎的篩選器,則新的稽核記錄查詢會改以 resource.type 為基礎進行篩選。

舊版活動記錄欄位 稽核記錄欄位
insertId insertId
jsonPayload.actor.user protoPayload.authenticationInfo.principalEmail
jsonPayload.event_subtype protoPayload.methodName
jsonPayload.event_timestamp_us timestamp
jsonPayload.event_type="GCE_API_CALL" operation.first="true"
jsonPayload.event_type="GCE_OPERATION_DONE" operation.last="true"
jsonPayload.request protoPayload.request
jsonPayload.operation operation
jsonPayload.resource.id resource.labels.instance_id
jsonPayload.resource.name protoPayload.resourceName
jsonPayload.resource.type resource.type
jsonPayload.resource.zone resource.labels.zone
jsonPayload.trace_id operation.id
jsonPayload.user_agent protoPayload.requestMetadata.callerSuppliedUserAgent
labels.compute.googleapis.com/resource_id resource.labels.[RESOURCE_TYPE]_id
labels.compute.googleapis.com/resource_name protoPayload.resourceName
labels.compute.googleapis.com/resource_type resource.type
labels.compute.googleapis.com/resource_zone 以下其中一個欄位名稱:
  • resource.labels.zone
  • resource.labels.region
  • resource.labels.location
logName logName
receiveTimestamp receiveTimestamp
resource.labels resource.labels
severity severity
timestamp timestamp

欄位值

請使用下表將舊版活動記錄欄位值對應到稽核記錄欄位值。與活動記錄相比,稽核記錄有不同的記錄名稱值和酬載值。稽核記錄項目也會傳回完整的資源名稱和經果版本管理的方法名稱

記錄檔名稱

如要查看稽核記錄項目,請尋找包含 cloudaudit.googleapis.comlogName

記錄檔名稱記錄檔內容
舊版活動記錄projects/PROJECT_ID/logs/compute.googleapis.com%2Factivity_log管理員活動和系統事件
稽核記錄projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity管理員活動
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event系統事件
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access資料存取權

酬載

在每個稽核記錄項目中,請尋找 protoPayload,而非 jsonPayload

酬載類型酬載範例
舊版活動記錄jsonPayload
    jsonPayload: {
      actor: {…}
      event_subtype:  "compute.instances.start"
      event_timestamp_us:  "1566404493487248"
      event_type:  "GCE_API_CALL"
      ip_address:  ""
      operation: {…}
      request: {…}
      resource: {…}
      trace_id:  "operation-1566404491560-590a2f74b4705-a1ae0686-d896d772"
      user_agent:  "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
      version:  "1.2"
    }
稽核記錄protoPayload
    protoPayload: {
      @type:  "type.googleapis.com/google.cloud.audit.AuditLog"
      authenticationInfo: {…}
      methodName:  "v1.compute.instances.start"
      request: {…}
      requestMetadata: {…}
      resourceName:  "projects/my-project/zones/us-central1-a/instances/alert"
      serviceName:  "compute.googleapis.com"
    }

如要瞭解這些酬載彼此的關係,以及如何將舊版活動記錄欄位對應到稽核記錄欄位,請參閱記錄項目欄位對應

資源名稱

在稽核記錄中,API 資源名稱 (位於 protoPayload.resourceName 欄位中) 會完整標示,例如:

resourceName: "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

您仍可使用部分名稱,但必須修正查詢,使用「has」運算子 (:) 而非「equals」運算子。

在稽核記錄查詢中使用下列其中一個選項,即可篩選特定資源:

  • gcloud logging read protoPayload.resourceName:"VM_NAME"
  • gcloud logging read protoPayload.resourceName="projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"

方法名稱

在稽核記錄中,API 方法名稱 (位於 protoPayload.methodName 欄位中) 的開頭是其版本,例如:v1.compute.instances.delete

欄位查詢示例
舊版活動記錄jsonPayload.event_subtypeRESOURCE.METHODjsonPayload.event_subtype=compute.instances.delete
稽核記錄protoPayload.methodNameAPI_VERSION.RESOURCE.METHODprotoPayload.methodName=v1.compute.instances.delete

protoPayload.methodName=beta.compute.instances.delete

protoPayload.methodName:compute.instances.delete

您仍可在稽核記錄查詢中使用未指定版本的方法名稱,但必須修正查詢,使用「has」運算子 (:) 而非「equals」運算子 (=)。舉例來說:protoPayload.methodName:compute.instances.delete 會傳回所有執行個體刪除 API 呼叫,不論版本為何。如要進一步瞭解運算子,請參閱「比較」。

後續步驟