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,為部署作業設定 Identity and Access Management (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 支援 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 中,呼叫端的身分是執行 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.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 中。Spanner Omni 會保留本機稽核記錄檔最多 14 天,或直到達到磁碟大小限制為止,並依賴您將記錄匯出至外部系統以長期儲存。

相似處

  • 記錄格式:兩項產品都會以 JSON 格式寫入稽核記錄,並遵循標準的 Google Cloud AuditLog 結構。

  • 資料存取設定:這兩項產品都可讓您依權限類型 (ADMIN_READ、DATA_READ、DATA_WRITE) 啟用資料存取稽核記錄,並支援免除特定使用者記錄。

後續步驟