瞭解稽核記錄

本頁會詳細說明稽核記錄項目,包含稽核記錄的結構、讀取方式,以及如何解讀這些記錄。

Cloud 稽核記錄會針對每個 GCP 專案、資料夾和機構保留三份稽核記錄:

  • 系統事件稽核記錄
  • 管理員活動稽核記錄
  • 資料存取稽核記錄

如需 Cloud 稽核記錄的概要總覽,請參閱 Cloud 稽核記錄

查看稽核記錄

您可以採取以下幾種做法查看稽核記錄項目:

基本檢視器

您可以使用 GCP 主控台中的記錄檢視器基本介面擷取稽核記錄項目。請執行下列步驟:

  1. 前往 GCP 主控台的「Stackdriver Logging」>「Logs」(記錄) (「Logs Viewer」(記錄檢視器)) 頁面:

    前往「Logs Viewer」(記錄檢視器) 頁面

  2. 在頁面頂端選取現有 GCP 專案,或建立新專案。

  3. 在第一個下拉式選單中,選取您要查看的稽核記錄所屬資源類型。您可以選取特定資源,或者選取 Global 以涵蓋所有資源。

  4. 在第二個下拉式選單中,請選取您要查看的記錄類型:管理員活動稽核記錄請選取 activity,資料存取稽核記錄請選取 data_access,而系統事件記錄請選取 system_events

    如果您沒有看到上述任一選項,就表示專案中沒有這類型的稽核記錄可供使用。

進階檢視器

您可以使用 GCP 主控台中的記錄檢視器進階介面,擷取稽核記錄項目。請執行下列步驟:

  1. 前往 GCP 主控台的「Stackdriver Logging」>「Logs」(記錄) (「Logs Viewer」(記錄檢視器)) 頁面:

    前往「Logs Viewer」(記錄檢視器) 頁面

  2. 在頁面頂端選取現有 GCP 專案,或建立新專案。

  3. 在第一個下拉式選單中,選取您要查看的稽核記錄所屬資源類型。您可以選取特定資源,或者選取 Global 以涵蓋所有資源。

  4. 按一下搜尋篩選器方塊最右側的下拉式箭頭 (▾),然後選取 [Convert to advanced filter] (轉換為進階篩選器)

  5. 建立篩選器,以便進一步指定您要查看的記錄項目。如要擷取專案中的所有稽核記錄,請新增下列篩選器,並在每個記錄名稱中提供有效的 [PROJECT_ID]

      logName = ("projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events"
          OR "projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access")
    

    如要進一步瞭解篩選器,請參閱進階記錄篩選器一文。

API

如要使用 Stackdriver Logging API 查看稽核記錄項目,請執行下列步驟:

  1. 前往 entries.list 方法說明文件中的「Try this API」entries.list (試用這個 API) 區段。

  2. 將下列內容放入「Try this API」(試用這個 API) 表單的「Request body」(要求主體) 部分。按一下這個已預先填入資料的表單,即可自動填入要求主體,但您必須在每個記錄名稱中提供有效的 [PROJECT_ID]

      {
        "resourceNames": [
          "projects/[PROJECT_ID]"
        ],
        "pageSize": 5,
        "filter": "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)"
      }
    
  3. 按一下 [Execute] (執行)

如要進一步瞭解篩選器,請參閱進階記錄篩選器一文。

SDK

如要使用 Cloud SDK 讀取記錄項目,請執行下列指令,並在每個記錄名稱中提供有效的 [PROJECT_ID]

gcloud logging read "logName=(projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fsystem_events OR projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Fdata_access)

如要進一步瞭解如何使用 Cloud SDK,請參閱讀取記錄項目

稽核記錄項目的格式

稽核記錄項目是一種 Stackdriver Logging 記錄項目的類型。與所有 Logging 記錄項目相同,稽核記錄項目會儲存在 LogEntry 物件中。稽核記錄項目與其他記錄項目的區別在於 protoPayload 欄位。在稽核記錄項目中,記錄項目的 protoPayload 欄位具有儲存稽核記錄資料的 AuditLog 物件。

AuditLog 類型會定義一組稽核記錄專屬欄位,像是 serviceNameauthenticationInfo。該類型也有選用欄位 serviceData,以便部分 Google Cloud Platform 服務在稽核記錄項目中列出服務專屬資訊。如需使用此欄位的 GCP 服務清單,請參閱服務專屬稽核資料

稽核記錄項目範例

本節會使用稽核記錄項目範例,說明如何找出稽核記錄項目中最重要的資訊。

