在 Fabric 中為 SQL 資料庫進行稽核

適用於:✅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 資料庫:

  1. 在 Fabric 入口網站中開啟你的 SQL 資料庫。
  2. 從主選單中選擇 「安全 」標籤,然後選擇 「管理 SQL 稽核」。 這是從 Fabric 入口網站截圖,顯示安全性標籤和管理 SQL 稽核按鈕。
  3. 「 管理 SQL 稽核 」面板打開。
  4. 選擇 「將事件儲存為 SQL 稽核日誌 」按鈕以啟用稽核功能。
  5. 在 資料庫事件 區塊中設定要記錄的事件。 選擇「 審核所有」(預設) 以捕捉所有事件。
  6. 可選擇性地在 保留政策下設定保留政策。
  7. 可選擇性地在 謂詞 表達式欄位中設定一個 T-SQL 指令的謂詞表達式,使其忽略。
  8. 選取 [儲存]。

查詢稽核記錄

稽核日誌可使用 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)的權限。 遵循最小權限原則,僅授予管理或審查稽核資訊所需的權限。