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_projectbigquery_datasetbigquery_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.requestprotoPayload.response 欄位則會包含更多資訊。您可以在 BigQuery Reservation API 中找到欄位定義。詳情請參閱「監控 BigQuery 預留項目」。

如要深入瞭解稽核記錄格式,請參閱「瞭解稽核記錄」。

限制

記錄訊息的大小上限為 100,000 個位元組。詳情請參閱「遭截斷的記錄項目」。

瀏覽權限和存取控管

BigQuery 稽核記錄可能包含使用者認為機密的資訊,例如 SQL 文字、結構定義,以及資料表和資料集等資源的 ID。如要瞭解如何管理這類資訊的存取權,請參閱 Cloud Logging 的存取權控管說明文件

後續步驟