適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲
Fabric 資料倉儲中的稽核藉由追蹤和記錄資料庫事件,提供增強的安全性和合規性功能。
透過使用 SQL 稽核日誌,您可以監控資料庫活動、偵測潛在的安全威脅,並透過維護關鍵行動的稽核軌跡來符合合規要求,例如:
- 驗證嘗試和存取控制變更
- 資料存取和修改作業
- 架構變更和管理活動
- 權限變更和安全性設定
這很重要
SQL 稽核記錄預設為關閉。 具有稽核查詢權限的使用者必須將其啟用才能擷取記錄。
要開始,請參考 《如何在 Fabric Data Warehouse 中設定 SQL 稽核日誌》中的步驟。
儲存體
SQL 稽核日誌在靜態時會加密並儲存在 OneLake 中。
對於 Fabric Data Warehouse,稽核日誌會寫入 .XEL OneLake 倉庫 Audit 資料夾 中的檔案。
具有以下 角色的 使用者可存取審計資料夾:
- 工作區 管理員
- 工作空間 成員
- 工作區 貢獻者
- 工作區檢視器,擁有「全部閱讀」權限
這些使用者可以:
- 瀏覽審計資料夾
- 查看由 SQL 稽核產生的
.XEL稽核檔案 - 複製檔案供離線分析
- 使用像 SQL Server Management Studio (SSMS) 這類工具開啟檔案
你也可以用 T-SQL 查詢審計日誌,透過 sys.fn_get_audit_file_v2。
針對指示,請檢閱如何在 Fabric 資料倉儲中設定 SQL 稽核記錄的步驟。
小提示
根據記錄的動作群組和事件,在 Microsoft Fabric 資料倉儲中設定稽核記錄可能會增加儲存體成本。 只啟用必要的事件,以避免不必要的儲存成本。
Performance
SQL 稽核日誌功能針對被稽核資料庫的可用性與效能進行優化。 在活動率或網路負載非常高的期間,稽核功能可能會允許交易繼續進行,而不需要記錄標示為稽核的所有事件。
權限
使用者必須擁有審計 查詢(Audit) 權限,才能設定及查詢審計日誌。
- 根據預設,工作區系統管理員具有工作區中所有項目的稽核查詢權限。
- 管理員可以透過分享對話框授予其他使用者對項目進行 審計查詢 的權限。
Workspace 管理員可透過 Fabric 入口網站的共享選單選項,授予項目審計查詢權限。 若要確認使用者是否有稽核查詢權限,請檢查管理權限設定。
在你的倉庫商品中,選擇 分享 按鈕。
或者,在 Fabric 傳送門裡,在你的工作空間裡。 選擇
...倉庫商品的右鍵選單,然後選擇 管理權限。在 「授予人存取 」面板中,授予使用者權限。
透過使用 T-SQL 權限查詢稽核日誌
授權使用者 VIEW DATABASE SECURITY AUDIT 使用T-SQL權限查詢稽核日誌,即使他們沒有工作區管理員角色。
當您授予以下權限後,使用者可以透過以下 sys.fn_get_audit_file_v2 函式查詢稽核日誌:
GRANT VIEW DATABASE SECURITY AUDIT TO [user];
小提示
該 VIEW DATABASE SECURITY AUDIT 權限僅賦予查詢稽核日誌的能力。 它 不會授權存取檔案或修改稽核設定。
資料庫層級的稽核操作群組和動作
為了讓稽核記錄設定更容易存取,Fabric 入口網站會使用易記名稱來協助非 SQL 系統管理員和其他使用者輕鬆瞭解擷取的網狀架構數據倉儲事件。
Fabric 會將這些友善名稱映射至底層的 SQL 稽核動作群組。 使用下表做為參考。
| 友善名稱 | 動作群組名稱 | 說明 |
|---|---|---|
| 已存取物件 | DATABASE_OBJECT_ACCESS_GROUP |
記錄對資料庫物件的存取,例如訊息類型、組件或合約。 |
| 對象已變更 | DATABASE_OBJECT_CHANGE_GROUP |
在資料庫物件上記錄 CREATE、ALTER 或 DROP 作業。 |
| 對象擁有者已變更 | DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP |
記錄資料庫物件的擁有權變更。 |
| 物件許可權已變更 | DATABASE_OBJECT_PERMISSION_CHANGE_GROUP |
在資料庫物件上記錄 GRANT、REVOKE 或 DENY 動作。 |
| 用戶已變更 | DATABASE_PRINCIPAL_CHANGE_GROUP |
記錄建立、改變或刪除資料庫主體 (使用者、角色)。 |
| 用戶被冒充 | DATABASE_PRINCIPAL_IMPERSONATION_GROUP |
記錄身份模擬操作 (例如 EXECUTE AS)。 |
| 角色成員已變更 | DATABASE_ROLE_MEMBER_CHANGE_GROUP |
記錄新增或移除資料庫角色中的登入資訊。 |
| 用戶無法登入 | FAILED_DATABASE_AUTHENTICATION_GROUP |
記錄資料庫中失敗的驗證嘗試。 |
| 架構權限已被使用 | SCHEMA_OBJECT_ACCESS_GROUP |
記錄對模式物件的訪問。 |
| 架構已變更 | SCHEMA_OBJECT_CHANGE_GROUP |
記錄在結構描述上的 CREATE、ALTER 或 DROP 操作。 |
| 架構物件的權限已被檢查 | SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP |
記錄模式物件所有權的變更。 |
| 架構物件許可權已變更 | SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP |
記錄結構描述物件上的 GRANT、REVOKE 或 DENY 動作。 |
| 批次已完成 | BATCH_COMPLETED_GROUP |
每當任何批次文字、預存程序或交易管理作業完成執行時,就會引發這個事件。 |
| 批次已啟動 | BATCH_STARTED_GROUP |
每當任何批次文字、預存程序或交易管理作業開始執行時,就會引發這個事件。 |
| 稽核已變更 | AUDIT_CHANGE_GROUP |
每當建立、修改或刪除稽核時,就會引發此事件。 |
| 用戶已登出 | DATABASE_LOGOUT_GROUP |
當資料庫用戶註銷資料庫時,就會引發此事件。 |
| 使用者登入 | SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP |
表示主體已成功登入資料庫。 |
資料庫層級的稽核動作
除了動作群組外,你還可以設定個別稽核動作來記錄特定的資料庫事件:
| 稽核動作 | 說明 |
|---|---|
SELECT |
在指定物件上記錄 SELECT 陳述式。 |
INSERT |
在指定物件上記錄 INSERT 作業。 |
UPDATE |
在指定物件上記錄 UPDATE 作業。 |
DELETE |
在指定物件上記錄 DELETE 作業。 |
EXECUTE |
記錄預存程式或函式的執行。 |
RECEIVE |
記錄 Service Broker 佇列上的 RECEIVE 操作。 |
REFERENCES |
記錄涉及外來鍵約束條件的權限檢查。 |
透過謂詞過濾減少稽核雜訊
要過濾捕捉的事件,請使用可選的 謂詞表達 式過濾器。
使用謂詞過濾來減少預期重複活動的雜訊,例如自動化身份、服務主體或排程工作,而無需關閉組織為合規或調查所需的行動群組。
- 只有當事件與配置的謂詞相符時,才會產生該動作的 SQL 稽核日誌事件。
- 過濾是在事件寫入前進行的,因此排除的事件不會在事後調查時提供。 將謂詞排除視為刻意的審計政策決策,並隨著所有權、權限及風險輪廓的變化定期檢視配置的謂詞。
- 謂詞過濾僅評估已設定為可被啟用稽 核行動群組或行動捕捉的事件。
- 如果底層動作群組未啟用,謂詞不會產生評估事件,過濾器也不會生效。 例如,要過濾
SELECT欄位上的statement謂詞語句,必須先啟用 「批次已完成 (BATCH_COMPLETED_GROUP)」動作群組。
- 如果底層動作群組未啟用,謂詞不會產生評估事件,過濾器也不會生效。 例如,要過濾
你可以透過 Fabric 入口網站或 REST API 來設定謂詞表達式。 關於步驟,請參見 「配置謂詞表達式」。
謂詞表達式語法
謂詞表達式使用與 <predicate_expression>CREATE SERVER AUDIT (Transact-SQL) 中子句相同的語法,但不含 WHERE 關鍵字:
<predicate_expression> ::=
{ [ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ] [ ,... n ] }
<predicate_factor> ::=
event_field_name { = | <> | != | > | >= | < | <= | LIKE }
{ number | 'string' }
-
event_field_name對應於由 sys.fn_get_audit_file 返回的欄位(Transact-SQL)。 你可以使用所有已記錄的欄位,除了file_name、audit_file_offset和event_time。 -
action_id和class_type是字串,但你只能將它們與謂詞中的數值比較。 - 字串比較不會執行隱含型別轉換。
- 最大表達式長度為 3,000 個字元。
- 空字串表示未套用謂詞。
例如,為了排除已知服務主體或自動化身份所產生的活動,可以在 上 server_principal_name進行過濾。 為排除重複 SELECT 陳述,請在 statement 欄位上過濾: NOT statement LIKE 'SELECT %'。
局限性
- 你的預設工作區不支援 SQL 稽核日誌。
- SQL 稽核日誌不支援 倉庫快照。
這很重要
稽核日誌儲存在 OneLake 的倉庫項目中。 如果你刪除倉庫,也會刪除相關的稽核日誌檔案,無法再存取它們。
為保留稽核日誌以供合規或調查用途,請在刪除倉庫前將檔案複製 .XEL 至其他儲存地點。
SQL 分析端點限制
審計 SQL 分析端點時,以下限制適用:
- DML 操作不會被記錄。 稽核不會記錄
INSERT、UPDATE、DELETE、MERGE等操作,因為 Lakehouse 資料表的資料操作是透過 Lakehouse 執行時環境進行,而非透過 SQL 分析端點。 - 目前不支援直接存取審計資料夾。 使用者無法從 Lakehouse 審計資料夾瀏覽或下載底層
.XEL的審計檔案。
你仍然可以透過 T-SQL 函式 sys.fn_get_audit_file_v2查詢 SQL 分析端點的稽核事件。