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