Unity Catalog でのアクセス制御
このページでは、特権、ポリシー、データ レベルの制御など、Unity Catalog のアクセス制御の概要について説明します。
アクセス制御のレイヤー
Unity Catalog のアクセス制御は、次の補完モデルに基づいて構築されています。
- ワークスペース レベルの制限は 、オブジェクトを特定のワークスペースに制限することで、ユーザーがデータにアクセスできる 場所 を制御します。
- 特権と所有権は 、セキュリティ保護可能なオブジェクトに対する許可を使用して、 誰が 何 にアクセスできるかを制御します。
- 属性ベースのポリシー (ABAC) は 、管理されたタグと一元化されたポリシーを使用して、ユーザーが アクセスできるデータを制御します 。
- テーブル レベルのフィルター処理とマスキングは 、テーブル固有のフィルターとビューを使用して、ユーザーがテーブル内で表示 できるデータを制御します 。
これらのモデルが連携して、データ環境全体で安全できめ細かなアクセスを実施します。
層 | 目的 | メカニズム |
---|---|---|
ワークスペースレベルの制限 | 特定のカタログ、外部ロケーション、およびストレージ資格情報にアクセスできるワークスペースを制限する | ワークスペース レベルのバインド |
特権と所有権 | カタログ、スキーマ、テーブル、およびその他のオブジェクトへのアクセスを制御する | ユーザーとグループへの権限の付与、オブジェクトの所有権 |
属性ベースのポリシー | タグとポリシーを使用して、フィルターとマスクを動的に適用します | ABAC ポリシーと管理タグ |
テーブルレベルのフィルタリングとマスキング | ユーザーがテーブル内で表示できるデータを制御する | 行フィルター、列マスク、動的ビュー |
ワークスペースレベルの制限
ワークスペースバインディングは、アカウント内のどのワークスペースが特定の カタログ 、 外部ロケーション 、 ストレージの認証情報 にアクセスできるかを制限します。 このアクセス制御はワークスペース レベルで行われ、ユーザーまたはグループの権限に関係なく適用されます。
デフォルトでは、 Unity Catalog 内のすべてのカタログ、外部ロケーション、およびストレージ資格情報には、同じメタストアに接続されている任意のワークスペースからアクセスできます。 バインディングを使用すると、次のことができます。
- 1つ以上の指定されたワークスペースへのアクセスを制限する
- 特定のワークスペースからのカタログアクセスを読み取り専用にする
- 環境の分離 (たとえば、本番運用データを本番運用 ワークスペースに制限する)
- 外部ロケーションとストレージの資格情報の使用を特定のワークスペースに制限する
これらのバインディングは、ユーザーレベルの権限を上書きします。ユーザーがオブジェクトに対する特権を持っているが、バインドされていないワークスペースからオブジェクトにアクセスしようとすると、アクセスは拒否されます。
詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。
特権と所有権
Unity Catalog でのアクセスは、主に特権とオブジェクトの所有権によって管理されます。このモデルでは、管理者ロールを割り当て、セキュリティ保護可能なオブジェクト間で特権を付与して所有権を管理することで、データとメタデータにアクセスまたは管理できるユーザーを定義します。このセクションでは、権限の付与方法、所有権のしくみ、およびさまざまなスコープ間でアクセスを管理できる管理者ロールについて説明します。
管理者の役割
Unity Catalog は、複数の管理者ロールをサポートしています。
- アカウント admin : メタストアの作成、ID の管理、メタストア管理者の割り当て、 Delta Sharing やシステム テーブルなどのアカウント レベルの機能の管理を行うことができます。
- メタストア管理者 : メタストア内のすべてのオブジェクトを管理し、所有権を譲渡し、
CREATE CATALOG
、CREATE EXTERNAL LOCATION
などの最上位の特権を割り当てることができる、オプションですが強力なロール。 - ワークスペース admin : ID、ワークスペース レベルの設定、およびワークスペース カタログを管理します。
詳細については、「 Unity Catalog の管理者特権」を参照してください。
オブジェクトの所有権
Unity Catalog 内のすべてのセキュリティ保護可能なオブジェクト (カタログ、スキーマ、テーブルなど) には所有者がいます。所有権は、そのオブジェクトに対する完全な制御を付与します。これには、次の機能が含まれます。
- オブジェクトとそのメタデータの読み取りまたは変更
- 他のユーザーに権限を付与する
- 所有権を別のプリンシパルに譲渡する
Unity Catalog は MANAGE
特権もサポートしており、ユーザーはオブジェクトを所有者にすることなくアクセスを許可し、オブジェクトを変更できます。
所有権の詳細については、「 Unity Catalog オブジェクトの所有権の管理」を参照してください。
セキュリティ保護可能なオブジェクトに対する特権
Unity Catalog では、アクセス制御は特権から始まります。SELECT
、MODIFY
、USE SCHEMA
などの権限を、カタログ、スキーマ、テーブル、ビュー、ボリューム、関数などのセキュリティ保護可能なオブジェクトに対するユーザーおよびグループに割り当てます。
特権の適用は次のとおりです。
- 階層型 : カタログなどの上位レベルのオブジェクトに対する付与は、テーブルなどの下位レベルのオブジェクトにカスケードされます。
- 委任可能 : すべてのオブジェクトには、オブジェクトを管理し、他のユーザーにアクセス権を付与できる所有者がいます。
- 明示的 : アクセスは、ユーザーまたはグループに適切な権限が付与されている場合にのみ許可されます。ユーザーには、自分がメンバーであるすべてのグループからの権限の和集合が付与されます。
ユーザーは、 BROWSE
権限またはオブジェクトへの直接 URL を使用して、またはノートブックまたは SQL エディターでアクセス許可拒否エラーが発生した場合に、検出できるオブジェクトへのアクセスを要求できます。Databricks では、カタログの BROWSE
を All account users
グループに付与して、オブジェクトを検出可能にし、ユーザーがアクセスを要求できるようにすることをお勧めします。アクセス要求は、Eメール、Slack、 Microsoft Teams、Webhook エンドポイント、リダイレクト URL などの構成された宛先に送信されます。 宛先が構成されていない場合、ユーザーはオブジェクトへのアクセスを要求できません。
詳細については、「Unity Catalogでの特権の管理」および「Unity Catalog特権とセキュリティ保護可能なオブジェクト」を参照してください。
属性ベースのアクセス制御 (ABAC)
ベータ版
この機能は ベータ版です。
ABAC は、Unity Catalog でアクセス制御を適用するための一元化されたタグベースのポリシー フレームワークです。これにより、管理者は、管理されたタグに基づいてカタログ、スキーマ、およびテーブル間で動的に適用されるスケーラブルなポリシーを定義できます。ポリシーでは、データをフィルタリングしたり、機密性の高い値をマスクしたりできます。Databricks では、各テーブルに個別にフィルターやマスクを適用するのではなく、一元化されたスケーラブルなガバナンスのために ABAC を使用することをお勧めします。
ABAC は、メタデータ属性に基づいてアクセス制御ポリシーを適用するための汎用フレームワークとして設計されています。これは、特権ベースの制御を補完し、オブジェクトごとの設定を必要とせずにきめ細かな適用をサポートします。
主な機能:
- タグ駆動型ポリシー: 管理タグとユーザー定義関数 (UDF) を使用してポリシーを一度定義し、それらを多くのデータ資産に一貫して適用します。
- 階層的な適用: カタログ、スキーマ、またはテーブルレベルでポリシーを適用し、子オブジェクトへの自動継承を行います。
- 一元化されたスケーラブルなガバナンス: 各オブジェクトに個別の権限を割り当てることなく、アクセスを大規模に管理します。
- 動的評価: アクセスの決定は、タグとユーザーコンテキストに基づいてリアルタイムで評価されます。
詳細については、「属性ベースのアクセス制御 (ABAC)」Unity Catalogを参照してください。
テーブルレベルのフィルタリングとマスキング
このセクションでは、テーブル固有のロジックを使用して、クエリ時にユーザーが表示 できるデータを制御する メカニズムについて説明します。これには、次のものが含まれます。
- 行フィルターと列マスク : ロジックをテーブルに直接適用します。
- 動的ビュー : 1 つ以上のテーブルに対して SQL を使用してロジックを定義します。
これらのアプローチは、ガバナンスモデルに応じて、単独で使用することも、ABACと一緒に使用することもできます。
行フィルターと列マスク
行フィルターと列マスクは、UDF を使用してフィルターまたはマスク ロジックを個々のテーブルに直接適用します。これらは、一元化されたポリシー管理を行わずにテーブルごとにロジックを適用する場合に便利です。
詳細については、「 行フィルターと列マスク」を参照してください。
ダイナミック ビュー
動的ビューを使用すると、SQL を使用して 1 つ以上のテーブルに対するロジックを定義できます。これらは読み取り専用で、次の場合に便利です。
- 変換ロジックの適用 (ジョインや
CASE
ステートメントなど) - Delta Sharing を使用したフィルター処理されたデータの共有 (ABAC はサポートされていません)。
詳細については、「 動的ビューの作成」を参照してください。
各アクセス制御メカニズムを使用する場合
ワークスペース バインディング、特権、ABAC ポリシーはすべて、異なるレベルでアクセスを評価し、一緒に使用するように設計されています。次の表では、一般的なアクセス制御基準でこれらを比較しています。
Databricks では、 ABAC を使用して、管理されたタグに基づいてアクセス制御を一元化およびスケーリングすることをお勧めします。行フィルターと列マスクは、テーブルごとのロジックが必要な場合、または ABAC をまだ採用していない場合にのみ使用します。
機構 | 適用対象 | を使用して定義 | ユースケース |
---|---|---|---|
ワークスペースのバインド | カタログ、外部ロケーション、ストレージ資格情報 | ワークスペースの割り当て | 特定のワークスペースからのオブジェクトへのアクセスの制限 |
権限 | カタログ、スキーマ、テーブル | 助成金( | ベースライン アクセスと委任 |
ABAC ポリシー | タグ付きオブジェクト (テーブル、スキーマ) | 管理されたタグと UDF を持つポリシー | 一元化されたタグ駆動型ポリシーと動的な適用 |
テーブルレベルの行/列フィルター | 個々のテーブル | テーブル自体の UDF | テーブル固有のフィルタリングまたはマスキング |
ダイナミック ビュー | 1 つ以上のテーブルのビュー | SQL (埋め込みフィルターまたはマスク付き) | 読み取り専用アクセス、複雑なロジック、Delta Sharing |