Unity Catalog の属性ベースのアクセス制御 (ABAC)
ベータ版
この機能は ベータ版です。
このページでは、Unity Catalog の属性ベースのアクセス制御 (ABAC) について説明します。
ABACとは?
ABAC は、 Databricks全体で柔軟でスケーラブル、かつ一元化されたアクセス制御を提供するデータガバナンスモデルです。 ABAC は、データ資産に適用される管理タグに基づいてポリシーを定義できるようにすることで、Unity Catalog の既存の特権モデルを補完します。これにより、ガバナンスが簡素化され、セキュリティ体制が強化されます。
MANAGE
権限またはオブジェクト所有権を持つユーザーは、ポリシーを一度定義するだけで、多くのデータアセットに一貫してポリシーを適用できます。ポリシーは、カタログ、スキーマ、またはテーブルレベルでアタッチされ、そのスコープ内のすべてのテーブルに自動的に適用されます。上位レベルで定義されている場合、ポリシーは子オブジェクトに下位に継承されます。データアセットの管理されたタグによって、適用されるポリシーが決定され、アクセス制御が動的に適応できるようになります。
ABACの利点
- スケーラビリティ: アクセス制御を大規模に管理するには、個々の権限ではなくタグを活用します。
- 柔軟性: 各データアセットを変更せずにタグやポリシーを更新することで、ガバナンスを簡単に調整できます。
- 一元化されたガバナンス: カタログ、スキーマ、テーブルにまたがる統合モデルにより、ポリシー管理を簡素化します。
- セキュリティの向上: データ属性に基づいて動的にきめ細かなアクセス制御を実施します。
- 監査可能性: 包括的な監査ログを通じて、データアクセスのリアルタイムの可視性を維持します。
ABACの仕組み
Unity Catalog の ABAC は、管理されたタグ、ポリシー、ユーザー定義関数 (UDF) を使用して、動的な属性ベースのアクセス制御を適用します。ABACの中心となるのは、以下のコンポーネントとメカニズムです。
-
管理タグ: 管理タグは、タグポリシーを使用してアカウントレベルで定義されます。これらのタグは、データの機密性、分類、ビジネス ドメインなどの属性を表し、Unity Catalog のテーブル、スキーマ、またはカタログに割り当てられます。これらは、ポリシーの適用を推進する属性として機能します。「タグ ポリシー」と「Unity Catalog のセキュリティ保護可能なオブジェクトにタグを適用する」を参照してください。
-
ポリシー: ポリシーは、 Unity Catalog内の3つの階層レベルで作成および管理されます。
- カタログレベル: 含まれているすべてのスキーマとテーブルに影響を与える広範なポリシーを適用します。
- スキーマ レベル: スキーマとそのテーブルに固有のポリシーを適用します。
- テーブルレベル: きめ細かなポリシーを個々のテーブルに直接適用します。
継承 モデル に従う: ポリシーがカタログ レベルまたはスキーマ レベルで定義されている場合、そのスコープ内のすべての子オブジェクト、スキーマ、およびテーブルに自動的に適用されます。 これにより、管理者は、大規模なデータ資産のセットを管理する 1 つのポリシーを適用することで、高レバレッジのガバナンスを実装できます。継承されたポリシーは、冗長性を減らし、データ階層全体で一貫した適用を促進します。Databricks では、ガバナンスの効率を最大化し、管理オーバーヘッドを削減するために、適用可能な最上位レベル (通常はカタログ) でポリシーを定義することをお勧めします。属性ベースのアクセス制御 (ABAC) ポリシーの作成と管理を参照してください。
-
ユーザー定義関数 (UDF): UDF は、スキーマ レベルで定義されたカスタム関数であり、Unity Catalog 名前空間全体でグローバルに参照できます。UDFs は、行のフィルタリングや属性に基づく列値のマスキングなど、複雑なロジックを表現するためにポリシー内で使用されます。たとえば、
filter_region
という名前の UDF を行フィルタポリシーで使用して、region = 'EMEA'
.「Unity Catalog のユーザー定義関数 (UDF)」を参照してください。 -
動的強制: ユーザーがタグ付けされたデータ資産にアクセスしようとすると、Unity Catalog はタグに基づいて適用可能なポリシーを評価し、定義されたアクセス制御を適用します。
ポリシーから明示的に除外されたユーザーは、ディープクローニングとシャロークローニング、基になるデータに対するタイムトラベルなどのアクションを引き続き実行できます。
-
監査ログ: タグ付けされたデータ資産に対するすべての操作は、監査ログシステムテーブルにキャプチャされて記録されるため、包括的な可視性とコンプライアンス追跡が可能になります。監査ログを参照してください。
ABAC の設定方法については、「 チュートリアル: ABAC の設定」を参照してください。
ポリシーの種類
次の 2 種類の ABAC ポリシーがサポートされています。
-
行フィルタポリシーは 、テーブル内の個々の行へのアクセスをその内容に基づいて制限します。フィルター UDF は、各行をユーザーに表示するかどうかを評価します。これらのポリシーは、アクセスがデータ特性に依存する場合に便利です。
使用例: 顧客トランザクション テーブルで、地域列が
region=EMEA
などの管理タグと一致する行のみを表示します。これにより、地域チームは、その地域に関連するデータのみを表示できます。 -
列マスク ポリシーは、 特定の列でユーザーに表示される値を制御します。マスキング UDF は、管理されたタグに基づいて、実際の値または編集されたバージョンを返すことができます。
使用例: 電話番号を含む列は、テーブルに
sensitivity=low
のタグが付けられているか、要求元のユーザーがコンプライアンス グループに属している場合を除き、マスクします。アクセス権のないユーザーには、null 値またはXXX-XXX-XXXX
のようなプレースホルダー値が表示されます。
属性ベースのアクセス制御 (ABAC) ポリシーの作成と管理を参照してください。
ベータの制限
ABAC プレビュー ステージでは、次の制限が適用されます。
- テーブルに対する
MODIFY
のアクセス許可はあるが、ASSIGN タグポリシーのアクセス許可を持たないユーザーは、管理タグを持つカラムを削除できます。これにより、テーブル構造が変更され、そのカラムに関連付けられた ABAC ポリシーが無効になる場合があります。 - ABAC ベータ版は、ワークスペース レベルで有効になります。Databricks は、ベータ版で有効になっていないワークスペースからアクセスされた場合、カタログに ABAC ポリシーを適用しません。
- 必要な Delta Sharing アクセス許可を持つユーザーは、ポリシーの適用方法に関係なく、ABAC ポリシーによって保護されたテーブル Delta 共有できます。 このポリシーは、受信者のアクセスには適用されません。
- ビューはサポートされていません。
- フォーリンカタログはサポートされていません。
- マテリアライズドビューとストリーミングテーブルはサポートされていません。
- オブジェクト階層内の特定の列または行に適用できる列マスクまたは行フィルタは 1 つだけです。複数のマスクまたはフィルターを適用すると、テーブルにアクセスできなくなる可能性があります。