BigQuery 稽核記錄簡介
您可以使用 BigQuery 稽核記錄,監控專案中的管理和資料存取活動。記錄檔是自動建立的文字檔,會記錄執行特定動作 (例如建立資料表或執行工作) 的使用者,有助於維護安全性及確保符合規定。本文說明稽核記錄的使用時機,並概略介紹稽核記錄的格式。
Google Cloud 也會寫入記錄,包括稽核記錄,可深入瞭解與使用 Google Cloud 服務相關的營運問題。如要進一步瞭解 Google Cloud 如何處理記錄,請參閱 Cloud Logging 說明文件和 Cloud 稽核記錄總覽。
稽核記錄與INFORMATION_SCHEMA檢視畫面
Google Cloud 專案的稽核記錄都僅涵蓋直接隸屬於 Google Cloud 專案的資源。資料夾、機構和帳單帳戶等其他 Google Cloud 資源也各有其專屬的稽核記錄。
稽核記錄可協助您瞭解 Google Cloud 資源中「人事時地物」等問題。稽核記錄是使用者系統活動和存取模式的明確資訊來源,應做為稽核或安全問題的主要來源。
BigQuery 中的INFORMATION_SCHEMA 檢視畫面是另一個洞察資訊來源,可與指標和記錄搭配使用。這些檢視畫面包含工作、資料集、資料表和其他 BigQuery 實體的中繼資料。舉例來說,您可以取得指定時間內執行的 BigQuery 工作相關即時中繼資料。然後,您可以依專案、使用者、參照的資料表和其他維度,將結果分組或篩選。
INFORMATION_SCHEMA 檢視畫面提供相關資訊,協助您更詳細地分析 BigQuery 工作負載,例如:
- 指定專案在過去 7 天內,所有查詢的平均運算單元用量是多少?
- 過去 30 分鐘內發生哪些串流錯誤 (依錯誤代碼分組)?
BigQuery 稽核記錄包含 API 呼叫的記錄項目,但不會說明 API 呼叫的影響。部分 API 呼叫會建立工作 (例如查詢和載入),而這些工作的資訊會由 INFORMATION_SCHEMA 檢視畫面擷取。舉例來說,您可以在 INFORMATION_SCHEMA 檢視畫面中找到特定查詢使用的時間和時段資訊,但稽核記錄中不會顯示這類資訊。
如要深入瞭解 BigQuery 工作負載的效能,請參閱工作中繼資料、串流中繼資料和預留位置中繼資料。
如要進一步瞭解 Google Cloud 服務寫入的稽核記錄類型,請參閱「稽核記錄類型」。
稽核記錄格式
Google Cloud 服務會以結構化 JSON 格式寫入稽核記錄。 Google Cloud 記錄檔項目的基本資料類型是 LogEntry 結構。這個結構包含記錄名稱、產生記錄項目的資源、時間戳記 (世界標準時間) 和其他基本資訊。
記錄會在稱為「酬載欄位」的子欄位中,提供記錄事件的詳細資料。如果是稽核記錄,酬載欄位名稱為 protoPayload。這個欄位的類型 (protoPayload.@type) 設為 type.googleapis.com/google.cloud.audit.AuditLog,表示該欄位使用 AuditLog 記錄結構。
針對資料集、資料表和作業,BigQuery 會以兩種不同格式寫入稽核記錄,但兩種格式都共用 AuditLog 基本類型。
舊版格式包含下列欄位和值:
resource.type欄位的值為bigquery_resource。- BigQuery 會在
protoPayload.serviceData欄位中寫入作業的詳細資料。這個欄位的值會使用AuditData記錄結構。
新版格式包含下列欄位和值:
resource.type欄位的值為bigquery_project或bigquery_dataset。bigquery_project資源包含工作相關的記錄項目,bigquery_dataset資源則包含儲存空間相關的記錄項目。- BigQuery 會在
protoPayload.metadata欄位中寫入作業的詳細資料。這個欄位的值會使用BigQueryAuditMetadata結構。
建議您使用新版格式的記錄檔。詳情請參閱「稽核記錄遷移指南」。
以下是記錄項目的簡短範例,顯示作業失敗:
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 5,
"message": "Not found: Dataset myproject:mydataset was not found in location US"
},
"authenticationInfo": { ... },
"requestMetadata": { ... },
"serviceName": "bigquery.googleapis.com",
"methodName": "google.cloud.bigquery.v2.JobService.InsertJob",
"metadata": {
},
"resource": {
"type": "bigquery_project",
"labels": { .. },
},
"severity": "ERROR",
"logName": "projects/myproject/logs/cloudaudit.googleapis.com%2Fdata_access",
...
}
如要對 BigQuery 預留項目執行作業,protoPayload 欄位會使用 AuditLog 結構,而 protoPayload.request 和 protoPayload.response 欄位則會包含更多資訊。您可以在 BigQuery Reservation API 中找到欄位定義。詳情請參閱「監控 BigQuery 預留項目」。
如要深入瞭解稽核記錄格式,請參閱「瞭解稽核記錄」。
限制
記錄訊息的大小上限為 100,000 個位元組。詳情請參閱「遭截斷的記錄項目」。
瀏覽權限和存取控管
BigQuery 稽核記錄可能包含使用者認為機密的資訊,例如 SQL 文字、結構定義,以及資料表和資料集等資源的 ID。如要瞭解如何管理這類資訊的存取權,請參閱 Cloud Logging 的存取權控管說明文件。
後續步驟
- 如要瞭解如何使用 Cloud Logging 稽核與政策標記相關的活動,請參閱「稽核政策標記」。
- 如要瞭解如何使用 BigQuery 分析記錄的活動,請參閱 BigQuery 稽核記錄總覽。