次の方法で共有


Microsoft Fabric データ ウェアハウスで行レベルのセキュリティを実装する

適用対象: Microsoft Fabric の SQL 分析エンドポイントおよびウェアハウス

Fabric ウェアハウスと SQL 分析エンドポイントの行レベルのセキュリティ (RLS) を使用すると、ユーザー ロールと述語に基づいてデータベース テーブル内の行へのアクセスを制御できます。 詳細については、「Fabric データ ウェアハウスでの行レベルのセキュリティ」を参照してください。

このガイドでは、Microsoft Fabric ウェアハウスまたは SQL 分析エンドポイントに行レベルのセキュリティを実装する手順について説明します。

前提条件

作業を開始する前に、次の準備ができていることを確認します。

  1. アクティブな容量または試用版の容量を持つ Fabric ワークスペース。
  2. Fabric ウェアハウスまたはレイクハウス上の SQL 分析エンドポイント。
  3. ワークスペースに対する管理者、メンバー、または共同作成者の権限、またはウェアハウスまたは SQL 分析エンドポイントに対する昇格された権限。

1.接続する

  1. ウェアハウスまたは SQL 分析エンドポイントに対する昇格されたアクセス権を持つアカウントを使用してログインします。 (ワークスペースの管理者/メンバー/共同作成者ロール、またはウェアハウスあるいは SQL 分析エンドポイントに対するコントロール権限)。
  2. Fabric ワークスペースを開き、行レベルのセキュリティを適用するウェアハウスまたは SQL 分析エンドポイントに移動します。

2.セキュリティ ポリシーの定義

  1. データへのアクセスを制御するために使用するロールと述語を決定します。 ロールはデータにアクセスできるユーザーを定義し、述語はアクセスの条件を定義します。

  2. セキュリティ述語を作成します。 セキュリティ述語は、ユーザーがアクセスできる行を決定する条件です。 セキュリティ述語は、インライン テーブル値関数として作成できます。 この簡単な演習では、システム関数 USER_NAME() によって設定された、関連するユーザー名を含むデータ テーブル内の列 UserName_column があると想定しています。

    -- 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 @UserName = USER_NAME(); を、目的の述語ベースのセキュリティ フィルターに一致する WHERE 句に置き換えます。 たとえばこれは、@UserName パラメーターにマップされる UserName 列がシステム関数 USER_NAME() の結果と一致するデータをフィルター処理で選択します。

  6. 必要に応じて、これらの手順を繰り返して、その他のテーブルのセキュリティ ポリシーを作成します。

3.行レベルのセキュリティをテストする

  1. 関連するセキュリティ ポリシーを持つロールのメンバーであるユーザーとして Fabric にログインします。 次のクエリを使用して、テーブル内で一致する必要がある値を確認します。

    SELECT USER_NAME() 
    
  2. データベース テーブルに対してクエリを実行して、行レベルのセキュリティが期待どおりに動作していることを確認します。 ロールで定義されているセキュリティ述語を満たすデータのみがユーザーに表示される必要があります。 次に例を示します。

    SELECT * FROM sampleschema.sampletable
    
  3. ユーザーに対する類似のフィルター処理結果は、データベース アクセスに Microsoft Entra 認証を使用する他のアプリケーションでフィルター処理されます。

4.行レベルのセキュリティを監視および維持する

セキュリティ要件の発展にともなって、行レベルのセキュリティ ポリシーを定期的に監視および更新します。 ロールの割り当てを追跡し、ユーザーが適切なアクセス権を持つようにします。