適用於:✅ Microsoft Fabric 中的倉庫
Fabric Data Warehouse 的稽核透過追蹤與記錄資料庫事件,提供更強的安全性與合規能力。
你可以在 Fabric 入口或透過 REST API 設定 Fabric Data Warehouse 的 SQL 審計日誌。
先決條件
要設定 Fabric Data Warehouse 的 SQL 稽核日誌,你需要以下項目:
- 具有活躍容量或試用容量的 Fabric 工作區。
- 在工作區內存取倉庫物品。
- 可設定及查詢稽核記錄的 Audit 權限。 如需詳細資訊,請參閱 權限。
你可以透過 Fabric 入口網站或 REST API 來設定 SQL 稽核日誌。
在 Fabric 工作區中,選取倉儲項目的設定。
選取 [SQL 稽核記錄 ] 頁面。
啟用 [ 將事件儲存至 SQL 稽核記錄] 設定。
根據預設,所有動作都會啟用並保留九年。
在 「要記錄的事件」中,選擇 SQL 稽核日誌所捕捉的事件。 選擇你想要捕捉的事件類別或個別稽核行動群組。 只有選取貴組織需要的事件,才能將記憶體和相關性優化。
您也可以輸入 述詞運算式 來篩選事件,例如排除來自已知服務主體或自動化身分識別的活動。 使用 述詞運算式語法 中所述的語法。
這很重要
謂詞過濾只適用於已在 「要記錄的事件」中選取的事件。 例如,要篩選 SELECT 語句,你也必須啟用 「批次已完成」。
在 [年]、[月] 和 [日] 中指定所需的記錄保留期間。
選取 [儲存 ] 以套用您的設定。
您的倉庫現在會記錄選定的稽核事件,並將日誌安全地儲存在 OneLake 中。
下載並安裝 Visual Studio Code。
從 Visual Studio Marketplace 安裝 REST Client 擴充功能。
請依照以下步驟取得持有人代幣。 你可以在瀏覽器的開發者工具或 PowerShell 中找到你的 Power BI 承載令牌。
使用 Edge 開發者工具尋找你的 Power BI 持有人代幣:
- 請在瀏覽器(Microsoft Edge)中開啟您的 Microsoft Fabric 工作空間。
- 按 F12 開啟開發人員工具。
- 選擇 控制台 標籤。如有必要,請選擇 展開快速查看 以顯示控制台提示
>。
- 輸入 命令
powerBIAccessToken ,然後按 Enter 鍵。 以滑鼠右鍵按下控制台中傳回的大型唯一字串,然後選取 [ 複製字串內容]。
- 將其貼上以取代下列指令碼中的
<bearer token>。
使用 PowerShell 尋找你的Power BI持有憑證:
安裝 MicrosoftPowerBIMgmt 的 模組。
Install-Module -Name MicrosoftPowerBIMgmt
使用 Connect-PowerBIServiceAccount 來連接到 Power BI PowerShell,並取得存取權杖。
Connect-PowerBIServiceAccount
$token = (Get-PowerBIAccessToken).Authorization
Write-Output "Bearer $token"
取得 Power BI 承載令牌後,使用 REST Client 擴充功能發送PATCH請求。 在 VS Code 中,建立一個副檔名為 .http 的新文字檔。
複製並貼上下列要求:
PATCH https://api.fabric.microsoft.com/v1/workspaces/<workspaceId>/warehouses/<warehouseId>/settings/sqlAudit
content-type: application/json
Authorization: Bearer <BEARER_TOKEN>
{
"state": "Enabled",
"retentionDays": "0"
}
- 將
<workspaceId> 和 <warehouseId> 取代為對應的 Fabric 工作區和倉儲識別碼。 若要尋找這些值,請在 Fabric 入口網站中瀏覽您的倉儲。
-
<workspaceID>:在 URL 的 /groups/ 區段之後尋找工作區 GUID,或在現有的數據倉庫中執行 SELECT @@SERVERNAME 來尋找。 例如: 11aaa111-a11a-1111-1aaa-aa111111aaa 。 請勿包含 / 字元。
-
<warehouseID>:在 /warehouses/ 區段之後尋找 URL 中的倉儲 GUID,或在現有倉儲中執行 SELECT @@SERVERNAME 來獲得倉儲 GUID。 例如: 11aaa111-a11a-1111-1aaa-aa111111aaa 。 請勿包含 / 字元。
- 將
<BEARER_TOKEN> 替換為您的Bearer Token。
- 將
state 設為 Enabled 以啟用稽核(要關閉時請使用 Disabled)。
- 將
retentionDays 參數設為 0,即可無限期保留。 此設定為預設值。
這很重要
在延伸模組範例程式代碼中,您必須在提供持有人令牌之後立即包含空行。 這行空行標示 HTTP 標頭結束與 API 指令主體開始的擴展,讓 API 能正確區分兩者。
選擇 [傳送要求]。
使用 REST API 檢查稽核記錄狀態
要確認是否啟用 SQL 稽核日誌,請使用相同的 REST 客戶端擴充功能發送 GET 請求。
- 在 VS Code 中,建立一個副檔名為
.http 的新文字檔。
- 複製並貼上下列要求,並提供您自己的
workspaceId、<warehouseId> 和 <BEARER_TOKEN>。
GET https://api.fabric.microsoft.com/v1/workspaces/<workspaceId>/warehouses/<warehouseId>/settings/sqlAudit
content-type: application/json
Authorization: Bearer <BEARER_TOKEN>
回應會傳回 ENABLED 或 DISABLED,以及 auditActionsAndGroups 和 predicateExpression 的目前組態。
SQL 稽核記錄依賴預先定義的動作群組來擷取資料庫內的特定事件。 有關稽核行動群組的詳細資訊,請參閱 Fabric Data Warehouse 中的 SQL 稽核日誌。
在 VS Code 中,建立一個副檔名為 .http 的新文字檔。
複製並貼上下列要求,並提供您自己的 workspaceId、<warehouseId> 和 <BEARER_TOKEN>。
POST https://api.fabric.microsoft.com/v1/workspaces/<workspaceId>/warehouses/<warehouseId>/settings/sqlAudit
content-type: application/json
Authorization: Bearer <BEARER_TOKEN>
[ "DATABASE_OBJECT_PERMISSION_CHANGE_GROUP" ]
選擇 [傳送要求]。
使用相同的 PATCH API 請求來配置一個謂詞表達式,排除特定事件的產生,例如已知服務主體的活動或自動化身份。 完整的謂詞語法,請參見 謂詞表達式語法。
在 VS Code 中,建立一個副檔名為 .http 的新文字檔。
複製並貼上下列要求,並提供您自己的 workspaceId、<warehouseId> 和 <BEARER_TOKEN>。
PATCH https://api.fabric.microsoft.com/v1/workspaces/<workspaceId>/warehouses/<warehouseId>/settings/sqlAudit
content-type: application/json
Authorization: ******
{
"state": "Enabled",
"retentionDays": 10,
"predicateExpression": "NOT statement LIKE 'SELECT %'"
}
- 此範例會透過篩選
statement 欄位,將 SELECT 陳述式排除在稽核之外。
- 當您第一次啟用 SQL 稽核時,若省略
predicateExpression,則不會套用任何述詞。 在後續更新中,省略它將保持現有的謂詞不變。 指定一個空字串("")以移除現有的謂詞。
這很重要
謂詞過濾僅評估已設定為可捕捉的事件。 若要像此範例所示篩選 SELECT 陳述式,你也必須啟用 批次已完成(BATCH_COMPLETED_GROUP)動作群組。 欲了解更多資訊,請參閱 資料庫層級的稽核行動群組與動作。
選擇 [傳送要求]。
查詢稽核記錄
SQL 稽核日誌資料儲存在 。XEL 檔案 存放在 OneLake 中。 你可以透過 sys.fn_get_audit_file_v2 Transact-SQL(T-SQL)函式存取這些資料。 欲了解更多關於審計檔案如何在 OneLake 中儲存的資訊,請參閱 Fabric Data Warehouse 中的 SQL 稽核日誌。
從 SQL 查詢編輯器或任何查詢工具,如 SQL Server Management Studio(SSMS)或 Visual Studio Code 的 MSSQL 擴充套件,請使用以下範例 T-SQL 查詢。 務必提供您自己的 <workspaceId> 和 <warehouseId>。
SELECT *
FROM sys.fn_get_audit_file_v2
('https://onelake.blob.fabric.microsoft.com/<workspaceId>/<warehouseId>/Audit/sqldbauditlogs/'
, default, default, default, default);
若要依時間範圍篩選記錄,請使用下列查詢:
SELECT *
FROM sys.fn_get_audit_file_v2
('https://onelake.blob.fabric.microsoft.com/<workspaceId>/<warehouseId>/Audit/sqldbauditlogs/'
, default, default, '2025-03-30T08:40:40Z', '2025-03-30T09:10:40Z');
相關內容