Unity Catalog の権限とセキュリティ保護可能なオブジェクト
適用対象: Databricks SQL Databricks Runtime Unity Catalog のみ
権限は、メタストア内のセキュリティ保護可能なオブジェクトを操作するためにプリンシパルに付与される権限です。 権限モデルとセキュリティ保護可能なオブジェクトは、Unity Catalog メタストアとレガシの Hive メタストアのどちらを使用しているかによって異なります。 この記事では、Unity Catalog の権限モデルについて説明します。 Hive メタストアを使用している場合は、「Hive メタストアの権限とセキュリティ保護可能なオブジェクト」を参照してください
注意
この記事では、特権モデル バージョン 1.0 の Unity Catalog の特権と継承モデルについて説明します。 パブリック プレビュー期間中 (2022 年 8 月 25 日より前) に Unity Catalog メタストアを作成した場合は、「特権継承へのアップグレード」に従って、Privilege Model バージョン 1.0 にアップグレードします。
セキュリティ保護可能なオブジェクト
セキュリティ保護可能なオブジェクトは、プリンシパルに権限を付与できる Unity Catalog メタストアで定義されているオブジェクトです。 オブジェクトに対する権限を管理するには、その所有者である必要があります。
構文
securable_object
{ CATALOG [ catalog_name ] |
CONNECTION connection_name |
EXTERNAL LOCATION location_name |
FUNCTION function_name |
METASTORE |
SCHEMA schema_name |
SHARE share_name |
STORAGE CREDENTIAL credential_name |
[ TABLE ] table_name |
MATERIALIZED VIEW view_name |
VIEW view_name |
VOLUME volume_name
}
CONNECTION
の代わりに SERVER
、SCHEMA
の代わりに DATABASE
を指定することもできます。
パラメーター
CATALOG
catalog_nameデータ カタログ全体へのアクセスを制御します。
CONNECTION
接続名接続へのアクセスを制御します。
EXTERNAL LOCATION
location_name外部の場所へのアクセスを制御します。
FUNCTION
function_nameユーザー定義関数へのアクセスを制御します。
MATERIALIZED VIEW
view_name重要
この機能はパブリック プレビュー段階にあります。 アクセスにサインアップするには、このフォームに入力します。
具体化されたビューへのアクセスを制御します。
METASTORE
ワークスペースにアタッチされている Unity Catalog メタストアへのアクセスを制御します。 メタストアの権限を管理する場合、SQL コマンドにメタストア名を含めないでください。 Unity Catalog は、ワークスペースにアタッチされているメタストアに対する権限を付与または取り消します。
REGISTERED MODEL
MLflow 登録済みモデルへのアクセスを制御します。
SCHEMA
schema_nameスキーマへのアクセスを制御します。
STORAGE CREDENTIAL
credential_nameストレージ資格情報へのアクセスを制御します。
SHARE
share_nameTABLE
table_nameマネージドまたは外部のテーブルへのアクセスを制御します。 テーブルが見つからない場合、Azure Databricks で TABLE_OR_VIEW_NOT_FOUND エラーが発生します。
VIEW
view_nameビューへのアクセスを制御します。 ビューが見つからない場合、Azure Databricks では TABLE_OR_VIEW_NOT_FOUND エラーが生じます。
VOLUME
volume_nameボリュームへのアクセスを制御します。 ボリュームが見つからない場合、Azure Databricks によってエラーが発生します。
継承モデル
Unity Catalog のセキュリティ保護可能なオブジェクトは階層構造であり、権限は下位に継承されます。 つまり、カタログに対する権限を付与することで、カタログ内の現在および将来のすべてのスキーマに対する権限が自動的に付与されます。 同様に、スキーマに対して付与された権限は、そのスキーマ内の現在および将来のすべてのテーブルとビューに継承されます。
たとえば、スキーマに対する SELECT
権限をユーザーに付与すると、そのスキーマ内の現在および将来のすべてのテーブル、ビュー、具体化されたビューに対する SELECT
権限がそのユーザーに自動的に付与されます。
特権の種類
次の表は、どの Unity Catalog 権限がどの Unity Catalog セキュリティ保護可能なオブジェクトに関連付けられているかを示しています。
セキュリティ保護可能 | 特権 |
---|---|
メタストア | CREATE CATALOG 、CREATE CONNECTION 、CREATE EXTERNAL LOCATION 、CREATE PROVIDER 、CREATE RECIPIENT 、CREATE SHARE 、CREATE STORAGE CREDENTIAL 、SET SHARE PERMISSION 、USE MARKETPLACE ASSETS 、USE PROVIDER 、USE RECIPIENT 、USE SHARE |
Catalog | ALL PRIVILEGES 、APPLY TAG 、BROWSE 、CREATE SCHEMA 、USE CATALOG 既定では、すべてのユーザーの main カタログに USE CATALOG があります。カタログ内のセキュリティ保護可能なオブジェクトには、次の特権の種類が適用されます。 カタログ レベルでこれらの権限を付与して、カタログ内の関連する現在および将来のオブジェクトに適用できます。 CREATE FUNCTION 、CREATE TABLE 、CREATE MODEL 、CREATE VOLUME 、CREATE FOREIGN CATALOG 、READ VOLUME 、REFRESH 、WRITE VOLUME 、EXECUTE 、MODIFY 、SELECT 、USE SCHEMA |
[スキーマ] | ALL PRIVILEGES , APPLY TAG , CREATE FUNCTION , CREATE TABLE , CREATE MODEL , CREATE VOLUME , CREATE MATERIALIZED VIEW , USE SCHEMA スキーマ内のセキュリティ保護可能なオブジェクトには、次の特権の種類が適用されます。 スキーマ レベルでこれらの権限を付与して、カタログ内の関連する現在および将来のオブジェクトに適用できます。 EXECUTE 、MODIFY 、SELECT 、READ VOLUME 、REFRESH 、WRITE VOLUME |
テーブル | ALL PRIVILEGES 、APPLY TAG 、MODIFY , SELECT |
具体化されたビュー | ALL PRIVILEGES 、APPLY TAG 、REFRESH , SELECT |
表示 | ALL PRIVILEGES 、APPLY TAG 、SELECT |
体積 | ALL PRIVILEGES 、READ VOLUME 、WRITE VOLUME |
外部の場所 | ALL PRIVILEGES 、BROWSE 、CREATE EXTERNAL TABLE 、CREATE EXTERNAL VOLUME 、READ FILES 、WRITE FILES 、CREATE MANAGED STORAGE |
ストレージの資格情報 | ALL PRIVILEGES 、CREATE EXTERNAL LOCATION 、CREATE EXTERNAL TABLE 、READ FILES 、WRITE FILES |
つながり | ALL PRIVILEGES 、CREATE FOREIGN CATALOG 、USE CONNECTION |
機能 | ALL PRIVILEGES 、EXECUTE |
登録済みのモデル | ALL PRIVILEGES 、APPLY TAG 、EXECUTE |
共有 | SELECT (RECIPIENT に付与可能) |
Recipient | なし |
プロバイダー | なし |
APPLY TAG
オブジェクトにタグを適用および編集します。
ALL PRIVILEGES
セキュリティ保護可能なオブジェクトとその子オブジェクトに適用可能なすべての権限を、明示的に指定せずに許可または取り消すために使用されます。 これにより、アクセス許可のチェックが行われた時点で使用可能なすべての特権に拡張されます。 許可時に適用可能なそれぞれの権限をユーザーに個別に許可するわけではありません。
ALL PRIVILEGES
が取り消されると、ALL PRIVILEGES
権限自体のみが取り消されます。 ユーザーは、個別に付与されたその他すべての権限を保持します。BROWSE
重要
この機能はパブリック プレビュー段階にあります。
カタログ エクスプローラー、スキーマ ブラウザー、検索結果、系列グラフ、
information_schema
、REST API を使用してオブジェクトのメタデータを表示します。 ユーザーには、親カタログに対するUSE CATALOG
特権と親スキーマに対するUSE SCHEMA
は必要ありません。CREATE CATALOG
Unity Catalog メタストア内にカタログを作成します。
CREATE CONNECTION
Unity Catalog メタストアで外部接続を作成します。
CREATE EXTERNAL LOCATION
ストレージ資格情報を使用して外部の場所を作成します。 ストレージの資格情報に適用すると、ユーザーはストレージの資格情報を使用して外部の場所を作成できます。 この権限はメタストア上のユーザーにも付与して、そのメタストア内に外部の場所を作成できるようにする必要があります。
CREATE EXTERNAL TABLE
CREATE EXTERNAL VOLUME
CREATE FOREIGN CATALOG
外部接続でカタログを作成します。 その後、各外部カタログは、フェデレーション ターゲット システムで使用できるスキーマを公開します。
CREATE FUNCTION
スキーマに関数を作成します。 ユーザーには、カタログに対する
USE CATALOG
権限とスキーマに対するUSE SCHEMA
権限も必要です。CREATE MANAGED STORAGE
ユーザーがカタログまたはスキーマ レベルでマネージド テーブルを格納する場所を指定でき、Unity Catalog メタストアの既定のルート ストレージがオーバーライドされます。
CREATE MATERIALIZED VIEW
ユーザーがスキーマに具体化されたビューを作成できるようにします。 特権は継承されるため、
CREATE MATERIALIZED VIEW
はカタログに対して付与することもでき、これにより、ユーザーはカタログ内の既存または将来のスキーマにテーブルまたはビューを作成できます。ユーザーには、親カタログに対する
USE CATALOG
特権と、親スキーマに対するUSE SCHEMA
も必要です。CREATE MODEL
ユーザーが MLflow 登録済みモデルをスキーマに作成できるようにします。 特権は継承されるため、
CREATE MODEL
はカタログに対して付与することもでき、これにより、ユーザーはカタログ内の既存または将来のスキーマに登録済みモデルを作成できます。ユーザーには、親カタログに対する
USE CATALOG
特権と、親スキーマに対するUSE SCHEMA
も必要です。CREATE PROVIDER
(Delta Sharing データ受信者の場合) プロバイダーを Unity Catalog メタストアに作成します。
CREATE RECIPIENT
(Delta Sharing データ プロバイダーの場合) 受信者を Unity Catalog メタストアに作成します。
CREATE SCHEMA
カタログにスキーマを作成します。 また、ユーザーはカタログに対する
USE CATALOG
権限が必要です。CREATE SHARE
(Delta Sharing データ プロバイダーの場合) 共有を Unity Catalog メタストアに作成します。
CREATE STORAGE CREDENTIAL
Unity Catalog メタストアにストレージ資格情報を作成します。
CREATE TABLE
スキーマにテーブルまたはビューを作成します。 ユーザーには、カタログに対する
USE CATALOG
権限とスキーマに対するUSE SCHEMA
権限も必要です。 外部テーブルを作成するために、ユーザーには外部の場所でのCREATE EXTERNAL TABLE
特権またはストレージ資格情報が必要です。CREATE VOLUME
ボリュームをスキーマに作成します。 ユーザーには、カタログに対する
USE CATALOG
権限とスキーマに対するUSE SCHEMA
権限も必要です。 外部ボリュームを作成するには、ユーザーに外部の場所に対するCREATE EXTERNAL VOLUME
権限も必要です。EXECUTE
ユーザー定義関数を呼び出します。 ユーザーには、カタログに対する
USE CATALOG
権限とスキーマに対するUSE SCHEMA
権限も必要です。MODIFY
テーブルの COPY INTO、UPDATEDELETE、INSERT、または MERGE INTO を行います。
READ FILES
READ VOLUME
ボリューム内のファイルに対してクエリを実行します。
REFRESH
ユーザーが親カタログに対する
USE CATALOG
、および親スキーマに対するUSE SCHEMA
を持っている場合、ユーザーが具体化されたビューを更新できるようにします。 ユーザーには、カタログに対するUSE CATALOG
権限とスキーマに対するUSE SCHEMA
権限も必要です。SELECT
テーブルまたはビューに対してクエリを実行するか、ユーザー定義または匿名の関数を呼び出すか、
ANY FILE
を選択します。 ユーザーには、テーブル、ビュー、または関数に対するSELECT
と、さらにオブジェクトのカタログに対するUSE CATALOG
およびオブジェクトのスキーマに対するUSE SCHEMA
が必要です。SET SHARE PERMISSION
Delta Sharing では、このアクセス許可を
USE SHARE
とUSE RECIPIENT
(または受信者の所有権) と組み合わせることで、プロバイダー ユーザーは受信者に共有へのアクセス権を付与できるようになります。USE SHARE
と組み合わせることで、共有の所有権を別のユーザー、グループ、またはサービス プリンシパルに譲渡できます。USE CATALOG
必須ですが、カタログ内のオブジェクトを参照するには十分ではありません。 プリンシパルには、個々のセキュリティ保護可能なオブジェクトに対する特権も必要です。 ユーザーが
BROWSE
特権を使用してオブジェクトのメタデータの読み取りを使用するためには必要ではありません。USE CONNECTION
メタストアで使用する場合、外部接続またはすべての外部接続のメタデータを読み取るために必要です。
USE MARKETPLACE ASSETS
すべての Unity Catalog メタストアに対して既定で有効になっています。 Databricks Marketplace では、この権限に権限によって Marketplace リストで共有されているデータ製品に関して、ユーザーはインスタント アクセスを取得したり、アクセスを要求したりできます。 また、プロバイダーがデータ製品を共有するときに作成される読み取り専用カタログにユーザーがアクセスすることもできます。 この特権がないと、ユーザーには
CREATE CATALOG
およびUSE PROVIDER
特権またはメタストア管理者ロールが必要になります。 これにより、それらの強力なアクセス許可を持つユーザーの数を制限できます。USE PROVIDER
Delta Sharing では、受信者のユーザーに、受信者メタストア内のすべてのプロバイダーとその共有への読み取り専用アクセス権を付与します。
CREATE CATALOG
特権と組み合わせることで、メタストア管理者ではない受信者ユーザーは、共有をカタログとしてマウントできます。 これにより、強力なメタストア管理者ロールを持つユーザーの数を制限できます。USE RECIPIENT
Delta Sharing では、プロバイダー ユーザーに、プロバイダー メタストア内のすべての受信者とその共有への読み取り専用アクセス権を付与します。 これにより、メタストア管理者ではないプロバイダー ユーザーは、受信者の詳細、受信者の認証状態、プロバイダーが受信者と共有している共有の一覧を表示できます。
Databricks Marketplace では、プロバイダー ユーザーはプロバイダー コンソールで一覧とコンシューマー要求を表示できます。
USE SCHEMA
必須ですが、スキーマ内のオブジェクトを参照するには十分ではありません。 プリンシパルには、個々のセキュリティ保護可能なオブジェクトに対する特権も必要です。 ユーザーが
BROWSE
特権を使用してオブジェクトのメタデータの読み取りを使用するためには必要ではありません。USE SHARE
Delta Sharing では、プロバイダーのユーザーに、プロバイダー メタストア内で定義されたすべての共有への読み取り専用アクセス権を付与します。 これにより、メタストア管理者ではないプロバイダー ユーザーは、共有を一覧表示し、共有内の資産 (テーブルとノートブック) を共有の受信者と共に一覧表示できます。
Databricks Marketplace では、これにより、プロバイダー ユーザーはリストで共有されているデータに関する詳細を表示できます。
WRITE FILES
WRITE VOLUME
例
-- Grant a privilege to the user alf@melmak.et
> GRANT SELECT ON TABLE t TO `alf@melmak.et`;
-- Revoke a privilege from the general public group.
> REVOKE USE SCHEMA ON SCHEMA some_schema FROM `alf@melmak.et`;