Unity Catalog オブジェクトの所有権を管理する

Unity Catalog 内のセキュリティ保護が可能なオブジェクトのそれぞれに所有者が存在します。 所有者には、任意のプリンシパル (ユーザー、サービス プリンシパル、またはアカウント グループ) を指定できます。 オブジェクトを作成するプリンシパルが、その最初の所有者になります。 オブジェクト所有者は、他のプリンシパルに特権を付与する権限に加えて、テーブルに対する SELECTMODIFY など、オブジェクト上のすべての特権を持っています。 オブジェクトの所有者は、オブジェクトを削除することができます。

所有者特権

オブジェクトの所有者には、そのオブジェクに対するすべての特権が自動的に付与されます。 さらに、オブジェクト所有者は、オブジェクト自体とそのすべての子オブジェクトに特権を付与できます。 つまり、スキーマの所有者は、スキーマ内のテーブルに対するすべての権限を自動的に持つわけではありませんが、スキーマ内のテーブルに対する権限を自身に付与できます。

Note

オブジェクトの所有者がすべての権限を持つという規則には例外が 1 つあります。偶発的なデータ流出を回避するために、スキーマ所有者は既定では EXTERNAL USE SCHEMA 権限を持ちません。 Unity Catalog 内のデータへの外部アクセス制御に関する記事を参照してください。

メタストアとカタログの所有権

メタストア管理者は、メタストアの所有者です。 メタストア管理者ロールはオプションです。 メタストア管理者は、メタストア管理者ロールを譲渡することでメタストアの所有権を再割り当てできます。「メタストア管理者を割り当てる」を参照してください。

ワークスペースで Unity Catalog が自動的に有効になっている場合、ワークスペースは既定でメタストアにアタッチされ、メタストア内のワークスペース用にワークスペース カタログが作成されます。 ワークスペース管理者は、ワークスペース カタログの既定の所有者であり、その所有権を再割り当てすることができます。 これらのワークスペースでは、既定ではメタストア管理者は割り当てされていませんが、必要に応じてアカウント管理者がメタストア管理者ロールを付与できます。 「メタストア管理者」を参照してください。

Unity Catalog での管理特権の詳細については、「Unity Catalog の管理特権」を参照してください。

オブジェクトの所有者を表示する

カタログ エクスプローラーまたは SQL ステートメントを使用してオブジェクトの所有者を表示できます。

必要なアクセス許可: オブジェクトまたはオブジェクトの親に対して BROWSE 特権を持つユーザーは、オブジェクト所有者を表示できます。

カタログ エクスプローラー

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。

  2. カタログ、スキーマ、テーブル、ビュー、ボリューム、外部の場所、ストレージ資格情報などのオブジェクトを選択します。

    オブジェクトに移動する方法はオブジェクトによって異なります。 カタログ、スキーマ、スキーマの内容 (テーブルやボリュームなど) は、左側の [カタログ] ペインで選択できます。 外部の場所や Delta Sharing 共有などの他のオブジェクトを検索するには、カタログ ペインの上にある 歯車アイコン 歯車アイコンをクリックし、メニューからオブジェクト カテゴリを選択します。

    ほとんどのオブジェクトの所有者は、オブジェクトの詳細ページの [概要] タブに表示されます。 外部の場所などの一部のオブジェクトの場合、オブジェクトの詳細ページの上部に表示されます。

SQL

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。 プレースホルダー値を次のように置き換えます。

  • <securable-type>: CATALOGTABLE など、セキュリティ保護可能なリソースの種類。
  • <catalog>: スキーマまたはスキーマの内容を表示している場合は、親カタログ。
  • <schema>: テーブルやビューなどのスキーマの内容を表示している場合は、親スキーマ。
  • <securable-name>: セキュリティ保護可能なオブジェクトの名前を指定します。
DESCRIBE <securable-type> EXTENDED <catalog>.<schema>.<securable-name>;

所有権の移転

カタログ エクスプローラーまたは SQL ステートメントを使用してオブジェクトの所有者を表示できます。

必要なアクセス許可: 現在の所有者、メタストア管理者、またはコンテナー (スキーマのカタログ、テーブルのスキーマ) の所有者である場合は、オブジェクトの所有権を譲渡できます。 Delta Sharing 共有オブジェクトは例外です。USE SHARESET SHARE PERMISSION の特権を持つプリンシパルも共有の所有権を譲渡できます。

Note

権限のエスカレーションを防ぐため、メトストアの管理者のみが、ビュー、関数、またはモデルの所有権を、アカウント内の任意のユーザー、サービスプリンシパル、またはグループに譲渡することができます。 現在の所有者は、所有権を自分のユーザー名または自分が所属するグループに譲渡することが制限されています。

カタログ エクスプローラー

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。

  2. カタログ、スキーマ、テーブル、ビュー、外部の場所、ストレージ資格情報などのオブジェクトを選択します。

    オブジェクトに移動する方法はオブジェクトによって異なります。 カタログ、スキーマ、スキーマの内容 (テーブルやボリュームなど) は、左側の [カタログ] ペインで選択できます。 外部の場所や Delta Sharing 共有などの他のオブジェクトを検索するには、カタログ ペインの上にある 歯車アイコン 歯車アイコンをクリックし、メニューからオブジェクト カテゴリを選択します。

    ほとんどのオブジェクトの所有者は、オブジェクトの詳細ページの [概要] タブに表示されます。 外部の場所などの一部のオブジェクトの場合、オブジェクトの詳細ページの上部に表示されます。

  3. [所有者] の横にある [編集] アイコン 編集アイコンをクリックします。

  4. グループ、ユーザー、またはサービス プリンシパルを検索して選択します。

  5. [保存] をクリックします。

SQL

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。 プレースホルダー値を次のように置き換えます。

  • <securable-type>: CATALOGTABLE などのセキュリティ保護可能なオブジェクトの型。 このコマンドでは、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`;