在 Microsoft Fabric 資料倉儲中實作資料列層級安全性
適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲
Fabric Warehouse 和 SQL 分析端點中的資料列層級安全性 (RLS) 可讓您根據使用者角色和述詞來控制資料庫資料表中資料列進行存取。 如需詳細資訊,請參閱 Fabric 資料倉儲中的資料列層級安全性。
本指南將逐步引導您完成在 Microsoft Fabric Warehouse 或分析端點中實作資料行層級安全性的步驟。
必要條件
開始之前,請確定您具備下列項目:
- 具有作用中容量或試用容量的 Fabric 工作區。
- Lakehouse 上的 Fabric Warehouse 或 SQL 分析端點。
- 對工作區的系統管理員、成員或參與者權限,或者對倉儲或 SQL 分析端點的提升權限。
1. 連線
- 使用具有對倉儲或 SQL 分析端點的提升存取權的帳戶登入。 (工作區上的系統管理員/成員/參與者角色,或者對倉儲或 SQL 分析端點的控制權限)。
- 開啟 Fabric 工作區,然後瀏覽至您要套用資料列層級安全性的倉儲或 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
參數的UserName
資料行與系統函式 USER_NAME() 的結果相符的資料。重複這些步驟,視需要建立其他資料表的安全性原則。
3. 測試資料列層級安全性
以具有關聯的安全性原則的角色成員身分登入 Fabric。 使用下列查詢,以驗證資料表中應相符的值。
SELECT USER_NAME()
查詢資料庫資料表,以確認資料列層級安全性如預期般運作。 使用者應只會看到符合其角色中所定義之安全性述詞的資料。 例如:
SELECT * FROM sampleschema.sampletable
將透過使用 Microsoft Entra 驗證進行資料庫存取的其他應用程式篩選使用者的類似篩選結果。 如需詳細資訊,請參閱 Microsoft Fabric 中作為 SQL 驗證替代方案的 Microsoft Entra 驗證。
4. 監視和維護資料列層級安全性
隨著安全性需求的變化,定期監視和更新資料列層級安全性原則。 追蹤角色指派,並確保使用者具有適當的存取權。