このページでは、Unity カタログ内のデータやその他のオブジェクトへのアクセスを制御する方法について説明します。 このモデルと Hive メタストアでのアクセス制御の違いについては、「 Unity カタログと共に従来の Hive メタストアを操作する」を参照してください。
特権を管理できるのは誰ですか?
初期状態では、ユーザーはメタストア内のデータにアクセスできません。 Azure Databricks アカウント管理者、ワークスペース管理者、メタストア管理者には、Unity Catalog を管理するための既定の特権があります。 「Unity Catalog の管理者特権」に関する記事を参照してください。
Unity Catalog 内のすべてのセキュリティ保護可能なオブジェクトには所有者が存在します。 オブジェクト所有者は、他のプリンシパルに権限を付与する機能を含め、そのオブジェクトに対するすべての権限を持ちます。 所有者は、オブジェクトに対する MANAGE
特権を他のユーザーに付与できます。これにより、ユーザーはオブジェクトに対する特権を管理できます。 「Unity Catalog オブジェクトの所有権を管理する」を参照してください。
特権は、次のいずれかによって付与できます。
- メタストア管理者。
- オブジェクトに対する
MANAGE
権限を持つユーザー。 - オブジェクトの所有者。
- オブジェクトを含むカタログまたはスキーマの所有者。
アカウント管理者は、メタストアで直接権限を付与することもできます。
ワークスペース カタログ特権
ワークスペースで Unity Catalog が自動的に有効になった場合、ワークスペースは既定でメタストアにアタッチされ、メタストア内のワークスペースに対してワークスペース カタログが作成されます。 ワークスペース管理者は、ワークスペース カタログの既定の所有者です。 所有者は、ワークスペース カタログとすべての子オブジェクトに対する特権を管理できます。
すべてのワークスペース ユーザーは、ワークスペース カタログに対する USE CATALOG
特権を受け取ります。 ワークスペース ユーザーは、カタログ内の USE SCHEMA
スキーマに対する CREATE TABLE
、CREATE VOLUME
、CREATE MODEL
、CREATE FUNCTION
、CREATE MATERIALIZED VIEW
、default
の特権も受け取ります。
詳細については、「Unity Catalog の自動有効化」を参照してください。
継承モデル
Unity Catalog のセキュリティ保護可能なオブジェクトは階層構造であり、権限は下位に継承されます。 特権が継承される最上位レベルのオブジェクトは、カタログです。 つまり、カタログまたはスキーマに対する権限を付与すると、カタログまたはスキーマ内のすべての現在および将来のオブジェクトに権限が自動的に付与されます。 たとえば、ユーザーにカタログに対する SELECT
特権を付与すると、そのユーザーはそのカタログ内にあるすべてのテーブルとビューの選択 (読み取り) ができるようになります。 Unity Catalog メタストアで付与された特権は継承されません。
オブジェクトの所有者には、そのオブジェクに対するすべての特権が自動的に付与されます。 さらに、オブジェクト所有者は、オブジェクト自体とそのすべての子オブジェクトに対する特権を付与できます。 つまり、スキーマの所有者は、スキーマ内のテーブルに対するすべての特権を自動的に得られるわけではありませんが、スキーマ内のテーブルに対する特権を自分自身に付与できます。
注
パブリック プレビュー中 (2022 年 8 月 25 日より前) に Unity カタログメタストアを作成した場合は、現在の継承モデルをサポートしていない以前の特権モデルを使用している可能性があります。 Privilege Model バージョン 1.0 にアップグレードすると、特権の継承を取得できます。 「特権継承へのアップグレード」を参照してください。
特権を表示、付与、取り消す
SQL コマンド、Databricks CLI、Databricks Terraform プロバイダー、または Catalog Explorer を使用して、メタストア オブジェクトの特権を管理できます。
次の SQL コマンドで、これらのプレースホルダー値を置き換えます。
<privilege-type>
は Unity Catalog の特権の種類です。 「特権の種類」を参照してください。<securable-type>
:CATALOG
やTABLE
などのセキュリティ保護可能なオブジェクトの型。 「セキュリティ保護可能なオブジェクト」を参照してください<securable-name>
: セキュリティ保護可能なリソースの名前。 セキュリティ保護可能な型がMETASTORE
の場合は、セキュリティ保護可能な名前を指定しないでください。 ワークスペースにアタッチされているメタストアとみなされます。<principal>
は、ユーザー、サービス プリンシパル (applicationId 値で表される)、またはグループです。 特殊文字を含むユーザー、サービス プリンシパル、およびグループ名は、バックティック (` `
) で囲む必要があります。 「プリンシパル」を参照してください。
Unity Catalog メタストア内のオブジェクトに対する許可を表示する
注
現在、オブジェクトに対する MANAGE
特権を持つユーザーは、そのオブジェクトのすべての許可を INFORMATION_SCHEMA
で表示することはできません。 代わりに、INFORMATION_SCHEMA
では、オブジェクトに対する自身の許可のみが表示されます。 この動作は、今後修正される予定です。
MANAGE
特権を持つユーザーは、SQL コマンドまたはカタログ エクスプローラーを使用して、オブジェクトでのすべての許可を表示できます。 「Unity Catalog の特権の管理」を参照してください。
必要なアクセス許可:
- メタストア管理者、オブジェクトに対する
MANAGE
特権を持つユーザー、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者は、オブジェクトのすべての許可を表示できます。 - 上記のアクセス許可がない場合、オブジェクトに対する自身の許可のみを表示できます。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
- [アクセス許可] タブに移動します。
SQL
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。 特定のプリンシパルに対する許可を表示することも、セキュリティ保護可能なオブジェクトに対するすべての許可を表示することもできます。
SHOW GRANTS [principal] ON <securable-type> <securable-name>
たとえば、次のコマンドは、main という名前の親カタログに含まれる default という名前のスキーマに対するすべての許可を表示します。
SHOW GRANTS ON SCHEMA main.default;
このコマンドによって次の情報が返されます。
principal actionType objectType objectKey
------------- ------------- ---------- ------------
finance-team CREATE TABLE SCHEMA main.default
finance-team USE SCHEMA SCHEMA main.default
Unity Catalog メタストア内のオブジェクトに対する自身の許可を表示する
必要なアクセス許可: オブジェクトに対する自分の許可を常に表示できます。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
- [アクセス許可] タブに移動します。オブジェクト所有者でもメタストア管理者でもないユーザーは、オブジェクトに対する自身の許可のみを表示できます。
SQL
ノートブックまたは SQL クエリエディタで次の SQL コマンドを実行して、オブジェクトに対する許可を表示します。
SHOW GRANTS `<user>@<domain-name>` ON <securable-type> <securable-name>
Unity カタログ メタストア内のオブジェクトに対するアクセス許可を付与する
必要なアクセス許可: メタストア管理者、オブジェクトに対する MANAGE
特権を持つユーザー、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
- [アクセス許可] タブに移動します。
- [許可] をクリックします。
- ユーザーのメール アドレスまたはグループの名前を入力します。
- 付与するアクセス許可を選択します。
- [OK] をクリックします。
SQL
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。
GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>
たとえば、次のコマンドは、finance-team という名前のグループに、main という名前の親カタログを使用して default という名前のスキーマにテーブルを作成するためのアクセスを付与します。
GRANT CREATE TABLE ON SCHEMA main.default TO `finance-team`;
GRANT USE SCHEMA ON SCHEMA main.default TO `finance-team`;
GRANT USE CATALOG ON CATALOG main TO `finance-team`;
登録されたモデルは関数の種類であることに注意してください。 モデルに特権を付与するには、GRANT ON FUNCTION
を使用する必要があります。 たとえば、モデル ml-team-acme
に対するEXECUTE
権限prod.ml_team.iris_model
グループに付与するには、次のコマンドを使用します。
GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;
Unity Catalog メタストア内のオブジェクトに対するアクセス許可を取り消す
必要なアクセス許可: メタストア管理者、オブジェクトに対する MANAGE
特権を持つユーザー、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
- [アクセス許可] タブに移動します。
- ユーザー、サービス プリンシパル、またはグループに許可されている特権を選択します。
- [取り消し] をクリックします。
- 確定するために、[取り消し] をクリックします。
SQL
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。
REVOKE <privilege-type> ON <securable-type> <securable-name> FROM <principal>
たとえば、次のコマンドは、finance-team という名前のグループに付与した、main という名前の親カタログを使用して default という名前のスキーマにテーブルを作成するためのアクセスを取り消します。
REVOKE CREATE TABLE ON SCHEMA main.default FROM `finance-team`;
指定した特権が最初に付与されなかった場合でも、 REVOKE
ステートメントは成功します。 これにより、以前の状態に関係なく、特権が存在しないことが保証されます。
メタストアに対する許可を表示する
必要なアクセス許可: メタストア管理者またはアカウント管理者。メタストアで自身の許可を表示することもできます。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- Catalog Explorer ページ ラベルの横で、メタストア名の横にあるアイコンをクリックします。
- [アクセス許可] タブに移動します。
SQL
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。 特定のプリンシパルに対する許可を表示することも、メタストアに対するすべての許可を表示することもできます。
SHOW GRANTS [principal] ON METASTORE
メタストアに対するアクセス許可を付与する
必要なアクセス許可: メタストア管理者またはアカウント管理者。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- Catalog Explorer ページ ラベルの横で、メタストア名の横にあるアイコンをクリックします。
- [アクセス許可] タブで [付与] をクリックします。
- ユーザーのメール アドレスまたはグループの名前を入力します。
- 付与するアクセス許可を選択します。
- [OK] をクリックします。
SQL
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。
GRANT <privilege-type> ON METASTORE TO <principal>;
メタストアに対する特権を付与する場合は、ワークスペースにアタッチされているメタストアが想定されるため、メタストア名を含めることはできません。
メタストアに対するアクセス許可を取り消す
必要なアクセス許可: メタストア管理者またはアカウント管理者。
カタログ エクスプローラー
- Azure Databricks ワークスペースで、[
カタログ。
- Catalog Explorer ページ ラベルの横で、メタストア名の横にあるアイコンをクリックします。
- [アクセス許可] タブで、ユーザーまたはグループを選択し、[取り消し] をクリックします。
- 確定するために、[取り消し] をクリックします。
SQL
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。
REVOKE <privilege-type> ON METASTORE FROM <principal>;
メタストアに対する特権を取り消す場合は、ワークスペースにアタッチされているメタストアが想定されるため、メタストア名を含めることはできません。