Spanner Omni 稽核記錄

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 政策檔案,列出要啟用的記錄類型和任何豁免成員,然後套用政策。

  1. 建立名為 policy.json 的政策檔案:

    {
      "auditConfigs": [
        {
          "auditLogConfigs": [
            {
              "logType": "ADMIN_READ",
              "exemptedMembers": [
                "USER_NAME"
              ]
            },
            {
              "logType": "DATA_WRITE"
            },
            {
              "logType": "DATA_READ"
            }
          ],
          "service": "spanner.googleapis.com"
        }
      ]
    }
    
  2. 使用 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 支援 CreateScheduledBackupOptimizeRestoredDatabase 系統事件。不過,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 會在每個伺服器上執行多個程序,例如 serverzone_serviceszonal_zone_serviceszonal_serverbase_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 CloudWatchGrafana LokiElasticsearchDatadogSplunkCloud 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_READDATA_READDATA_WRITE 權限的方法會產生資料存取稽核記錄,而需要 ADMIN_WRITE 權限的方法則會產生管理員活動稽核記錄。

Spanner Omni 支援大部分的 Cloud Spanner API 方法。如要瞭解 Spanner 和 Spanner Omni 共用方法的稽核記錄分類,請參閱 Spanner 說明文件中的「依權限類型區分的方法」。

Spanner Omni 也會推出獨特的 API 方法,用於產生稽核記錄。標示為長時間執行的作業 (LRO) 的方法通常會產生兩個稽核記錄項目,作業開始和結束時各一個。詳情請參閱 Cloud 稽核記錄說明文件中的「長時間執行的作業」。

權限類型 方法
ADMIN_READ google.spanner.omni.v1.OmniAdmin.GetLocation
google.spanner.omni.v1.OmniAdmin.ListLocation
google.spanner.omni.v1.OmniAdmin.GetLocationDistance
google.spanner.omni.v1.OmniAdmin.ListLocationDistance
google.spanner.omni.v1.OmniAdmin.GetZone
google.spanner.omni.v1.OmniAdmin.ListZones
google.spanner.omni.v1.OmniAdmin.GetServer
google.spanner.omni.v1.OmniAdmin.ListServers
google.spanner.omni.v1.OmniAdmin.GetDeployment
google.spanner.omni.v1.OmniAdmin.ListBackupDescriptors
google.spanner.omni.v1.OmniAdmin.GetExternalStorage
google.spanner.omni.v1.OmniAdmin.ListExternalStorages
google.spanner.omni.v1.OmniAdmin.GetIamPolicy
google.spanner.omni.v1.UsersService.GetUser
google.spanner.omni.v1.UsersService.ListUsers
google.spanner.omni.v1.UsersService.GetRole
google.spanner.omni.v1.UsersService.ListRoles
ADMIN_WRITE google.spanner.omni.v1.OmniAdmin.CreateLocation
google.spanner.omni.v1.OmniAdmin.DeleteLocation
google.spanner.omni.v1.OmniAdmin.CreateLocationDistance
google.spanner.omni.v1.OmniAdmin.UpdateLocationDistance
google.spanner.omni.v1.OmniAdmin.DeleteLocationDistance
google.spanner.omni.v1.OmniAdmin.CreateZone
google.spanner.omni.v1.OmniAdmin.DeleteZone
google.spanner.omni.v1.OmniAdmin.CreateServer
google.spanner.omni.v1.OmniAdmin.DeleteServer
google.spanner.omni.v1.OmniAdmin.CreateExternalStorage
google.spanner.omni.v1.OmniAdmin.DeleteExternalStorage
google.spanner.omni.v1.OmniAdmin.SetIamPolicy
google.spanner.omni.v1.OmniAdmin.ImportBackup (LRO)
google.spanner.omni.v1.UsersService.CreateUser
google.spanner.omni.v1.UsersService.DeleteUser
google.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_READDATA_READDATA_WRITE) 啟用資料存取稽核記錄,並支援將特定使用者排除在記錄範圍之外。

後續步驟