在 SQL Server 適用的 Cloud SQL 中,SQL Server 稽核功能可讓您建立伺服器稽核規格,追蹤及記錄伺服器層級和資料庫層級事件。這項稽核功能可協助您監控機密資料的存取權、偵測可疑活動,並遵循法規。
如要稽核 SQL Server 適用的 Cloud SQL 執行個體的管理和維護作業,請參閱「Cloud 稽核記錄」。如要進一步瞭解 SQL Server 稽核功能,請參閱「SQL Server 稽核 (資料庫引擎)」。
事前準備
啟用資料庫稽核功能前,請先詳閱本節的最佳做法和必要條件。在許多情況下,您可能需要啟用自動增加儲存空間,以便儲存稽核檔案。磁碟空間需求會因稽核類型和保留間隔而異。
稽核檔案的 Cloud Storage bucket
稽核檔案 (稽核記錄) 會上傳至 Cloud Storage bucket 位置。因此,您可能需要建立 Google Cloud 帳戶擁有的 bucket。
或者,您也可以使用其他帳戶擁有的 bucket 位置。啟用稽核功能時,如果您具備必要權限,系統會自動授予 roles/storage.objectAdmin
角色,以便將稽核檔案上傳至指定服務帳戶的 bucket 位置。如果您沒有必要權限,則必須在稍後為服務帳戶授予權限。
啟用稽核功能的有效使用者
如要啟用稽核功能並建立稽核規格,必須有預設的 sqlserver 使用者。建立 SQL Server 適用的 Cloud SQL 執行個體時,系統會為您建立預設的 sqlserver 使用者。
啟用稽核功能
啟用稽核功能時,必須指定 Cloud Storage 位置。以下為選用項目:
- 執行個體的記錄保留期限
- 上傳間隔 (上傳頻率)
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。
- 點選執行個體名稱,開啟執行個體的「Overview」(總覽) 頁面。
- 按一下 [編輯]。
- 在「Customize your instance」(自訂執行個體) 區段中,按一下「Flags and parameters」(旗標和參數)。
- 勾選「Enable SQL Server audit」(啟用 SQL Server 稽核) 旁的核取方塊。
- 指定 Cloud Storage bucket 做為稽核檔案的上傳位置。
- 按一下 [Advanced Options] (進階選項)。
- 您可以視需要指定記錄在磁碟中的保留天數 (1 到 7 天,預設為 7 天)。
- 您也可以指定記錄 (稽核檔案) 的上傳頻率,以分鐘為單位 (1 到 720 分鐘,預設為 10 分鐘)。
- 按一下 [Save] (儲存) 套用您的變更。
gcloud
下列指令可啟用稽核功能:
gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m
下表匯總這項作業的 gcloud 參數:
| 參數 | 說明 | 允許值 | 預設值 |
--audit-bucket-path |
這是必要旗標,稽核檔案的上傳位置 (Cloud Storage bucket)。 | 如果停用稽核功能,則會留空。否則,請使用開頭為 gs:// 的 bucket 路徑 |
空白,因為稽核功能預設為停用。 |
--audit-retention-interval |
選用。磁碟上稽核記錄的保留天數。 | 1 到 7 天。只能以天為單位。 | 7 天。 |
--audit-upload-interval |
選用。上傳稽核記錄 (稽核檔案) 的頻率。 | 1 到 720 分鐘。 | 10 分鐘。 |
REST v1
您可以使用 REST API 啟用執行個體的稽核功能。如下列要求原型所示,您可以指定 Cloud Storage bucket、稽核檔案保留天數,以及稽核檔案上傳頻率。只有 bucket 位置是必要資訊。詳情請參閱 SqlServerAuditConfig:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ "bucket":"gs://mybucket", "retentionInterval":"24h", "uploadInterval":"10m" } } }
REST v1beta4
您可以使用 REST API 啟用執行個體的稽核功能。如下列要求原型所示,您可以指定 Cloud Storage bucket、稽核檔案保留天數,以及稽核檔案上傳頻率。只有 bucket 位置是必要資訊。詳情請參閱 SqlServerAuditConfig:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ "bucket":"gs://mybucket", "retentionInterval":"24h", "uploadInterval":"10m" } } }
停用稽核功能
本節說明停用稽核功能的選項。停用稽核功能後,所有稽核檔案 (包括尚未上傳的檔案) 都會從執行個體中刪除。此外,所有伺服器稽核都會停用,如要繼續稽核,必須重新啟用。視 bucket 的保留設定而定,上傳至 Cloud Storage bucket 的稽核記錄可能會保留。
以下是停用稽核功能的選項。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。
- 點選執行個體名稱,開啟執行個體的「Overview」(總覽) 頁面。
- 按一下 [編輯]。
- 在「Customize your instance」(自訂執行個體) 區段中,按一下「Flags and parameters」(旗標和參數)。
- 取消勾選「Enable SQL Server audit」(啟用 SQL Server 稽核功能) 旁的核取方塊。
- 按一下 [Save] (儲存) 套用您的變更。
gcloud
下列指令會省略 --audit-bucket-path 參數的值,停用稽核功能:
gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=
REST v1
以下是停用稽核的要求原型,其中省略了 sqlServerAuditConfig 物件的欄位:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ } } }
REST v1beta4
以下是停用稽核的要求原型,其中省略了 sqlServerAuditConfig 物件的欄位:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ } } }
自動上傳稽核檔案
啟用稽核功能後,系統會自動將產生的稽核檔案上傳至指定的 Cloud Storage bucket。
產生的稽核檔案也會與執行個體一起儲存,直到設定的保留期限 (間隔) 到期為止。這段期間過後,稽核檔案就會永久刪除,即使是無法上傳的檔案也一樣。
建立伺服器稽核
啟用稽核功能後,預設的 sqlserver 使用者有權建立、修改及刪除伺服器稽核。
使用 CREATE SERVER AUDIT 指令定義新的伺服器稽核。您也可以使用 SQL Server Management Studio (SSMS) 的使用者介面建立伺服器稽核。
所有伺服器稽核都會強制執行下列類別的參數:
| 參數類別 | 允許值 |
| 稽核記錄失敗時 | 繼續或失敗 |
| 稽核目的地 | 檔案 |
| 路徑 | /var/opt/mssql/audit
|
| 檔案大小上限 | 2 至 50 MB |
| 檔案數量上限 | 必須為:未設定 |
| 檔案數量上限 | 必須為:未設定 |
| 保留磁碟空間 | 關閉 |
讀取稽核
以下各節將說明讀取稽核記錄的不同方式。
讀取執行個體的稽核記錄
如要從伺服器稽核建立的稽核檔案擷取資料,可以使用下列預存程序:msdb.dbo.gcloudsql_fn_get_audit_file。msdb.dbo.gcloudsql_fn_get_audit_file 程序接受的參數與 sys.fn_get_audit_file 函式相同。
因此,如要瞭解如何使用該預存程序,請參閱 sys.fn_get_audit_file。
以下是使用 msdb.dbo.gcloudsql_fn_get_audit_file 程序擷取稽核資料的範例:
SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'
這個預存程序較適合中小型資料量。如要讀取大量資料的稽核記錄,建議您使用 Compute Engine 執行個體,從 Cloud Storage 讀取稽核記錄。
讀取 bucket 中的稽核記錄
如要讀取 Cloud Storage bucket 中的稽核記錄,可以將 bucket 中的檔案下載至 SQL Server 執行個體。SQL Server 執行個體可能位於:
- Compute Engine Windows 執行個體
- Compute Engine Linux 執行個體
- 執行 SQL Server 的其他類型執行個體
bucket 中的稽核檔案應轉移至該執行個體可存取的位置,例如本機磁碟。接著,如要從稽核檔案傳回資訊,請使用 serveradmin 固定伺服器角色的成員執行 sys.fn_get_audit_file 函式。舉例來說,如果您從 Windows 執行個體將稽核檔案轉移至 D:\Audit,可以使用類似下方的指令:
SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'
監控指標
您可以透過 Metrics Explorer,監控 Cloud SQL 指標中的稽核相關作業:
- database/sqlserver/audits_upload_count。這項指標代表稽核檔案上傳嘗試總數,包括成功和失敗的嘗試。查看這項指標,監控上傳是否成功。
- database/sqlserver/audits_size. 這項指標表示在測量時,執行個體上儲存的稽核檔案使用了多少磁碟空間。這項指標會提供執行個體上稽核檔案的總大小,以位元組為單位。
最佳做法
- 為避免跨區域移轉大型檔案,請考慮下列事項:
- 建立多區域 Cloud Storage bucket
- 在與執行個體相同的區域中設定目的地 Cloud Storage bucket
- 使用 SQL Server 稽核功能前,建議您啟用自動增加儲存空間功能。稽核檔案可能需要大量磁碟空間,具體取決於檔案總大小和保留間隔。
- 啟用稽核功能後,請確認執行個體可以將稽核檔案上傳至 Cloud Storage bucket。如果設定稽核的要求者不具備將檔案上傳至 Cloud Storage bucket 的必要權限,系統就不會自動授予權限。如要進一步瞭解權限,請參閱下列資源:
- 設定指標警告政策,在上傳失敗和磁碟用量過高時通知您。
- 為避免保留過多稽核檔案太久,請為 Cloud Storage bucket 設定資料保留政策。