Unity Catalog オブジェクトの所有権を管理する
Unity Catalog の各 セキュリティ保護可能なオブジェクト には所有者がいます。 所有者は、ユーザー、サービスプリンシパル、またはアカウント グループなど、任意のプリンシパルにすることができます。 オブジェクトを作成するプリンシパルが、その初期所有者になります。 オブジェクトの所有者は、テーブルに対する SELECT
や MODIFY
など、オブジェクトに対するすべての権限に加えて、他のプリンシパルに権限を付与する権限も持ちます。 オブジェクトの所有者は、オブジェクトをドロップする権限を持っています。
所有者の特権
オブジェクトの所有者には、そのオブジェクトに対するすべての権限が自動的に付与されます。さらに、オブジェクトの所有者は、オブジェクト自体とそのすべての子オブジェクトに対する権限を付与できます。つまり、スキーマの所有者は、スキーマ内のテーブルに対するすべての権限を自動的に持つわけではありませんが、スキーマ内のテーブルに対する権限を自分自身に付与できます。
所有者がオブジェクトに対するすべての権限を持つというルールには 1 つの例外があります。偶発的なデータ流出を避けるために、スキーマの所有者はデフォルトでは EXTERNAL USE SCHEMA
権限を持っていません。 「Unity Catalog への外部データ アクセスを有効にする」を参照してください。
メタストアとカタログの所有権
メタストアの管理者はメタストアの所有者です。 メタストア管理者の役割は任意です。 メタストア管理者は、メタストア管理者の役割を移管することで、メタストアの所有権を再割り当てできます。「メタストア管理者を割り当てる」を参照してください。
ワークスペースが自動的に Unity Catalog 有効になっている場合、ワークスペースはデフォルトによってメタストアにアタッチされ、メタストア内のワークスペースのワークスペース カタログが作成されます。 ワークスペース管理者はデフォルトの所有者であり、ワークスペースカタログの所有権を再割り当てできます。 これらのワークスペースでは、デフォルトによって割り当てられたメタストア管理者はいませんが、アカウント管理者は必要に応じてメタストア管理者ロールを付与できます。 「メタストア管理者」を参照してください。
Unity Catalogの管理者権限の詳細については、「Unity Catalogの管理者権限」を参照してください。
所有権と MANAGE
特権
MANAGE
(パブリック プレビュー) は、オブジェクトの所有権に似た特権です。 これにより、ユーザーはオブジェクトに対する権限を編集、削除、および管理できるようになります。 ただし、オブジェクトに対する MANAGE
権限を持つユーザーには、そのオブジェクトに対するすべての権限が自動的に付与されるわけではありません。 他の権限と同様に、ユーザーはオブジェクトの親カタログに USE CATALOG
し、オブジェクトの親スキーマに USE SCHEMA
する必要があります。 たとえば、テーブルに対するパーミッションを付与するには、ユーザーはそのテーブルに対する MANAGE
権限、親カタログに対する USE CATALOG
権限、および親スキーマに対する USE SCHEMA
権限を持っている必要があります。
オブジェクトの所有者は、グループを含む 1 つのプリンシパルにしかなれませんが、 MANAGE
は複数のプリンシパルに付与できます。
誤って権限昇格しないように、 ALL PRIVILEGES
には MANAGE
権限は含まれていません
オブジェクトの所有者を表示する
Catalog Explorer または SQL ステートメントを使用して、オブジェクトの所有者を表示できます。
必要な権限 :オブジェクトの BROWSE
権限を持つユーザーまたはオブジェクトの親であれば、オブジェクトの所有者を見ることができます。
- Catalog Explorer
- SQL
-
Databricks ワークスペースで、
カタログ をクリックします。
-
オブジェクト (カタログ、スキーマ、テーブル、ビュー、ボリューム、外部ロケーション、ストレージ認証情報など) を選択します。
オブジェクトへの移動方法は、オブジェクトによって異なります。カタログ、スキーマ、およびスキーマの内容 (テーブルやボリュームなど) は、左側の [カタログ ] ウィンドウで選択できます。外部ロケーションや Delta Sharing 共有などの他のオブジェクトを検索するには、[カタログ] ウィンドウの上にある
歯車アイコンをクリックし、メニューからオブジェクト カテゴリを選択します。
ほとんどのオブジェクトでは、所有者はオブジェクトの詳細ページの [概要 ] タブに表示されます。外部ロケーションなどの一部のオブジェクトでは、オブジェクトの詳細ページの上部に表示されます。
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。プレースホルダーの値を置き換えます。
<securable-type>
: セキュリティ保護可能なリソースの種類 (CATALOG
やTABLE
など)。<catalog>
: 親カタログ (スキーマまたはスキーマの内容を表示している場合)。<schema>
: テーブルやビューなどのスキーマの内容を表示している場合は、親スキーマ。<securable-name>
: セキュリティ保護可能なオブジェクトの名前。
DESCRIBE <securable-type> EXTENDED <catalog>.<schema>.<securable-name>;
所有権の譲渡
Catalog Explorer または SQL ステートメントを使用して、オブジェクトの所有者を表示できます。
必要なアクセス許可 : 現在の所有者、メタストア管理者、コンテナーの所有者 (スキーマのカタログ、テーブルのスキーマ)、またはオブジェクトに対する MANAGE
権限を持つユーザーである場合は、オブジェクトの所有権を譲渡できます。 Delta Sharing 共有オブジェクトは例外で、 USE SHARE
権限と SET SHARE PERMISSION
権限を持つプリンシパルも共有所有権を譲渡できます。
特権の昇格を防ぐために、メタストア管理者のみが、ビュー、関数、またはモデルの所有権をアカウント内の任意のユーザー、サービスプリンシパル、またはグループに譲渡できます。 現在の所有者と MANAGE
権限を持つユーザーは、所有権を自分のユーザー名またはメンバーであるグループに移管することに制限されています。
- Catalog Explorer
- SQL
-
Databricks ワークスペースで、
カタログ をクリックします。
-
カタログ、スキーマ、テーブル、ビュー、外部ロケーション、ストレージ資格情報などのオブジェクトを選択します。
オブジェクトへの移動方法は、オブジェクトによって異なります。カタログ、スキーマ、およびスキーマの内容 (テーブルやボリュームなど) は、左側の [カタログ ] ウィンドウで選択できます。外部ロケーションや Delta Sharing 共有などの他のオブジェクトを検索するには、[カタログ] ウィンドウの上にある
歯車アイコンをクリックし、メニューからオブジェクト カテゴリを選択します。
ほとんどのオブジェクトでは、所有者はオブジェクトの詳細ページの [概要 ] タブに表示されます。外部ロケーションなどの一部のオブジェクトでは、オブジェクトの詳細ページの上部に表示されます。
-
所有者 の横にある 編集アイコンをクリックします。
-
グループ、ユーザー、またはサービスプリンシパルを検索して選択します。
-
保存 をクリックします。
ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。プレースホルダーの値を置き換えます。
<securable-type>
: セキュリティ保護可能なオブジェクトのタイプ (CATALOG
やTABLE
など)。このコマンドでは、METASTORE
はセキュリティ保護可能なオブジェクトとしてサポートされていません。<securable-name>
: セキュリティ保護可能なリソースの名前。スキーマまたはスキーマの内容を変更する場合は、親カタログやスキーマをすでに指定していない限り、完全な 3 レベルの名前空間 (catalog.schema.object
) を使用する必要があります。<principal>
はユーザー、 (applicationId 値で表される)サービスプリンシパル、またはグループです。 特殊文字を含むユーザー名、サービスプリンシパル名、およびグループ名は、バッククォート (
ALTER <securable-type> <securable-name> OWNER TO <principal>;
たとえば、 orders
テーブルの所有権を accounting
グループに移管するには、次のようにします。
ALTER TABLE mycatalog.myschema.orders OWNER TO `accounting`;