列レベル セキュリティ (CLS) は 、OneLake セキュリティ (プレビュー) の機能であり、テーブルへのフル アクセスではなく、テーブル内の選択した列にアクセスできます。 CLS を使用すると、ユーザーがアクセスできるテーブルのサブセットを指定できます。 リストから削除された列は、ユーザーには表示されません。
前提条件
- OneLake のセキュリティが有効になっている OneLake 内の項目。 詳細については、「OneLake データ アクセス ロールの概要」を参照してください。
- [セキュリティ] タブを使用して、lakehouse 上の SQL 分析エンドポイントをユーザーの ID モードに切り替えます。
- セマンティック モデルを作成するには、 DirectLake モデルを作成する手順を使用します。
- 制限事項の完全な一覧については、 既知の制限事項に関するセクションを参照してください。
列 レベルのセキュリティを適用する
OneLake セキュリティ CLS は、次の 2 つの方法のいずれかで適用されます。
- Fabric エンジンのフィルター処理されたテーブル: Spark ノートブックなどの Fabric エンジンに対するクエリを実行すると、CLS ルールごとに表示できる列のみがユーザーに表示されます。
- テーブルへのアクセスのブロック: CLS 規則が適用されたテーブルは、サポートされている Fabric エンジンの外部では読み取れません。
フィルター処理されたテーブルの場合、次の動作が適用されます。
- CLS ルールでは、管理者、メンバー、および共同作成者ロールを持つユーザーへのアクセスは制限されません。
- CLS 規則に、定義されているテーブルとの不一致が含まれる場合、クエリは失敗し、列は返されません。 たとえば、CLS 規則がテーブルの一部に属さない列に対して定義されている場合です。
- CLS テーブルのクエリは、ユーザーが 2 つの異なるロールに属し、それらのロールの 1 つが行レベル セキュリティ (RLS) を持っている場合、エラーが発生して失敗します。
- CLS 規則は、Delta Parquet テーブル オブジェクトにのみ適用できます。
- Delta 以外のテーブル オブジェクトに適用される CLS ルールは、ロールのメンバーのテーブル全体へのアクセスをブロックします。
- ユーザーが一部の列にのみアクセスできるテーブルに対して
select *クエリを実行する場合、CLS ルールの動作はファブリック エンジンによって異なります。- Spark ノートブック: クエリは成功し、許可されている列のみが表示されます。
- SQL 分析エンドポイント: ユーザーがアクセスできない列に対する列アクセスがブロックされます。
- セマンティック モデル: ユーザーがアクセスできない列に対する列アクセスがブロックされます。
列レベル セキュリティ規則を定義する
列レベルのセキュリティは、アイテムの [テーブル ] セクションで、Delta Parquet テーブルの OneLake セキュリティ ロールの一部として定義できます。 CLS は常にテーブルに対して指定され、有効または無効になります。 既定では、CLS は無効になっており、ユーザーはすべての列にアクセスできます。 ユーザーは CLS を有効にし、リストから列を削除してアクセスを取り消すことができます。
重要
別のロールが列へのアクセスを許可している場合、列へのアクセスを削除しても、その列へのアクセスは拒否されません。
列レベルのセキュリティを定義するには、次の手順に従います。
データ項目に移動し、[ OneLake セキュリティの管理 (プレビュー)] を選択します。
テーブルまたはフォルダーのセキュリティを定義する既存のロールを選択するか、[新規] を選択して新しいロールを作成します。
ロールの詳細ページで、CLS を定義するテーブルの横にある他のオプション ([...]) を選択し、[列セキュリティ (プレビュー)] を選択します。
テーブルの CLS は、既定では無効になっています。 [ CLS を有効にする] を選択するか、 新しい規則 を作成して有効にします。
UI には、ユーザーが表示できるそのテーブルの列の一覧が設定されます。 既定では、すべての列が表示されます。
列へのアクセスを制限するには、列の名前の隣にあるチェックボックスを選択してから、[削除] を選択します。 許可される列の一覧には、少なくとも 1 つの列が残っている必要があります。
[保存] を選択してロールを更新します。
削除された列を追加する場合は、[ 新しいルール] を選択します。 このアクションで、リストの末尾に新しい CLS 規則のエントリが追加されます。 その後、ドロップダウンを使用して、アクセスに含める列を選択します。
変更が完了したら、[保存] を選択します。
SQL 分析エンドポイントの OneLake セキュリティを有効にする
SQL 分析エンドポイントで OneLake セキュリティを使用するには、その ユーザーの ID モードを有効にする必要があります。 新しく作成された SQL 分析エンドポイントは既定でユーザーの ID モードになるため、既存の SQL 分析エンドポイントでは次の手順に従う必要があります。
注
ユーザーの ID モードに切り替える必要があるのは、SQL 分析エンドポイントごとに 1 回だけです。 ユーザーの ID モードに切り替えされていないエンドポイントは、引き続き委任された ID を使用してアクセス許可を評価します。
SQL 分析エンドポイントに移動します。
SQL 分析エンドポイント エクスペリエンスで、上部のリボンにある [ セキュリティ ] タブを選択します。
OneLake アクセス モードでユーザーの ID を選択します。
プロンプトで[はい]を選択 し、ユーザーの ID を使用します。
これで、SQL 分析エンドポイントを OneLake セキュリティで使用する準備ができました。
行レベル セキュリティと列レベル セキュリティを組み合わせる
行レベル セキュリティと列レベル セキュリティを一緒に使用して、テーブルへのユーザー アクセスを制限できます。 ただし、2 つのポリシーは、単一の OneLake セキュリティ ロールを使用して適用する必要があります。 このシナリオでは、1 つのロールで設定されている規則に従って、データへのアクセスが制限されます。
OneLake セキュリティでは、1 つに RLS 規則が含まれ、もう 1 つに CLS 規則が含まれる 2 つ以上のロールの組み合わせはサポートされません。 サポートされていないロールの組み合わせの一部であるテーブルにアクセスしようとするユーザーは、クエリ エラーを受け取ります。