本頁面說明如何使用 SQL Server Audit 功能,在 Cloud SQL 中稽核資料庫。
總覽
在 Cloud SQL 中,SQL Server 稽核功能包括:
- 建立伺服器稽核規格
- 追蹤及記錄伺服器層級和資料庫層級事件
如要進一步瞭解 SQL Server 稽核功能,請參閱「SQL Server 稽核 (資料庫引擎)」一文。
事前準備
啟用資料庫稽核功能前,請先詳閱本節的必要條件。
稽核檔案的 Cloud Storage 值區
稽核檔案 (稽核記錄) 會上傳至 Cloud Storage 值區位置。因此,您可能需要建立 Google Cloud 帳戶擁有的儲存空間。
或者,您也可以使用其他帳戶擁有的資料夾位置。啟用稽核功能時,如果您具備必要權限,系統會自動授予 roles/storage.objectAdmin
角色,讓您將稽核檔案上傳至指定服務帳戶的值區位置。如果您沒有必要的權限,請稍後為服務帳戶授予這些權限。
啟用稽核功能的有效使用者
如要啟用稽核功能並建立稽核規格,必須使用預設的 sqlserver
使用者。建立 Cloud SQL for SQL Server 執行個體時,系統會為您建立預設的 sqlserver
使用者。
啟用稽核功能
啟用稽核功能時,必須指定 Cloud Storage 位置。以下為選用項目:
- 執行個體的記錄保留期限
- 上傳間隔 (上傳頻率)
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「Overview」頁面,請按一下執行個體名稱。
- 按一下 [編輯]。
- 在「自訂執行個體」部分,按一下「旗標和參數」。
- 勾選「啟用 SQL Server 稽核」旁的核取方塊。
- 指定 Cloud Storage 值區做為稽核檔案上傳的位置。
- 點選「進階選項」。
- 您可以選擇指定記錄檔保留天數 (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 值區位置。 | 如果稽核功能已停用,則為空白。否則,值區路徑開頭為:gs:// |
空白,因為稽核功能預設為停用。 |
--audit-retention-interval |
(非必要) 稽核記錄在磁碟上的保留天數。 | 1 到 7 天。只能輸入天數。 | 7 天。 |
--audit-upload-interval |
(非必要) 稽核記錄 (稽核檔案) 的上傳頻率。 | 1 至 720 分鐘。 | 10 分鐘。 |
REST v1
您可以使用 REST API 為執行個體啟用稽核功能。如以下要求原型所示,您可以指定 Cloud Storage 值區、稽核檔案保留天數,以及稽核檔案上傳頻率。只有值區位置是必要的,詳情請參閱 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 值區、稽核檔案保留天數,以及稽核檔案上傳頻率。只有值區位置是必要的,詳情請參閱 SqlServerAuditConfig:
{ "databaseVersion":"database-version", "name":"instance-id", "region":"region", "rootPassword":"password", "settings":{ "tier":"machine-type", "sqlServerAuditConfig":{ "bucket":"gs://mybucket", "retentionInterval":"24h", "uploadInterval":"10m" } } }
停用稽核功能
本節提供停用稽核功能的選項。停用稽核功能後,所有稽核檔案 (包括尚未上傳的檔案) 都會從執行個體中刪除。此外,所有伺服器稽核都會停用,如果要繼續稽核,必須重新啟用。視您對值區的保留設定而定,上傳至 Cloud Storage 值區的稽核記錄可能會保留。
以下是停用稽核的選項。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。
- 如要開啟執行個體的「Overview」(總覽) 頁面,請按一下執行個體名稱。
- 按一下 [編輯]。
- 在「自訂執行個體」部分,按一下「旗標和參數」。
- 取消勾選「啟用 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 值區。
產生的稽核檔案也會與執行個體一併儲存,直到設定的保留期限 (間隔) 到期為止。超過這段時間後,稽核檔案將永久刪除,即使是無法上傳的檔案也是如此。
建立伺服器稽核
啟用稽核功能後,預設的 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%'
讀取值區的稽核
如要讀取 Cloud Storage 值區中的稽核記錄,您可以將檔案從值區下載到 SQL Server 執行個體。該 SQL Server 執行個體可能為:
- Compute Engine Windows 執行個體
- Compute Engine Linux 執行個體
- 執行 SQL Server 的其他類型執行個體
從儲存桶傳送的稽核檔案應轉移至可供該執行個體存取的位置,例如本機磁碟。接著,如要傳回稽核檔案中的資訊,請使用 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 值區,或
- 在執行個體所在的區域設定目標 Cloud Storage 值區
- 在使用 SQL Server 稽核功能前,請考慮啟用自動增加儲存空間功能。稽核檔案可能會占用大量磁碟空間,具體取決於檔案總大小和保留間隔。
- 啟用稽核功能後,請確認執行個體可以將稽核檔案上傳至 Cloud Storage 值區。如果設定稽核作業的申請者缺少上傳檔案至 Cloud Storage 值區的必要權限,系統不會自動授予這些權限。
- 設定以指標為依據的快訊政策,以便在上傳失敗和磁碟用量過高時通知您。
- 為避免保留太多審計檔案,請為 Cloud Storage 值區設定資料保留政策。