本頁面詳細說明 Cloud 稽核記錄項目的結構,以及讀取和解讀方式。
Cloud 稽核記錄會為每個 Google Cloud 專案、資料夾和機構提供下列稽核記錄:
- 管理員活動稽核記錄
- 資料存取稽核記錄
- 系統事件稽核記錄
- 政策遭拒的稽核記錄
如需 Cloud 稽核記錄的概要總覽,請參閱 Cloud 稽核記錄。
稽核記錄項目的格式
稽核記錄項目是一種 Cloud Logging 記錄項目的類型。與所有 Logging 記錄項目相同,稽核記錄項目會儲存在 LogEntry
物件中。稽核記錄項目與其他記錄項目的區別在於 protoPayload
欄位。在稽核記錄項目中,記錄項目的 protoPayload
欄位具有儲存稽核記錄資料的 AuditLog
物件。
簡而言之,每個稽核記錄項目都包含下列資訊:
- 擁有記錄項目的專案、資料夾或機構。
- 套用記錄項目的資源。這項資訊包括受控資源清單中的資源類型,以及其他表示特定執行個體的值。舉例來說,您可以從單一 Compute Engine VM 執行個體,或從所有 VM 執行個體查看稽核記錄項目。
- 時間戳記。
服務:服務是個別的 Google Cloud 產品,例如 Compute Engine、Cloud SQL 或 Pub/Sub。每項服務均由名稱識別:Compute Engine 是
compute.googleapis.com
,Cloud SQL 是cloudsql.googleapis.com
,依此類推。這項資訊會列在稽核記錄項目的protoPayload.serviceName
欄位中。多種資源類型屬於單一服務,但一項服務可以擁有多種資源類型。如需服務和資源清單,請參閱服務與資源之間的對應關係一節。
酬載,即
protoPayload
類型。每個稽核記錄項目的酬載都是AuditLog
類型的物件,定義一組 Cloud 稽核記錄專屬欄位,例如serviceName
和authenticationInfo
。該類型也有選用欄位metadata
,以便 Google Cloud 服務在稽核記錄項目中列出服務專屬資訊。部分 Google Cloud 服務仍會使用舊版serviceData
欄位列出服務專屬資訊。如需使用serviceData
欄位的服務清單,請參閱服務專屬稽核資料。記錄名稱:稽核記錄項目屬於帳單帳戶、專案、資料夾和機構內的記錄。下表列出記錄名稱:
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
在帳單帳戶、專案、資料夾或機構中,這些記錄名稱通常會縮寫為「activity」、「data_access」、「system_event」和「policy」。
稽核記錄項目範例
本節會使用稽核記錄項目範例,說明如何找出稽核記錄項目中最重要的資訊。
下列範例是由 App Engine 寫入的管理員活動稽核記錄項目,用來記錄身分與存取權管理 (IAM) 政策的變更,其中包含 PROJECT_ID my-gcp-project-id
。為求說明簡潔,我們省略了記錄項目的某些部分,並將某些欄位醒目顯示。
{ protoPayload: { @type: "type.googleapis.com/google.cloud.audit.AuditLog", status: {}, authenticationInfo: { principalEmail: "user@example.com" }, serviceName: "appengine.googleapis.com", methodName: "SetIamPolicy", authorizationInfo: [...], serviceData: { @type: "type.googleapis.com/google.appengine.legacy.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: "gae_app", labels: { project_id: "my-gcp-project-id" } }, timestamp: "2019-05-27T16:24:56.135Z", severity: "NOTICE", logName: "projects/my-gcp-project-id/logs/cloudaudit.googleapis.com%2Factivity", }
以下是用來選取先前稽核記錄項目範例的查詢。您可以在記錄檔探索工具、Logging API 或 Google Cloud CLI 中使用查詢。專案 ID 位於記錄名稱中:
resource.type = "gae_app" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
如要從資源類型的單一執行個體 (例如 gce_instance
) 中尋找稽核記錄,請加入執行個體限定詞:
resource.type = "gce_instance" resource.instance_id = "INSTANCE_ID" logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
解讀稽核記錄項目範例
在先前的稽核記錄項目範例中,protoPayload
、insertId
、resource
、timestamp
、severity
和 logName
欄位均為 LogEntry
物件的一部分。protoPayload
欄位的值為 AuditLog
物件。會封裝稽核記錄資料。
對於上述的稽核記錄項目範例,您可能會有一些疑問:
這是稽核記錄項目嗎?是,您可以透過兩種方式辨別。
protoPayload.@type
欄位為type.googleapis.com/google.cloud.audit.AuditLog
。logName
欄位包含網域cloudaudit.googleapis.com
。
稽核記錄是由哪一項服務寫入?記錄是由 App Engine 寫入。這項資訊會列在稽核記錄項目的
protoPayload.serviceName
欄位中。哪些作業會受到稽核?
protoPayload.methodName
欄位指定的SetIamPolicy
會受到稽核。您可以在protoPayload.serviceData
的AuditData
物件中找到更多有關已稽核作業的資訊。哪些資源會受到稽核?系統正在稽核與 Google Cloud 專案
my-gcp-project-id
相關聯的 App Engine 應用程式。您可以從resource
欄位判斷,該欄位會指定資源類型gae_app
和專案 IDmy-gcp-project-id
。在本例中,您可以在受監控資源類型清單中找到資源類型詳細資料。
詳情請參閱 LogEntry
類型、AuditLog
類型和 IAM AuditData
類型。
長時間執行的作業的稽核記錄
長時間執行的作業 API 會發出兩則稽核記錄,一則是在呼叫 API 並啟動作業時發出,另一則是在作業完成時發出。
在這個情況下,LogEntry
物件包含 operation
欄位。同一作業的記錄項目具有相同的 LogEntry.operation.id
和 LogEntry.operation.producer
值。第一個寫入的記錄項目有 LogEntry.operation.first=true
,完成記錄項目則有 LogEntry.operation.last=true
。
如果作業立即完成或失敗,則只有一個記錄項目,其中包含 LogEntry.operation.first=true
和 LogEntry.operation.last=true
。
如果作業失敗,部分服務不會填入 LogEntry.operation
欄位。不過,您可以參閱服務的稽核記錄文件,判斷哪些作業是長時間執行的作業。
這些 API 會實作「作業」服務。一般來說,這項服務在呼叫時會發出稽核記錄項目。視呼叫的 API 而定,protoPayload.methodName
是下列其中一項:
google.longrunning.Operations.ListOperations
google.longrunning.Operations.GetOperation
google.longrunning.Operations.CancelOperation
google.longrunning.Operations.WaitOperation
google.longrunning.Operations.DeleteOperation
由於這個 API 會傳回長時間執行作業的中繼資料,但本身並非長時間執行作業,因此本例中未指定 LogEntry.operation
。
如要瞭解哪些 API 會受到稽核,請參閱Google Cloud 含有稽核記錄的服務,因為各項服務的稽核對象可能不同。
串流 API 的稽核記錄
與長時間執行的作業類似,串流 API 會發出兩筆稽核記錄項目:一筆是在首次呼叫 API 時,另一筆則是在串流連線結束時。
在這種情況下,LogEntry
物件會包含 operation
欄位,且同一作業的記錄項目會擁有相同的 LogEntry.operation.id
和 LogEntry.operation.producer
值。第一個寫入的記錄會包含 LogEntry.operation.first=true
,
完成記錄則會包含 LogEntry.operation.last=true
。
這個 API 也可能會發出不含 LogEntry.operation.first
和 LogEntry.operation.last
的續傳記錄項目,表示串流仍處於開啟狀態。
服務專屬稽核資料
部分服務會將補充資料結構放在稽核記錄項目的 serviceData
欄位中,藉此擴充 AuditLog
儲存的資訊。下表列出使用 serviceData
欄位的服務,並提供其 AuditData
類型的連結。
查看稽核記錄
您可以查詢所有稽核記錄,也可以依稽核記錄名稱查詢記錄。稽核記錄名稱包含您要查看稽核記錄資訊的 Google Cloud 專案、資料夾、帳單帳戶或機構的資源 ID。查詢可以指定已建立索引的 LogEntry
欄位。
如要進一步瞭解如何查詢記錄,請參閱「在 Logs Explorer 中建構查詢」。
您可以使用記錄檔探索工具,查看及篩選個別記錄項目。如要使用 SQL 分析記錄檔項目群組,請使用「記錄檔分析」頁面。如需詳細資訊,請參閱:
您可以使用Google Cloud 控制台、Google Cloud CLI 或 Logging API,在 Cloud Logging 中查看大部分的稽核記錄。不過,如要查看與帳單相關的稽核記錄,只能使用 Google Cloud CLI 或 Logging API。
控制台
在 Google Cloud 控制台中,您可以使用「記錄檔探索工具」擷取 Google Cloud 專案、資料夾或機構的稽核記錄項目:
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
選取現有的 Google Cloud 專案、資料夾或機構。
如要顯示所有稽核記錄,請在查詢編輯器欄位中輸入下列任一查詢,然後按一下「執行查詢」:
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
如要顯示特定資源和稽核記錄類型的稽核記錄,請在「查詢產生器」窗格中執行下列操作:
在「資源類型」中,選取要查看稽核記錄的 Google Cloud 資源。
在「記錄名稱」中,選取要查看的稽核記錄類型:
- 如要查看管理員活動稽核記錄,請選取「activity」。
- 如要查看資料存取稽核記錄,請選取「data_access」data_access。
- 如要查看系統事件稽核記錄,請選取「system_event」system_event。
- 如要查看「政策遭拒」稽核記錄,請選取「政策」。
點選「執行查詢」
如果沒有看到這些選項,表示 Google Cloud 專案、資料夾或機構中沒有這類型的稽核記錄。
如果無法在記錄檔探索工具中查看記錄,請參閱疑難排解資訊。
如要進一步瞭解如何使用記錄檔探索工具查詢,請參閱「在記錄檔探索工具中建構查詢」。
gcloud
Google Cloud CLI 提供 Logging API 的指令列介面。並在每個記錄名稱中提供有效的資源 ID。舉例來說,如果查詢包含 PROJECT_ID,則您提供的專案 ID 必須參照目前選取的Google Cloud 專案。
如要讀取 Google Cloud 專案層級的稽核記錄項目,請執行下列指令:
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \ --project=PROJECT_ID
如要讀取資料夾層級的稽核記錄項目,請執行下列指令:
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \ --folder=FOLDER_ID
如要讀取機構層級的稽核記錄項目,請執行下列指令:
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \ --organization=ORGANIZATION_ID
如要讀取 Cloud Billing 帳戶層級的稽核記錄項目,請執行下列指令:
gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \ --billing-account=BILLING_ACCOUNT_ID
在指令中加入 --freshness
旗標,即可讀取超過 1 天前的記錄。
如要進一步瞭解如何使用 gcloud CLI,請參閱
gcloud logging read
。
REST
建構查詢時,請在每個記錄名稱中提供有效的資源 ID。舉例來說,如果查詢包含 PROJECT_ID,則您提供的專案 ID 必須參照目前選取的Google Cloud 專案。
舉例來說,如要使用 Logging API 查看專案層級的稽核記錄項目,請按照下列步驟操作:
前往
entries.list
方法說明文件中的「Try this API」(試用這個 API) 區段。將下列內容放入「Try this API」(試用這個 API) 表單的「Request body」(要求主體) 部分。按一下這份已預先填入資料的表單就能自動填入要求主體,但您必須在每個記錄名稱中提供有效的 PROJECT_ID。
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
按一下 [Execute] (執行)。