共用方式為


在 Microsoft Fabric 數據倉儲中實作數據列層級安全性

適用於: Microsoft Fabric 中的 SQL 分析端點和倉儲

網狀架構倉儲和 SQL 分析端點中的數據列層級安全性 (RLS) 可讓您根據使用者角色和述詞來控制資料庫數據表中數據列的存取。 如需詳細資訊,請參閱 Fabric 數據倉儲中的數據列層級安全性。

本指南將逐步引導您完成在 Microsoft網狀架構倉儲或 SQL 分析端點中實作數據列層級安全性的步驟。

必要條件

開始之前,請確定您具備下列項目:

  1. 具有作用中容量或試用容量的 Fabric 工作區。
  2. Lakehouse 上的網狀架構倉儲或 SQL 分析端點。
  3. 工作區上的系統管理員、成員或參與者許可權,或倉儲或 SQL 分析端點的許可權提升。

1. 連線

  1. 使用在倉儲或 SQL 分析端點上具有較高存取權的帳戶登入。 (工作區上的系統管理員/成員/參與者角色,或倉儲或 SQL 分析端點上的控制許可權)。
  2. 開啟 [網狀架構] 工作區,然後流覽至您要套用數據列層級安全性的倉儲或 SQL 分析端點。

2.定義安全策略

  1. 判斷您想要用來控制數據存取的角色和述詞。 角色會定義誰可以存取數據,而述詞會定義存取準則。

  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 
    
  3. YourSecurityPolicy取代為您的原則名稱,tvf_securitypredicate並以述詞函式的名稱取代sampleschema您的架構名稱,並以sampletable目標資料表的名稱取代 。

  4. 將取代 UserName_column 為您數據表中包含使用者名稱的數據行。

  5. WHERE將取代WHERE @UserName = USER_NAME();為符合所需述詞型安全性篩選條件的 子句。 例如,這會篩選數據行對應至 參數的數據UserName,符合系統函式USER_NAME()@UserName的結果。

  6. 重複這些步驟,視需要建立其他數據表的安全策略。

3.測試數據列層級安全性

  1. 以具有相關聯安全策略的角色成員身分登入 Fabric。 使用下列查詢來確認數據表中應相符的值。

    SELECT USER_NAME() 
    
  2. 查詢資料庫數據表,以確認數據列層級安全性如預期般運作。 用戶應該只會看到符合其角色中所定義之安全性述詞的數據。 例如:

    SELECT * FROM sampleschema.sampletable
    
  3. 用戶類似的篩選結果將會與其他使用 Microsoft Entra 驗證進行數據庫存取的應用程式進行篩選。

4.監視和維護數據列層級安全性

隨著安全性需求的發展,定期監視和更新數據列層級安全策略。 追蹤角色指派,並確保使用者具有適當的存取權。