下列範例是由 Resource Manager 寫入的管理員活動稽核記錄項目,用來記錄名為 my-gcp-project-id 的 Google Cloud Platform 專案中 Cloud Identity and Access Management 政策的變更。為求說明簡潔,我們省略了記錄項目的某些部分,並將某些欄位醒目顯示。

    {
      protoPayload: {
        @type: "type.googleapis.com/google.cloud.audit.AuditLog",
        status: {},
        authenticationInfo: {
          principalEmail: "user@example.com"
        },
        serviceName: "cloudresourcemanager.googleapis.com",
        methodName: "SetIamPolicy",
        authorizationInfo: [...],
        serviceData: {
          @type: "type.googleapis.com/google.iam.v1.logging.AuditData",
          policyDelta: { bindingDeltas: [
              action: "ADD",
              role: "roles/logging.privateLogViewer",
              member: "user:user@example.com"
          ], }
        },
        request: {
          resource: "my-gcp-project-id",
          policy: { bindings: [...], }
        },
        response: {
          bindings: [
            {
              role: "roles/logging.privateLogViewer",
              members: [ "user:user@example.com" ]
            }
          ],
        }
      },
      insertId: "53179D9A9B559.AD6ACC7.B40604EF",
      resource: {
        type: "project",
        labels: { project_id: "my-gcp-project-id" }
      },
      timestamp: "2016-04-27T16:24:56.135Z",
      severity: "NOTICE",
      logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity",
    }

以下是用來選取上述稽核記錄項目範例的篩選器。這個篩選器可在進階檢視器、Stackdriver Logging API 或 Cloud SDK 中使用。專案 ID 會顯示於記錄名稱中,而且由於 logName 欄位已經建立索引,因此篩選速度很快。

resource.type = "project"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

如要從資源類型的單一執行個體 (例如 gce_instance) 中尋找稽核記錄,請加入執行個體限定詞:

resource.type = "gce_instance"
resource.instance_id = "12345678901234567890"
logName = "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity"

解讀稽核記錄項目範例

在上述的稽核記錄項目範例中,protoPayloadinsertIdresourcetimestampseveritylogName 欄位均為 LogEntry 物件的一部分。protoPayload 欄位的值為 AuditLog 物件,會封裝稽核記錄資料。

對於上述的稽核記錄項目範例,您可能會有一些疑問:

  • 這是稽核記錄項目嗎? 是,您可以透過兩種方式辨別。

    • protoPayload.@type 欄位是 type.googleapis.com/google.cloud.audit.AuditLog

    • logName 欄位包含 cloudaudit.googleapis.com 網域。

  • 稽核記錄是由哪一項服務寫入? 該記錄是由 Resource Manager 寫入。這項資訊會列在稽核記錄項目的 protoPayload.serviceName 欄位中。

  • 哪些作業會受到稽核? protoPayload.methodName 欄位指定的 SetIamPolicy 會受到稽核。您可以在 protoPayload.serviceDataAuditData 物件中找到更多有關已稽核作業的資訊。

  • 哪些資源會受到稽核? Google Cloud Platform 專案 my-gcp-project-id 會受到稽核。resource 欄位指定了 project 資源類型和 my-gcp-project-id 專案 ID。您可以在受控資源類型清單中找到 project,並且會發現這是一個 Google 專案。

詳情請參閱 LogEntry 類型AuditLog 類型IAM AuditData 類型

稽核記錄項目較大或執行時間較長

如果作業以非同步的方式執行,或者作業產生較大的 AuditLog 記錄,則經過稽核的單一作業會拆分成多個記錄項目。當同一作業有多個記錄項目時,LogEntry 物件會包含 operation 欄位,而且同一作業的項目會擁有相同的 LogEntry.operation.id 值和 LogEntry.operation.producer 值。

上述的稽核記錄項目範例沒有 operation 欄位,這表示所有稽核資訊都包含在單一記錄項目中。

服務專屬稽核資料

有些服務會在稽核記錄的 AuditLog 欄位中加入補充的資料結構,以增加儲存在其 serviceData 的資訊。下表列出使用 serviceData 欄位的服務,並提供其 AuditData 類型的連結。

服務 服務資料類型
App Engine type.googleapis.com/google.appengine.v1.AuditData
App Engine (舊版) type.googleapis.com/google.appengine.legacy.AuditData
BigQuery type.googleapis.com/google.cloud.bigquery.logging.v1.AuditData
Cloud Identity and Access Management type.googleapis.com/google.iam.v1.logging.AuditData
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver Logging
需要協助嗎?請前往我們的支援網頁