適用於:✅Microsoft Fabric 中的 SQL 資料庫
在 Fabric 中對 SQL 資料庫進行稽核是一項關鍵的安全與合規功能,使組織能夠追蹤並記錄資料庫活動。 稽核透過協助回答「誰何地、何時及如何存取何種資料」等問題,支持合規、威脅偵測及鑑識調查。
什麼是 SQL 稽核?
SQL 稽核是指捕捉並儲存與資料庫活動相關的事件的過程。 這些事件包括資料存取、架構變更、權限修改及認證嘗試。
在 Fabric 中,稽核工作於資料庫層級,並支援:
- 合規監控(例如:HIPAA、SOX)
- 安全調查
- 營運洞察
審計目標
稽核日誌會寫入 OneLake 的唯讀資料夾,並可使用 sys.fn_get_audit_file_v2 T-SQL 函式或 OneLake Explorer 查詢。
對於 Fabric 中的 SQL 資料庫,稽核日誌儲存在 OneLake: https://onelake.blob.fabric.microsoft.com/{workspace_id}/{artifact_id}/Audit/sqldbauditlogs/
這些日誌不可更改,且需適當權限的使用者可存取。 日誌也可透過 OneLake Explorer 或 Azure 儲存體總管 下載。
帳單管理
目前,將稽核日誌寫給 Fabric OneLake 不會產生額外費用,儲存空間也包含在容量的 OneLake 儲存限制中。
設定選項
預設情況下, 「審核所有」 選項會捕捉所有事件,包括批次完成以及成功與失敗的認證。
若更具選擇性,可從預先設定的稽核情境中選擇,例如: 權限變更與登入嘗試、 資料讀寫,以及/或 架構變更。
每個預先設定的情境都會對應到特定的稽核行動群組(例如, SCHEMA_OBJECT_ACCESS_GROUP、 DATABASE_PRINCIPAL_CHANGE_GROUP)。 你也可以在 自訂事件中選擇要審核哪些事件。 您可以選擇個別行動群組,根據需求調整稽核。 此選項非常適合擁有嚴格內部安全政策的組織。
為了過濾常見或已知的存取查詢,你可以在 Transact-SQL(T-SQL)中提供謂詞表達式,根據條件過濾審計事件(例如排除 SELECT 語句): WHERE statement NOT LIKE '%select%'
權限
要使用 Fabric 工作區角色管理稽核(建議),你必須擁有 Fabric 工作區 貢獻 者角色或更高權限。
使用 SQL 權限管理稽核:
- 要設定資料庫稽核,您必須擁有 ALTER ANY DATABASE AUDIT 權限。
- 要使用 T-SQL 查看稽核日誌,您必須擁有 VIEW DATABASE SECURITY AUDIT 權限。
保留率
預設情況下,稽核資料會被永久保留,除非你設定自訂保留期,讓日誌在此期間後自動刪除。
Fabric 目前將審計日誌儲存在 OneLake 的項目資料夾中,並設定範圍至項目生命週期。 如果你刪除該項目,Fabric 也會刪除它的稽核日誌。 如果你需要獨立於項目生命週期的保留,請使用 AzCopy 或 SSDT 等工具將稽核日誌移到不同的儲存位置(例如另一個 Lakehouse 或 Azure 儲存帳號)。
還原後的設定保留
還原操作後,稽核設定會被保留,但稽核必須在 Fabric SQL 資料庫中重新啟用。 在Fabric入口中,開啟 Manage SQL auditing,選擇 Save。
從 Fabric 入口網站配置 SQL 資料庫的稽核設定
要開始審核 Fabric SQL 資料庫:
- 在 Fabric 入口網站中開啟你的 SQL 資料庫。
- 從主選單中選擇 「安全 」標籤,然後選擇 「管理 SQL 稽核」。
- 「 管理 SQL 稽核 」面板打開。
- 選擇 「將事件儲存為 SQL 稽核日誌 」按鈕以啟用稽核功能。
- 在 資料庫事件 區塊中設定要記錄的事件。 選擇「 審核所有」(預設) 以捕捉所有事件。
- 可選擇性地在 保留政策下設定保留政策。
- 可選擇性地在 謂詞 表達式欄位中設定一個 T-SQL 指令的謂詞表達式,使其忽略。
- 選取 [儲存]。
查詢稽核記錄
稽核日誌可使用 T-SQL 函式 sys.fn_get_audit_file 與 sys.fn_get_audit_file_v2 查詢。
在下列指令碼中,您需要提供工作區識別碼和資料庫識別碼。 兩者都可以在 Fabric 入口網站的網址中找到。 例如: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id> 。 URL 中的第一個唯一識別字串是 Fabric 工作區 ID,第二個唯一識別字串是 SQL 資料庫 ID。
- 請將
<fabric_workspace_id>替換為您的 Fabric 工作區識別碼。 你可以在網址中找到工作區的 ID,就是瀏覽器視窗中/兩個字元內/groups/唯一的字串。 - 將
<fabric sql database id>替換為 SQL 資料庫的 Fabric 資料庫識別碼。 你可以在網址中找到資料庫項目的 ID,它是瀏覽器視窗中/兩個字元內/sqldatabases/唯一的字串。
例如:
SELECT * FROM sys.fn_get_audit_file_v2(
'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
DEFAULT, DEFAULT, DEFAULT, DEFAULT );
此範例取出介於 2025-11-17T08:40:40Z 與 2025-11-17T09:10:40Z之間的稽核日誌。
SELECT *
FROM sys.fn_get_audit_file_v2(
'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
DEFAULT,
DEFAULT,
'2025-11-17T08:40:40Z',
'2025-11-17T09:10:40Z')
更多資訊請參閱 sys.fn_get_audit_file 與 sys.fn_get_audit_file_v2。
使用 REST API 管理稽核
你也可以使用 Fabric REST API 以程式方式檢視並設定 SQL 資料庫稽核設定。 REST API 讓你能使用 PowerShell 腳本,在工作空間中所有資料庫中一致地管理稽核。
欲了解更多資訊,請參閱 「使用 REST API 管理 SQL 資料庫稽核」。
保護審計日誌中的敏感資訊
當你透過直接將輸入值串接到 SQL 語句中來建構動態 SQL,這些值就會成為語句文本的一部分。 如果您審核該帳單,稽核日誌可能會捕捉到帳單文本中包含的敏感資訊。
為降低洩漏敏感資訊的風險,請遵循以下做法:
避免用於包含敏感值的動態 SQL 操作
對於安全敏感的管理操作,避免將敏感值串接到動態 SQL 中來構建語句。 若可能,請使用原生 SQL 陳述式或其他防止敏感值直接嵌入語句文字的方法。
由使用者可存取字串構成的動態 SQL 語句,也會讓你的應用程式容易受到 SQL 注入攻擊。 SQL 注入是一種攻擊,將惡意程式碼插入字串,然後再傳送到資料庫進行解析與執行。 你必須測試任何構建 T-SQL 以防 SQL 注入漏洞的程序,因為資料庫引擎會執行所有語法上有效的查詢。 使用參數表示資料值,且切勿將參數值串接到查詢文字中。 參數化正確的值會被視為資料,而非可執行的 SQL 語法。
限制對稽核日誌的存取
限制審核日誌的存取權限僅限授權使用者與管理員。 在 SQL 資料庫引擎 內部,SQL 權限控制 SQL 資料庫引擎 內的稽核存取,且會依平台與稽核範圍而異。 遵循最小權限原則,僅授予管理或審查稽核資訊所需的權限。 伺服器層級與資料庫層級的審計權限模型分開,Azure SQL Database 與 SQL Server 在伺服器層級權限的可用性上有所不同。 限制審計資料存取有助於降低在錄音稽核事件中出現敏感資訊時,未經授權揭露的風險。
存取 SQL 資料庫引擎 以外的稽核日誌取決於設定目標(例如 OneLake)的權限。 遵循最小權限原則,僅授予管理或審查稽核資訊所需的權限。