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