Spanner Omni 會寫入稽核記錄,記錄 Spanner Omni 部署作業中的管理活動和資料存取行為。
稽核記錄可協助您回答「人事時地物」的問題。稽核記錄可協助安全性、稽核和法規遵循實體監控 Spanner Omni 資料和系統,防範可能的安全漏洞或外部資料濫用情形。
事前準備
使用 TLS 或相互 TLS (mTLS) 加密功能設定 Spanner Omni 部署作業。如果您建立的部署作業沒有 TLS 或 mTLS 加密,系統就不會產生稽核記錄。如需建立採用 TLS 或 mTLS 加密機制的部署作業的操作說明,請參閱下列文章:
稽核記錄類型
Spanner Omni 支援下列類型的稽核記錄。
管理員活動稽核記錄
管理員活動稽核記錄會記錄修改部署作業設定或中繼資料的 API 呼叫。舉例來說,使用者建立資料庫時,Spanner Omni 會寫入管理員活動稽核記錄。
如果部署作業設定了 TLS 和 mTLS 加密,系統預設會產生管理員活動稽核記錄。無法設定、排除或停用。
如需會寫入管理員活動稽核記錄的方法清單,請參閱「依權限類型列出的方法」。
資料存取稽核記錄
資料存取稽核記錄會記錄讀取部署作業設定或中繼資料的 API 呼叫,以及建立、修改或讀取使用者資料的 API 呼叫。舉例來說,當使用者描述資料庫、執行 SQL 查詢或執行資料操控語言 (DML) 陳述式時,Spanner Omni 會寫入資料存取稽核記錄。
資料存取稽核記錄預設為停用,因為這些記錄可能相當龐大。如要記錄資料存取事件,請明確啟用並設定這類事件。資料存取稽核記錄可協助 Google 支援團隊排解問題,因此建議您啟用這項功能。
如需設定這些記錄的操作說明,請參閱「設定資料存取稽核記錄」。如需會寫入資料存取稽核記錄的方法清單,請參閱「依權限類型列出的方法」。
系統事件稽核記錄
系統事件稽核記錄會記錄系統在未經使用者直接操作的情況下,修改 Spanner Omni 資源設定的動作。舉例來說,當系統自動最佳化新還原的資料庫,或建立排程備份時,Spanner Omni 會寫入系統事件稽核記錄。
如果部署作業設定了 TLS 和 mTLS 加密,系統預設會產生系統事件稽核記錄。無法設定、排除或停用。
如要進一步瞭解產生這些記錄的系統事件,請參閱「系統事件」。
設定資料存取稽核記錄
如要啟用資料存取稽核記錄,請使用 Spanner Omni CLI 或 API,為部署作業設定身分與存取權管理 (IAM) 政策。您可以針對特定權限類型啟用記錄功能,並免除特定使用者記錄。
所需權限
如要設定資料存取稽核記錄,您需要 spanner.instances.setIamPolicy 權限。
如要查看資料存取稽核記錄設定,您需要 spanner.instances.getIamPolicy 權限。
權限類型
API 方法會檢查 IAM 權限,且每項權限都有相關聯的權限類型。設定資料存取稽核記錄時,請指定要記錄的權限類型。權限類型可分為以下幾類:
資料存取權類型:
ADMIN_READ:記錄讀取中繼資料或設定資訊的 API 方法。例如描述資料庫。DATA_READ:記錄讀取使用者資料的 API 方法。例如執行 SQL 查詢。DATA_WRITE:記錄寫入使用者資料的 API 方法。例如執行 DML 陳述式。
管理員活動權限類型:
ADMIN_WRITE:檢查是否為寫入中繼資料或設定資訊的 API 方法 (例如建立資料庫)。這些記錄會產生管理員活動稽核記錄,且無法設定。
如需權限類型的詳細說明,請參閱 Cloud 稽核記錄說明文件中的「權限類型」。
使用 Spanner Omni CLI 進行設定
如要使用 Spanner Omni CLI 設定資料存取稽核記錄,請建立 JSON 政策檔案,列出要啟用的記錄類型和任何豁免成員,然後套用政策。
建立名為
policy.json的政策檔案:{ "auditConfigs": [ { "auditLogConfigs": [ { "logType": "ADMIN_READ", "exemptedMembers": [ "USER_NAME" ] }, { "logType": "DATA_WRITE" }, { "logType": "DATA_READ" } ], "service": "spanner.googleapis.com" } ] }使用
spanner instances set-iam-policy指令套用政策:spanner instances set-iam-policy default policy.json
如要查看目前的資料存取稽核記錄設定,請執行下列指令:
spanner instances get-iam-policy default
如需常見設定用途的更多範例,請參閱 Cloud 稽核記錄說明文件中的「設定資料存取稽核記錄」。
系統事件
Spanner Omni 會針對 Spanner 管理版本支援的大部分系統事件,產生系統事件稽核記錄。詳情請參閱 Spanner 說明文件中的「系統事件」。
Spanner Omni 支援 CreateScheduledBackup 和 OptimizeRestoredDatabase 系統事件。不過,Spanner Omni 不支援 AutoscaleInstance 系統事件,因為 Spanner Omni 不提供自動調度資源功能。
稽核記錄檔和保留期
Spanner Omni 會將稽核記錄寫入 Spanner Omni 伺服器的本機檔案系統。
使用下列路徑和命名慣例尋找稽核記錄檔:
BASE_DIR/logs/PROCESS/audit.log.BUCKET.TIMESTAMP.PROCESS_ID
BASE_DIR:啟動 Spanner Omni 部署作業時指定的基底目錄。如果是 Kubernetes 部署作業,預設值為/spanner。PROCESS:Spanner Omni 會在每個伺服器上執行多個程序,例如server、zone_services、zonal_zone_services、zonal_server和base_services。稽核記錄會寫入產生記錄的程序所對應的目錄。BUCKET:管理員活動和系統事件稽核記錄會寫入required值區,而資料存取稽核記錄則會寫入default值區。TIMESTAMP:檔案建立時間的時間戳記。PROCESS_ID:寫入稽核記錄的程序 ID。
當目前檔案超過 50 MiB,或伺服器程序重新啟動時,Spanner Omni 會建立新的稽核記錄檔。此外,系統也會自動維護從 BASE_DIR/logs/PROCESS/audit.log.BUCKET 到正在寫入的稽核記錄檔的符號連結。
本機稽核記錄檔的存取權是由檔案系統存取控管清單 (ACL) 所控管。只要有權登入伺服器並存取這些檔案,就能查看稽核記錄。
建議您限制 Spanner Omni VM 的存取權 (例如限制 SSH 存取權及設定檔案系統 ACL),確保只有授權人員可以查看記錄。如要長期儲存、稽核及符合法規遵循要求,請使用記錄代理程式 (例如 Fluentd) 收集稽核記錄,並匯出至外部記錄系統,例如 AWS CloudWatch、Grafana Loki、Elasticsearch、Datadog、Splunk 或 Cloud Monitoring。
檔案保留
Spanner Omni 會對本機稽核記錄檔強制執行大小和時間的保留政策:
大小限制:稽核記錄檔會保留到磁碟總用量超過 1 GB 為止。如果記錄目錄使用獨立磁碟,稽核記錄檔會分配到該磁碟總空間的 25% 配額。
保留期限:稽核記錄檔最多可保留 14 天,但前提是未超過大小限制。
達到任一上限時,Spanner Omni 會優先刪除最舊的記錄檔。如需將稽核記錄保留超過 14 天,請將記錄匯出至外部記錄系統。
稽核記錄項目結構
Spanner Omni 稽核記錄項目會以 JSON 格式呈現,並使用與 Spanner 相同的結構定義。詳情請參閱 Cloud 稽核記錄說明文件中的「稽核記錄項目結構」。
記錄檔名稱
與多租戶代管版 Spanner 不同,Spanner Omni 會在專屬伺服器上以單一租戶部署的形式執行。由於這些伺服器上沒有其他租戶或專案,因此所有稽核記錄項目都會使用專案 ID default。
projects/default/logs/cloudaudit.googleapis.com/activity
projects/default/logs/cloudaudit.googleapis.com/data_access
projects/default/logs/cloudaudit.googleapis.com/system_event
呼叫端身分
稽核記錄會記錄執行記錄作業的使用者身分。
呼叫端的 ID 會儲存在 AuditLog 物件的 AuthenticationInfo 欄位中。
在 Spanner Omni 中,呼叫端的 ID 是執行 API 呼叫的已驗證使用者名稱。如要瞭解如何建立及管理使用者,請參閱「驗證和授權」。
呼叫端的 IP 位址
Spanner Omni 不支援在稽核記錄中記錄呼叫端的 IP 位址。
依權限類型區分的方法
呼叫 API 方法時,Spanner Omni 會根據執行該方法所需的權限類型,產生稽核記錄。需要 ADMIN_READ、DATA_READ 或 DATA_WRITE 權限的方法會產生資料存取稽核記錄,而需要 ADMIN_WRITE 權限的方法則會產生管理員活動稽核記錄。
Spanner Omni 支援大部分的 Cloud Spanner API 方法。如要瞭解 Spanner 和 Spanner Omni 共用方法的稽核記錄分類,請參閱 Spanner 說明文件中的「依權限類型區分的方法」。
Spanner Omni 也會推出獨特的 API 方法,用於產生稽核記錄。標示為長時間執行的作業 (LRO) 的方法通常會產生兩個稽核記錄項目,作業開始和結束時各一個。詳情請參閱 Cloud 稽核記錄說明文件中的「長時間執行的作業」。
| 權限類型 | 方法 |
|---|---|
ADMIN_READ |
google.spanner.omni.v1.OmniAdmin.GetLocationgoogle.spanner.omni.v1.OmniAdmin.ListLocationgoogle.spanner.omni.v1.OmniAdmin.GetLocationDistancegoogle.spanner.omni.v1.OmniAdmin.ListLocationDistancegoogle.spanner.omni.v1.OmniAdmin.GetZonegoogle.spanner.omni.v1.OmniAdmin.ListZonesgoogle.spanner.omni.v1.OmniAdmin.GetServergoogle.spanner.omni.v1.OmniAdmin.ListServersgoogle.spanner.omni.v1.OmniAdmin.GetDeploymentgoogle.spanner.omni.v1.OmniAdmin.ListBackupDescriptorsgoogle.spanner.omni.v1.OmniAdmin.GetExternalStoragegoogle.spanner.omni.v1.OmniAdmin.ListExternalStoragesgoogle.spanner.omni.v1.OmniAdmin.GetIamPolicygoogle.spanner.omni.v1.UsersService.GetUsergoogle.spanner.omni.v1.UsersService.ListUsersgoogle.spanner.omni.v1.UsersService.GetRolegoogle.spanner.omni.v1.UsersService.ListRoles
|
ADMIN_WRITE |
google.spanner.omni.v1.OmniAdmin.CreateLocationgoogle.spanner.omni.v1.OmniAdmin.DeleteLocationgoogle.spanner.omni.v1.OmniAdmin.CreateLocationDistancegoogle.spanner.omni.v1.OmniAdmin.UpdateLocationDistancegoogle.spanner.omni.v1.OmniAdmin.DeleteLocationDistancegoogle.spanner.omni.v1.OmniAdmin.CreateZonegoogle.spanner.omni.v1.OmniAdmin.DeleteZonegoogle.spanner.omni.v1.OmniAdmin.CreateServergoogle.spanner.omni.v1.OmniAdmin.DeleteServergoogle.spanner.omni.v1.OmniAdmin.CreateExternalStoragegoogle.spanner.omni.v1.OmniAdmin.DeleteExternalStoragegoogle.spanner.omni.v1.OmniAdmin.SetIamPolicygoogle.spanner.omni.v1.OmniAdmin.ImportBackup (LRO)google.spanner.omni.v1.UsersService.CreateUsergoogle.spanner.omni.v1.UsersService.DeleteUsergoogle.spanner.omni.v1.UsersService.UpdateUser
|
DATA_READ |
google.spanner.omni.v1.ImportExportService.ExportDatabase
(LRO)
|
DATA_WRITE |
google.spanner.omni.v1.ImportExportService.ImportDatabase
(LRO)
|
不會產生稽核記錄的方法
Spanner Omni 會從稽核記錄中排除與 Spanner 相同的方法。這些方法遭到排除,是因為這些方法的使用量高,若產生稽核記錄,會導致記錄與儲存成本過高,稽核價值不高,或是因為其他稽核記錄或平台記錄已涵蓋該方法的活動。如需這些排除方法的完整清單,請參閱 Spanner 說明文件中的「豁免方法」。
此外,google.spanner.omni.v1.LoginService.Login 方法不會產生稽核記錄,因為該方法會在驗證和授權檢查之前執行。
處理時間
稽核記錄中的處理時間長度欄位會記錄 API 的處理時間長度,例如執行 SQL 查詢的時間長度,而非寫入稽核記錄的延遲時間。詳情請參閱 Spanner 說明文件中的「處理時間」。
與 Spanner 的代管版本比較
雖然 Spanner Omni 的稽核記錄與 Spanner 具有相同的核心概念和格式,但在記錄的儲存、設定和管理方式方面,兩者有幾項重要差異。
相異處
記錄目的地:Spanner Omni 會直接將稽核記錄寫入 Spanner Omni 伺服器的本機檔案系統,而不是匯出至 Cloud Logging。
設定:在 Spanner 中,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Identity and Access Management API,在專案層級設定資料存取稽核記錄。在 Spanner Omni 中,您可以使用 Spanner Omni CLI 或 Spanner Omni API 設定資料存取稽核記錄。
TLS 和 mTLS 加密:Spanner 預設會強制執行 TLS 加密,且無法停用。在 Spanner Omni 中,如果選擇部署時不使用 TLS 或 mTLS 加密,系統就不會產生稽核記錄。
保留:Spanner 稽核記錄會依據 Logging 保留設定,保留在 Logging 中。Spanner Omni 最多會保留本機稽核記錄檔 14 天,或直到達到磁碟大小限制為止,並依賴您將記錄檔匯出至外部系統,以長期儲存。
相似處
記錄格式:這兩項產品都會以 JSON 格式寫入稽核記錄,並遵循標準的 Google Cloud AuditLog 結構。
資料存取設定:這兩項產品都支援依權限類型 (
ADMIN_READ、DATA_READ、DATA_WRITE) 啟用資料存取稽核記錄,並支援將特定使用者排除在記錄範圍之外。