OneLake の列レベルのセキュリティ

列レベル セキュリティ (CLS) は OneLake セキュリティ の機能であり、テーブルへのフル アクセスではなく、テーブル内の選択した列にアクセスできます。 CLS を使用すると、ユーザーがアクセスできるテーブルのサブセットを指定できます。 リストから削除された列のデータは、ユーザーには表示されません。

前提条件

列レベルのセキュリティについて

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

承認されたサードパーティ エンジンは、 承認されたエンジン API を 使用して OneLake からユーザーの有効な列アクセスを取得し、クエリ時に CLS を適用できます。 OneLake は信頼できる唯一のソースであり、OneLake で作成された CLS 定義は、ファブリック エンジンと承認された外部エンジン間で一貫して適用されます。

詳細については、「 サードパーティ エンジンと OneLake セキュリティの統合」を参照してください。

列レベル セキュリティ規則を定義する

列レベルのセキュリティは、アイテムの [テーブル ] セクションで、Delta Parquet テーブルの OneLake セキュリティ ロールの一部として定義できます。 CLS は常にテーブルに対して指定され、有効または無効になります。 既定では、CLS は無効になっており、ユーザーはすべての列にアクセスできます。 ユーザーは CLS を有効にし、リストから列を削除してアクセスを取り消すことができます。

重要

別のロールが列へのアクセスを許可している場合、列へのアクセスを削除しても、その列へのアクセスは拒否されません。

列レベルのセキュリティを定義するには、次の手順に従います。

  1. データ項目に移動し、[ OneLake セキュリティの管理] を選択します。

  2. テーブルまたはフォルダーのセキュリティを定義する既存のロールを選択するか、[新規] を選択して新しいロールを作成します。

  3. ロールの詳細ページで、CLS を定義するテーブルの横にある他のオプション (...) を選択し、[ 列のセキュリティ] を選択します。

    テーブルのアクセス許可を編集するための [列セキュリティ] の選択を示すスクリーンショット。

  4. テーブルの CLS は、既定では無効になっています。 [ CLS を有効にする] を選択するか、 新しい規則 を作成して有効にします。

    UI には、ユーザーが表示できるそのテーブルの列の一覧が設定されます。 既定では、すべての列が表示されます。

  5. 列へのアクセスを制限するには、列の名前の隣にあるチェックボックスを選択してから、[削除] を選択します。 許可される列の一覧には、少なくとも 1 つの列が残っている必要があります。

  6. [保存] を選択してロールを更新します。

  7. 削除された列を追加する場合は、[ 新しいルール] を選択します。 このアクションで、リストの末尾に新しい CLS 規則のエントリが追加されます。 その後、ドロップダウンを使用して、アクセスに含める列を選択します。

  8. 変更が完了したら、[保存] を選択します。

行レベル セキュリティと列レベル セキュリティを組み合わせる

行レベル セキュリティと列レベル セキュリティを一緒に使用して、テーブルへのユーザー アクセスを制限できます。 ただし、2 つのポリシーは、単一の OneLake セキュリティ ロールを使用して適用する必要があります。 このシナリオでは、1 つのロールで設定されている規則に従って、データへのアクセスが制限されます。

OneLake セキュリティでは、1 つに RLS 規則が含まれ、もう 1 つに CLS 規則が含まれる 2 つ以上のロールの組み合わせはサポートされません。 サポートされていないロールの組み合わせの一部であるテーブルにアクセスしようとするユーザーは、クエリ エラーを受け取ります。