Unity Catalog での特権の管理
この記事では、Unity Catalog 内のデータやその他のオブジェクトへのアクセスを制御する方法について説明します。 このモデルがHive metastoreのアクセス制御とどのように異なるかについては、Unity Catalogおよび従来のHive metastoreの操作を参照してください。
特権を管理できるのは誰ですか?
最初は、ユーザーはメタストア内のデータにアクセスできません。 Databricks アカウント管理者、ワークスペース管理者、およびメタストア管理者には、 Unity Catalogを管理するためのデフォルトの特権があります。 「Unity Catalog の管理者特権」を参照してください。
Unity Catalog 内のすべてのセキュリティ保護可能なオブジェクトには所有者がいます。 オブジェクト所有者は、他のプリンシパルに権限を付与する機能を含め、そのオブジェクトに対するすべての権限を持ちます。 所有者は、オブジェクトに対する MANAGE
権限を他のユーザーに付与でき、これによりユーザーはオブジェクトに対する権限を管理できます。 「Unity Catalog オブジェクトの所有権の管理」を参照してください。
特権は、次のいずれかによって付与できます。
- メタストア管理者。
- オブジェクトに対する
MANAGE
権限を持つユーザー。 - オブジェクトの所有者。
- オブジェクトを含むカタログまたはスキーマの所有者。
アカウント管理者は、メタストアで直接権限を付与することもできます。
ワークスペースカタログの権限
ワークスペースでUnity Catalogが自動的に有効になった場合、ワークスペースはデフォルトでメタストアにアタッチされ、メタストア内のワークスペースのワークスペースカタログが作成されます。ワークスペース管理者は、ワークスペースカタログのデフォルト所有者です。所有者は、ワークスペースカタログとすべての子オブジェクトに対する権限を管理できます。
すべてのワークスペース ユーザーは、ワークスペース カタログに対する USE CATALOG
権限を受け取ります。 ワークスペース ユーザーは、カタログ内のdefault
スキーマに対する USE SCHEMA
、 CREATE TABLE
、 CREATE VOLUME
、 CREATE MODEL
、 CREATE FUNCTION
、および CREATE MATERIALIZED VIEW
特権も受け取ります。
詳細については、「Unity Catalogの自動有効化」を参照してください。
継承モデル
Unity Catalog のセキュリティ保護可能なオブジェクトは階層的であり、特権は下位に継承されます。 特権の継承元となる最上位のオブジェクトはカタログです。 つまり、カタログまたはスキーマに対する権限を付与すると、カタログまたはスキーマ内の現在および将来のすべてのオブジェクトに権限が自動的に付与されます。 たとえば、カタログに対する SELECT
権限をユーザーに付与すると、そのユーザーはそのカタログ内のすべてのテーブルとビューを選択 (読み取り) できるようになります。 Unity Catalog メタストアで付与された特権は継承されません。
オブジェクトの所有者には、そのオブジェクトに対するすべての権限が自動的に付与されます。さらに、オブジェクトの所有者は、オブジェクト自体とそのすべての子オブジェクトに対する権限を付与できます。つまり、スキーマの所有者は、スキーマ内のテーブルに対するすべての権限を自動的に持つわけではありませんが、スキーマ内のテーブルに対する権限を自分自身に付与できます。
パブリック プレビュー中 (2022 年 8 月 25 日より前) に Unity Catalog メタストアを作成した場合は、現在の継承モデルをサポートしていない以前の特権モデルを使用している可能性があります。 Privilege Model バージョン 1.0 にアップグレードして、特権の継承を取得できます。 「特権の継承へのアップグレード」を参照してください。
権限の表示、付与、取り消し
メタストア オブジェクトの特権は、SQL コマンド、Databricks CLI、Databricks Terraform プロバイダー、またはカタログ エクスプローラーを使用して管理できます。
次の 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
権限を持つユーザー、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者は、オブジェクトに対するすべての権限を表示できます。 - 上記の権限がない場合、オブジェクトに対する自分の権限のみを表示できます。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Select the object, such as a catalog, schema, table, or view.
- Go to the Permissions tab.
Run the following SQL command in a notebook or SQL query editor. You can show grants on a specific principal, or you can show all grants on a securable object.
SHOW GRANTS [principal] ON <securable-type> <securable-name>
For example, the following command shows all grants on a schema named default in the parent catalog named main:
SHOW GRANTS ON SCHEMA main.default;
The command returns:
principal actionType objectType objectKey
------------- ------------- ---------- ------------
finance-team CREATE TABLE SCHEMA main.default
finance-team USE SCHEMA SCHEMA main.default
Unity Catalog メタストア内のオブジェクトに対する権限の表示
必要な権限: オブジェクトに対する自分の権限はいつでも表示できます。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Select the object, such as a catalog, schema, table, or view.
- Go to the Permissions tab. If you are not an object owner or metastore admin, you can view only your own grants on the object.
Run the following SQL command in a notebook or SQL query editor to show your grants on an object.
SHOW GRANTS `<user>@<domain-name>` ON <securable-type> <securable-name>
Unity Catalog メタストア内のオブジェクトに対するアクセス許可を付与する
必要な権限: メタストア管理者、オブジェクトに対する MANAGE
権限、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Select the object, such as a catalog, schema, table, or view.
- Go to the Permissions tab.
- Click Grant.
- Enter the email address for a user or the name of a group.
- Select the permissions to grant.
- Click OK.
Run the following SQL command in a notebook or SQL query editor.
GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>
For example, the following command grants a group named finance-team access to create tables in a schema named default with the parent catalog named main:
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`;
Note that registered models are a type of function. To grant a privilege on a model, you must use GRANT ON FUNCTION
. For example, to grant the group ml-team-acme
the EXECUTE
privilege on the model prod.ml_team.iris_model
, you’d use:
GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;
Unity Catalog メタストア内のオブジェクトに対するアクセス許可を取り消す
必要な権限: メタストア管理者、オブジェクトに対する MANAGE
権限、オブジェクトの所有者、またはオブジェクトを含むカタログまたはスキーマの所有者。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Select the object, such as a catalog, schema, table, or view.
- Go to the Permissions tab.
- Select a privilege that has been granted to a user, service principal, or group.
- Click Revoke.
- To confirm, click Revoke.
Run the following SQL command in a notebook or SQL query editor.
REVOKE <privilege-type> ON <securable-type> <securable-name> FROM <principal>
For example, the following command revokes a group named finance-team access to create tables in a schema named default with the parent catalog named main:
REVOKE CREATE TABLE ON SCHEMA main.default FROM `finance-team`;
メタストアでの許可の表示
必要な権限: メタストア管理者またはアカウント管理者。 また、メタストアで自分の権限を表示することもできます。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Next to the Catalog Explorer page label, click the icon next to the metastore name.
- Go to the Permissions tab.
Run the following SQL command in a notebook or SQL query editor. You can show grants on a specific principal, or you can show all grants on a metastore.
SHOW GRANTS [principal] ON METASTORE
メタストアに権限を付与する
必要な権限: メタストア管理者またはアカウント管理者。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Next to the Catalog Explorer page label, click the icon next to the metastore name.
- On the Permissions tab, click Grant.
- Enter the email address for a user or the name of a group.
- Select the permissions to grant.
- Click OK.
-
Run the following SQL command in a notebook or SQL query editor.
SQLGRANT <privilege-type> ON METASTORE TO <principal>;
When you grant privileges on a metastore, you do not include the metastore name, because the metastore that is attached to your workspace is assumed.
メタストアの権限を取り消す
必要な権限: メタストア管理者またはアカウント管理者。
- Catalog Explorer
- SQL
- In your Databricks workspace, click
Catalog.
- Next to the Catalog Explorer page label, click the icon next to the metastore name.
- On the Permissions tab, select a user or group and click Revoke.
- To confirm, click Revoke.
-
Run the following SQL command in a notebook or SQL query editor.
SQLREVOKE <privilege-type> ON METASTORE FROM <principal>;
When you revoke privileges on a metastore, you do not include the metastore name, because the metastore that is attached to your workspace is assumed.