Unity Catalog 特権とセキュリティ保護可能なオブジェクト
この記事では、 Unity Catalog 特権モデルについて説明します。 このモデルと Hive metastoreの違いについては、「 Unity Catalog およびレガシ Hive metastoreの操作」を参照してください。
誰が権限を管理できますか?
特権は、メタストア管理者、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者によって付与できます。
ワークスペースで Unity Catalog が自動的に有効になった場合、ワークスペースはデフォルトによってメタストアにアタッチされ、メタストア内のワークスペースのワークスペース カタログが作成されます。 ワークスペース管理者は、ワークスペースカタログのデフォルト所有者です。 所有者は、ワークスペースカタログとすべての子オブジェクトに対する権限を管理できます。
すべてのワークスペース ユーザーに、ワークスペース カタログに対するUSE CATALOG
権限が付与されます。 ワークスペース ユーザーには、カタログ内のdefault
スキーマに対するUSE SCHEMA
、 CREATE TABLE
、 CREATE VOLUME
、 CREATE MODEL
、およびCREATE FUNCTION
権限も付与されます。
詳細については、「 Unity Catalog の自動有効化」を参照してください。
権限 を管理する方法
SQL コマンド、 Databricks CLI 、またはカタログ エクスプローラーを使用して、メタストア オブジェクトの権限を管理できます。 Catalog Explorer を使用して権限を管理する方法については、 「Catalog Explorer で Unity Catalog の権限を管理する」を参照してください。
SQL で特権を管理するには、次の構文を使用して、ノートブックまたは Databricks SQL クエリー エディターで GRANT ステートメントと REVOKE ステートメントを使用します。
GRANT privilege_type ON securable_object TO principal
ここで:
privilege_type
は Unity Catalog 特権タイプですsecurable_object
は、 Unity Catalog内のセキュリティ保護可能なオブジェクトです。principal
は、ユーザー、サービスプリンシパル (アプリケーション ID 値で表される)、またはグループです。 ユーザー名、サービスプリンシパル名、およびグループ名は、 特殊文字 でバッククォート (` `
) で囲む必要があります。 プリンシパルを参照してください。
たとえば、次のコマンドは、 finance-team という名前のグループに、 main という名前の親カタログを持つ Default という名前のスキーマにテーブルを作成するためのアクセス権を付与します。
GRANT CREATE TABLE ON SCHEMA main.default TO `finance-team`;
特権を付与または取り消すほとんどのステートメントは、前の例で示した構文に従い、セキュリティ保護可能なオブジェクトの種類 (SCHEMA
) の後にセキュリティ保護可能なオブジェクトの名前 (main.default
) を指定します。 ただし、メタストアに対する権限を付与する場合は、ワークスペースにアタッチされているメタストアが想定されるため、メタストア名は含まれません。
GRANT CREATE CATALOG ON METASTORE TO `account users`;
SQL コマンドを使用した特権の付与について詳しくは、 Unity Catalogの特権とセキュリティ保護可能なオブジェクトを参照してください。
また、Databricks Terraform プロバイダーと databricks_grantsを使用して特権を管理することもできます。
継承モデル
Unity Catalog 内のセキュリティ保護可能なオブジェクトは階層構造であり、特権は下位に継承されます。特権が継承される最上位レベルのオブジェクトはカタログです。 つまり、カタログまたはスキーマに対する特権を付与すると、カタログまたはスキーマ内の現在および将来のすべてのオブジェクトに特権が自動的に付与されます。 Unity Catalog メタストアで付与された特権は継承されません。
たとえば、次のコマンドは、カタログ main 内のすべてのスキーマ内のすべてのテーブルとビューに対する SELECT
権限をグループ finance に付与します。
GRANT SELECT ON CATALOG main TO finance;
同様に、より小さなアクセス範囲のスキーマに対して許可を実行できます。
GRANT SELECT ON SCHEMA main.default TO finance;
継承モデルを使用すると、データの既定のアクセス規則を簡単に設定できます。 たとえば、次のコマンド を使用すると、機械学習チームはスキーマ内にテーブルを作成し、互いのテーブルを読み取ることができます。
CREATE CATALOG ml;
CREATE SCHEMA ml.team_sandbox;
GRANT USE_CATALOG ON CATALOG ml TO ml_team;
GRANT USE_SCHEMA ON SCHEMA ml.team_sandbox TO ml_team;
GRANT CREATE TABLE ON SCHEMA ml.team_sandbox TO ml_team;
GRANT SELECT ON SCHEMA ml.team_sandbox TO ml_team;
オブジェクトの所有者には、そのオブジェクトに対するすべての権限が自動的に付与されます。 さらに、オブジェクト所有者は、オブジェクト自体とそのすべての子オブジェクトに対する特権を付与できます。 つまり、スキーマの所有者は、スキーマ内のテーブルに対するすべての権限を自動的に付与するわけではありませんが、スキーマ内のテーブルに対する権限を自分自身に付与できます。
Unity Catalog 内のセキュリティ保護可能なオブジェクト
セキュリティ保護可能なオブジェクトは、プリンシパルに特権を付与できる Unity Catalog メタストアで定義されたオブジェクトです。 Unity Catalog 内のセキュリティ保護可能なオブジェクトは階層構造になっています。
セキュリティ保護対象オブジェクトには次のものがあります。
メタストア: メタデータの最上位コンテナー。 各 Unity Catalog メタストアは、3 レベルの名前空間 (
catalog
.schema
.table
)それはあなたのデータを整理します。CATALOG: データ資産を整理するために使用されるオブジェクト階層の最初のレイヤー。 外部カタログは、レイクハウスフェデレーションシナリオで外部データシステム内のデータベースをミラーリングする特別な カタログ タイプです。
スキーマ: データベースとも呼ばれます。オブジェクト階層の第2層であり、テーブルとビューが格納されます。
テーブル: オブジェクト階層の最下位レベルのテーブルは、 外部 (選択したクラウド ストレージ内の外部ロケーションに格納) または マネージド テーブル (Databricks 用に明示的に作成したクラウド ストレージ内のストレージ コンテナーに格納される) にすることができます。
VIEW: スキーマ内に含まれる 1 つ以上のテーブルに対するクエリから作成された読み取り専用オブジェクト。
VOLUME: オブジェクト階層の最下位レベルであるボリュームは、 外部 (選択したクラウド ストレージの外部ロケーションに格納) または 管理 (Databricks 用に明示的に作成したクラウド ストレージ内のストレージ コンテナーに格納される) にすることができます。
登録済みモデル: スキーマ内に含まれる MLflow 登録済みモデル 。
FUNCTION: スキーマ内に含まれるユーザー定義関数。 Unity Catalogのユーザー定義関数 (UDF) を参照してください。
外部ロケーション: ストレージ資格情報への参照と、 Unity Catalog メタストア内に含まれるクラウド ストレージ パスを含むオブジェクト。
ストレージ資格情報: Unity Catalog メタストア内に含まれるクラウドストレージへのアクセスを提供する長期的なクラウド資格情報をカプセル化するオブジェクト。
CONNECTION: レイクハウスフェデレーションシナリオで外部データベースシステムにアクセスするためのパスと資格情報を指定するオブジェクト。
SHARE: Delta Sharingを使用して共有するテーブルの論理グループ。 共有は、 Unity Catalog メタストア内に含まれています。
受信者: Delta Sharingを使用してデータを共有できる組織またはユーザーのグループを識別するオブジェクト。 これらのオブジェクトは、 Unity Catalog メタストア内に含まれています。
PROVIDER: Delta Sharingを使用してデータを共有できるようにした組織を表すオブジェクト。 これらのオブジェクトは、 Unity Catalog メタストア内に含まれています。
Unity Catalog 内のセキュリティ保護可能なオブジェクト別の特権タイプ
次の表に、 Unity Catalog内のセキュリティ保護可能な各オブジェクトに適用される特権の種類を示します。
セキュリティ保護可能 |
特権 |
---|---|
メタストア |
|
カタログ |
すべてのユーザーは、デフォルトによって 次の権限タイプは、カタログ内のセキュリティ保護可能なオブジェクトに適用されます。 これらの特権をカタログ・レベルで付与して、カタログ内の現在および将来の関連オブジェクトに適用できます。
|
スキーマ |
次の特権の種類は、スキーマ内のセキュリティ保護可能なオブジェクトに適用されます。 これらの権限をスキーマレベルで付与して、スキーマ内の関連する現在および将来のオブジェクトに適用できます。
|
テーブル |
|
眺める |
|
容積 |
|
外部ロケーション |
|
ストレージ資格情報 |
|
接続 |
|
機能 |
|
登録モデル |
|
共有 |
|
受信者 |
何一つ |
プロバイダー |
何一つ |
メタストアの特権を管理する場合、SQL コマンドにメタストア名を含めません。 Unity Catalog 、ワークスペースにアタッチされているメタストアに対する権限を付与または取り消します。 たとえば、次のコマンドは、 エンジニアリング という名前のグループに、ワークスペースにアタッチされたメタストアにカタログを作成する権限を付与します。
GRANT CREATE CATALOG ON METASTORE TO engineering
一般的な Unity Catalog 特権タイプ
このセクションでは、 Unity Catalogに一般的に適用される権限タイプについて詳しく説明します。
すべての特権
適用可能なオブジェクトタイプ: CATALOG
, EXTERNAL LOCATION
, STORAGE CREDENTIAL
, SCHEMA
, FUNCTION
, REGISTERED MODEL
, TABLE
, VIEW,
VOLUME
セキュリティ保護可能なオブジェクトとその子オブジェクトに適用可能なすべての特権を明示的に指定せずに付与または取り消すために使用されます。
オブジェクトに対して ALL PRIVILEGES
が付与された場合、付与時に該当する各特権がユーザーに個別に付与されることはありません。 代わりに、アクセス許可のチェックが行われた時点で使用可能なすべての特権に展開されます。
ALL PRIVILEGES
取り消されると、 ALL PRIVILEGES
特権が取り消され、オブジェクトに対してユーザーに付与された明示的な特権も取り消されます。
注
この特権は、階層の上位レベルで適用すると強力です。 たとえば、GRANT ALL PRIVILEGES CATALOG main TO analysts
は、カタログ内のすべてのオブジェクト (スキーマ、テーブル、ビュー、関数) に対するすべての権限をアナリスト チームに付与します。
タグの適用
適用可能なオブジェクトタイプ: CATALOG
、 SCHEMA
、 REGISTERED MODEL
、 TABLE
、 VIEW
オブジェクトにタグを追加および編集することを許可します。 テーブルまたはビューに APPLY TAG
を付与すると、列のタグ付けも有効になります。
また、ユーザーは、親カタログに対する USE CATALOG
特権と、親スキーマに対する USE SCHEMA
特権を持っている必要があります。
ブラウズ
適用可能なオブジェクトタイプ: CATALOG
, EXTERNAL LOCATION
プレビュー
この機能はパブリックプレビュー段階です。
ユーザーは、カタログ エクスプローラー、スキーマ ブラウザ、検索結果、リネージ グラフ、 information_schema
、および REST API を使用してオブジェクトのメタデータを表示できます。
ユーザーには、親カタログに対する USE CATALOG
特権や、親スキーマに対する USE SCHEMA
は必要ありません。
CREATE CATALOG
適用可能なオブジェクトの種類: Unity Catalog メタストア
ユーザーが Unity Catalog メタストアにカタログを作成できるようにします。 外部カタログを作成するには、外部カタログを含む接続またはメタストアに対する CREATE FOREIGN CATALOG 特権も必要です。
外部ロケーション を作成する
適用可能なオブジェクトの種類: Unity Catalog メタストア、 STORAGE CREDENTIAL
外部ロケーションを作成するには、ユーザーは、メタストアと、外部ロケーションで参照されているストレージ資格情報の両方に対してこの特権を持っている必要があります。
外部テーブル の作成
適用可能なオブジェクトタイプ: EXTERNAL LOCATION
, STORAGE CREDENTIAL
ユーザーは、外部ロケーションまたはストレージ資格情報を使用して、クラウド テナントに外部テーブルを直接作成できます。 Databricks では、ストレージ資格情報ではなく外部ロケーションにこの特権を付与することをお勧めします (パスにスコープが設定されているため、ユーザーがクラウド テナントで外部テーブルを作成できる場所をより細かく制御できます)。
CREATE FUNCTION
適用可能なオブジェクトタイプ: SCHEMA
ユーザーがスキーマに関数を作成できるようにします。 特権は継承されるため、 CREATE FUNCTION
カタログにも付与でき、ユーザーはカタログ内の既存または将来のスキーマに関数を作成できます。
また、ユーザーは、親カタログに対する USE CATALOG
特権と、親スキーマに対する USE SCHEMA
特権を持っている必要があります。
モデル の作成
適用可能なオブジェクトタイプ: SCHEMA
ユーザーがスキーマに MLflow 登録済みモデルを作成できるようにします。 特権は継承されるため、カタログに CREATE MODEL
を付与することもでき、ユーザーはカタログ内の既存または将来のスキーマに登録済みモデルを作成できます。
また、ユーザーは、親カタログに対する USE CATALOG
特権と、親スキーマに対する USE SCHEMA
特権を持っている必要があります。
管理対象ストレージ の作成
適用可能なオブジェクトタイプ: EXTERNAL LOCATION
ユーザーは、カタログ レベルまたはスキーマ レベルでマネージ テーブルを格納する場所を指定し、メタストアの既定のルート ストレージをオーバーライドできます。
CREATE TABLE
適用可能なオブジェクトタイプ: SCHEMA
ユーザーがスキーマにテーブルまたはビューを作成できるようにします。 特権は継承されるため、カタログに対して CREATE TABLE
を付与することもでき、ユーザーはカタログ内の既存または将来のスキーマにテーブルまたはビューを作成できます。
また、ユーザーは、親カタログに対する USE CATALOG
特権と、親スキーマに対する USE SCHEMA
特権を持っている必要があります。
ボリューム の作成
適用可能なオブジェクトタイプ: SCHEMA
ユーザーがスキーマにボリュームを作成できるようにします。 特権は継承されるため、カタログに CREATE VOLUME
を付与することもでき、ユーザーはカタログ内の既存または将来のスキーマにボリュームを作成できます。
ユーザーは、ボリュームの親カタログに対する USE CATALOG
特権と、その親スキーマに対する USE SCHEMA
特権も持っている必要があります。
実行する
適用可能なオブジェクトタイプ: FUNCTION
, REGISTERED MODEL
ユーザーが親カタログに USE CATALOG
を持ち、親スキーマに USE SCHEMA
がある場合、ユーザーはユーザー定義関数を呼び出したり、推論のためにモデルをロードしたりできます。 関数の場合、 EXECUTE
関数は、関数定義とメタデータを表示する権限を付与します。 登録済みモデルの場合、 EXECUTE
は、登録済みモデルのすべてのバージョンのメタデータを表示し、モデル ファイルをダウンロードする権限を付与します。
特権は継承されるため、カタログまたはスキーマに対する EXECUTE
特権をユーザーに付与すると、カタログまたはスキーマ内の現在および将来のすべての関数に対する EXECUTE
特権が自動的にユーザーに付与されます。
許可リスト の管理
適用可能なオブジェクトの種類: Unity Catalog メタストア
ユーザーは、共有アクセス モードで Unity カタログ対応クラスターを管理する許可リスト内の initScript、JAR、および Maven 座標のパスを追加または変更できます。 共有コンピュートの許可リストライブラリとinitスクリプトを参照してください。
修飾する
適用可能なオブジェクトタイプ: TABLE
ユーザーがテーブルに対して SELECT
、親カタログに USE CATALOG
、親スキーマに USE SCHEMA
を持っている場合、ユーザーがテーブルに対してデータを追加、更新、および削除できるようにします。
特権は継承されるため、カタログまたはスキーマに対する MODIFY
特権をユーザーに付与すると、カタログまたはスキーマ内の現在および将来のすべての表に対する MODIFY
特権が自動的にユーザーに付与されます。
ファイル の読み取り
適用可能なオブジェクトタイプ: VOLUME
, EXTERNAL LOCATION
ユーザーがクラウドオブジェクトストレージから直接ファイルを読み取ることを許可します。 Databricks では、ボリュームに対してこの特権を付与し、限られたユース ケースでは外部の場所に付与することをお勧めします。 詳細なガイダンスについては、「外部 の場所、外部テーブル、および外部ボリュームの管理」を参照してください。
読み取りボリューム
適用可能なオブジェクトタイプ: VOLUME
ユーザーが親カタログにも USE CATALOG
し、親スキーマにも USE SCHEMA
がある場合、ボリューム内に格納されているファイルとディレクトリを読み取ることができます。
特権は継承されます。 カタログまたはスキーマに対する READ VOLUME
特権をユーザーに付与できる場合、カタログまたはスキーマ内の現在および将来のすべてのボリュームに対する READ VOLUME
特権をユーザーに自動的に付与します。
選ぶ
適用可能なオブジェクトタイプ: TABLE
, VIEW
, SHARE
テーブルまたはビューに適用した場合、ユーザーが親カタログにも USE CATALOG
し、親スキーマにも USE SCHEMA
がある場合、ユーザーはテーブルまたはビューから選択できるようになります。 共有に適用すると、受信者は共有から選択できます。
権限は継承されるため、カタログまたはスキーマに対する SELECT
権限をユーザーに付与すると、カタログまたはスキーマ内の現在および将来のすべてのテーブル、およびビューに対する SELECT
権限が自動的に付与されます。
カタログ を使用
適用可能なオブジェクトタイプ: CATALOG
この特権は、カタログ自体へのアクセスを許可しませんが、ユーザーがカタログ内の任意のオブジェクトと対話するために必要です。 たとえば、テーブルからデータを選択するには、ユーザーはそのテーブルに対する SELECT
権限、親カタログに対する USE CATALOG
権限、および親スキーマに対する USE SCHEMA
権限を持っている必要があります。
これは、カタログ所有者が、個々のスキーマおよびテーブル所有者が生成するデータを共有できる範囲を制限できるようにする場合に便利です。 たとえば、別のユーザーに SELECT
を付与するテーブル所有者は、親カタログに対する USE CATALOG
権限と親スキーマに対する USE SCHEMA
権限も付与されていない限り、そのユーザーにテーブルへの読み取りアクセスを許可しません。
ユーザーがそのカタログに対するBROWSE
権限を持っている場合、親カタログに対するUSE CATALOG
権限は、オブジェクトのメタデータを読み取るために必要ありません。
接続 を使用
適用可能なオブジェクトタイプ: CONNECTION
ユーザーは、レイクハウス フェデレーション シナリオで外部データベースへの接続に関する詳細を一覧表示および表示できます。 接続の外部カタログを作成するには、接続に対する CREATE FOREIGN CATALOG
または接続の所有権が必要です。
スキーマ を使用する
適用可能なオブジェクトタイプ: SCHEMA
この特権は、スキーマ自体へのアクセスを許可しませんが、ユーザーがスキーマ内の任意のオブジェクトと対話するために必要です。 たとえば、テーブルからデータを選択するには、ユーザーはそのテーブルに対する SELECT
権限を持ち、その親スキーマとその親カタログに対する USE CATALOG
USE SCHEMA
必要があります。
特権は継承されるため、カタログに対する USE SCHEMA
特権をユーザーに付与すると、カタログ内の現在および将来のすべてのスキーマに対する USE SCHEMA
特権が自動的にユーザーに付与されます。
ユーザーがそのスキーマまたはその親カタログに対するBROWSE
特権を持っている場合、親スキーマに対するUSE SCHEMA
特権は、オブジェクトのメタデータを読み取るためには必要ありません。
ファイルの 書き込み
適用可能なオブジェクトタイプ: VOLUME
,EXTERNAL LOCATION
ユーザーがクラウドオブジェクトストレージにファイルを直接書き込めるようにします。 Databricks では、ボリュームに対してこの特権を付与することをお勧めします。 この特権は、外部の場所に対して控えめに付与してください。 詳細なガイダンスについては、「外部 の場所、外部テーブル、および外部ボリュームの管理」を参照してください。
Delta Sharing または Databricks Marketplace にのみ適用される特権タイプ
このセクションでは、 Delta Sharingにのみ適用される権限タイプについて詳しく説明します。
プロバイダー の作成
適用可能なオブジェクトの種類: Unity Catalog メタストア
ユーザーがメタストア内にDelta Sharingプロバイダー オブジェクトを作成できるようにします。 プロバイダーは、 Delta Sharing使用してデータを共有している組織またはユーザーのグループを識別します。 プロバイダーの作成は、受信者の Databricks アカウントのユーザーによって実行されます。 Delta Sharing使用してデータと AI アセットを安全に共有するを参照してください。
CREATE RECIPIENT
適用可能なオブジェクトの種類: Unity Catalog メタストア
ユーザーがメタストア内にDelta Sharing受信者オブジェクトを作成できるようにします。 受信者は、 Delta Sharingを使用してデータを共有できる組織またはユーザーのグループを識別します。 受信者の作成は、プロバイダーの Databricks アカウントのユーザーによって実行されます。 Delta Sharing使用してデータと AI アセットを安全に共有するを参照してください。
Marketplace 資産 の使用
適用可能なオブジェクトの種類: Unity Catalog メタストア
すべてのメタストア Unity Catalog 既定で有効になっています。 Databricks Marketplace では、この特権により、ユーザーは、マーケットプレースの一覧で共有されているデータ製品にすぐにアクセスしたり、アクセスを要求したりできます。 また、ユーザーは、プロバイダーがデータ製品を共有するときに作成される読み取り専用カタログにアクセスできます。 この権限がない場合、ユーザーには CREATE CATALOG
および USE PROVIDER
権限、またはメタストア管理者ロールが必要になります。 これにより、これらの強力なアクセス許可を持つユーザーの数を制限できます。
プロバイダー を使用する
適用可能なオブジェクトの種類: Unity Catalog メタストア
Delta Sharing で、受信者メタストア内のすべてのプロバイダーとその共有に対する読み取り専用アクセス権を受信者ユーザーに付与します。 CREATE CATALOG
特権と組み合わせると、メタストア管理者ではない受信者ユーザーが共有をカタログとしてマウントできるようになります。これにより、強力なメタストア管理者ロールを持つユーザーの数を制限できます。
受信者 を使用
適用可能なオブジェクトの種類: Unity Catalog メタストア
Delta Sharing で、プロバイダー メタストア内のすべての受信者とその共有に対する読み取り専用アクセス権をプロバイダー ユーザーに付与します。 これにより、メタストア管理者ではないプロバイダー ユーザーは、受信者の詳細、受信者の認証状態、およびプロバイダーが受信者と共有している共有の一覧を表示できます。
Databricks Marketplace では、これにより、プロバイダー ユーザーはプロバイダー コンソールでリストとコンシューマー要求を表示できます。