在 Microsoft Fabric 數據倉儲中實作數據列層級安全性
適用於: Microsoft Fabric 中的 SQL 分析端點和倉儲
網狀架構倉儲和 SQL 分析端點中的數據列層級安全性 (RLS) 可讓您根據使用者角色和述詞來控制資料庫數據表中數據列的存取。 如需詳細資訊,請參閱 Fabric 數據倉儲中的數據列層級安全性。
本指南將逐步引導您完成在 Microsoft網狀架構倉儲或 SQL 分析端點中實作數據列層級安全性的步驟。
必要條件
開始之前,請確定您具備下列項目:
- 具有作用中容量或試用容量的 Fabric 工作區。
- Lakehouse 上的網狀架構倉儲或 SQL 分析端點。
- 工作區上的系統管理員、成員或參與者許可權,或倉儲或 SQL 分析端點的許可權提升。
1. 連線
- 使用在倉儲或 SQL 分析端點上具有較高存取權的帳戶登入。 (工作區上的系統管理員/成員/參與者角色,或倉儲或 SQL 分析端點上的控制許可權)。
- 開啟 [網狀架構] 工作區,然後流覽至您要套用數據列層級安全性的倉儲或 SQL 分析端點。
2.定義安全策略
判斷您想要用來控制數據存取的角色和述詞。 角色會定義誰可以存取數據,而述詞會定義存取準則。
建立安全性述詞。 安全性述詞是決定使用者可以存取哪些數據列的條件。 您可以將安全性述詞建立為內嵌資料表值函式。 這個簡單的練習假設數據表
UserName_column
中有一個數據行,其中包含系統函 式USER_NAME()填入的相關用戶名稱。-- Creating schema for Security CREATE SCHEMA Security; GO -- Creating a function for the SalesRep evaluation CREATE FUNCTION Security.tvf_securitypredicate(@UserName AS varchar(50)) RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT 1 AS tvf_securitypredicate_result WHERE @UserName = USER_NAME(); GO -- Using the function to create a Security Policy CREATE SECURITY POLICY YourSecurityPolicy ADD FILTER PREDICATE Security.tvf_securitypredicate(UserName_column) ON sampleschema.sampletable WITH (STATE = ON); GO
YourSecurityPolicy
取代為您的原則名稱,tvf_securitypredicate
並以述詞函式的名稱取代sampleschema
您的架構名稱,並以sampletable
目標資料表的名稱取代 。將取代
UserName_column
為您數據表中包含使用者名稱的數據行。WHERE
將取代WHERE @UserName = USER_NAME();
為符合所需述詞型安全性篩選條件的 子句。 例如,這會篩選數據行對應至 參數的數據UserName
,符合系統函式USER_NAME()@UserName
的結果。重複這些步驟,視需要建立其他數據表的安全策略。
3.測試數據列層級安全性
以具有相關聯安全策略的角色成員身分登入 Fabric。 使用下列查詢來確認數據表中應相符的值。
SELECT USER_NAME()
查詢資料庫數據表,以確認數據列層級安全性如預期般運作。 用戶應該只會看到符合其角色中所定義之安全性述詞的數據。 例如:
SELECT * FROM sampleschema.sampletable
用戶類似的篩選結果將會與其他使用 Microsoft Entra 驗證進行數據庫存取的應用程式進行篩選。
4.監視和維護數據列層級安全性
隨著安全性需求的發展,定期監視和更新數據列層級安全策略。 追蹤角色指派,並確保使用者具有適當的存取權。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應