Microsoft Fabric データ ウェアハウスで行レベルのセキュリティを実装する
[アーティクル] 2025/01/16
3 人の共同作成者
フィードバック
この記事の内容
前提条件
1.接続する
2.セキュリティ ポリシーの定義
3.行レベルのセキュリティをテストする
4.行レベルのセキュリティを監視および維持する
関連するコンテンツ
さらに 2 個を表示
適用対象: ✅ Microsoft Fabric の SQL 分析エンドポイントおよびウェアハウス
Fabric ウェアハウスと SQL 分析エンドポイントの行レベルのセキュリティ (RLS) を使用すると、ユーザー ロールと述語に基づいてデータベース テーブル内の行へのアクセスを制御できます。 詳細については、「Fabric データ ウェアハウスでの行レベルのセキュリティ 」を参照してください。
このガイドでは、Microsoft Fabric ウェアハウスまたは SQL 分析エンドポイントに行レベルのセキュリティを実装する手順について説明します。
作業を開始する前に、次の準備ができていることを確認します。
アクティブな容量または試用版の容量を持つ Fabric ワークスペース。
Fabric ウェアハウスまたはレイクハウス上の SQL 分析エンドポイント。
ワークスペースに対する管理者、メンバー、または共同作成者の権限、またはウェアハウスまたは SQL 分析エンドポイントに対する昇格された権限。
ウェアハウスまたは SQL 分析エンドポイントに対する昇格されたアクセス権を持つアカウントを使用してログインします。 (ワークスペースの管理者/メンバー/共同作成者ロール、またはウェアハウスあるいは SQL 分析エンドポイントに対するコントロール権限)。
Fabric ワークスペースを開き、行レベルのセキュリティを適用するウェアハウスまたは SQL 分析エンドポイントに移動します。
データへのアクセスを制御するために使用するロールと述語を決定します。 ロールはデータにアクセスできるユーザーを定義し、述語はアクセスの条件を定義します。
セキュリティ述語を作成します。 セキュリティ述語は、ユーザーがアクセスできる行を決定する条件です。 セキュリティ述語は、インライン テーブル値関数として作成できます。
-- 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()
OR USER_NAME() = 'BatchProcess@contoso.com';
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
をターゲット テーブルの名前に置き換えます。
この演習では、システム関数 USER_NAME() によって設定された、関連するユーザー名を含むデータ テーブル UserName_column
列があることを前提としています。 UserName_column
を、ユーザー名を含むテーブル内の列に置き換えます。
WHERE @UserName = USER_NAME();
を、目的の述語ベースのセキュリティ フィルターに一致する WHERE
句に置き換えます。 たとえばこれは、UserName
パラメーターにマップされる @UserName
列がシステム関数 USER_NAME() の結果と一致するデータをフィルター処理で選択します。
必要に応じて、WHERE
ステートメントには、データ移動を処理するマネージド ID のユーザー名の例外も含まれます (例: BatchProcess@contoso.com
)。
必要に応じて、これらの手順を繰り返して、その他のテーブルのセキュリティ ポリシーを作成します。
関連するセキュリティ ポリシーを持つロールのメンバーであるユーザーとして Fabric にログインします。 次のクエリを使用して、テーブル内で一致する必要がある値を確認します。
SELECT USER_NAME()
データベース テーブルに対してクエリを実行して、行レベルのセキュリティが期待どおりに動作していることを確認します。 ロールで定義されているセキュリティ述語を満たすデータのみがユーザーに表示される必要があります。 次に例を示します。
SELECT * FROM sampleschema.sampletable
ユーザーに対する類似のフィルター処理結果は、データベース アクセスに Microsoft Entra 認証を使用する他のアプリケーションでフィルター処理されます。 詳細については、「Microsoft Fabric の SQL 認証の代替え手段とする Microsoft Entra 認証 」を参照してください。
セキュリティ要件の発展にともなって、行レベルのセキュリティ ポリシーを定期的に監視および更新します。 ロールの割り当てを追跡し、ユーザーが適切なアクセス権を持つようにします。