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

Unity Catalog 内のセキュリティ 保護可能な各オブジェクト には所有者がいます。 所有者は、プリンシパルと呼ばれる任意のユーザー、サービスプリンシパル、またはアカウントグループにすることができます。 オブジェクトを作成するプリンシパルが、その初期所有者になります。 オブジェクトの所有者は、他のプリンシパルに権限を付与する権限に加えて、テーブルに対する SELECTMODIFY など、オブジェクトに対するすべての権限を持っています。 オブジェクトの所有者は、オブジェクトをドロップできます。

所有者の権限

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

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

メタストア管理者は、メタストアの所有者です。 メタストア管理者は、メタストア管理者ロールを転送することで、メタストアの所有権を再割り当てできます (「メタストア管理者の割り当て」を参照)

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

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

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

セキュリティ保護可能なオブジェクトの所有者を表示するには、次の構文を使用します。 プレースホルダー値を置き換えます。

  • <SECURABLE-TYPE>: セキュリティ保護可能なリソースのタイプ ( CATALOGTABLEなど)。

  • <catalog>: テーブルまたはビューの親カタログ。

  • <schema>: テーブルまたはビューの親スキーマ。

  • <securable-name>: テーブルやビューなどのセキュリティ保護可能なリソースの名前。

DESCRIBE <SECURABLE-TYPE> EXTENDED <catalog>.<schema>.<securable-name>;
display(spark.sql("DESCRIBE <SECURABLE-TYPE> EXTENDED <catalog>.<schema>.<securable-name>"))
library(SparkR)

display(sql("DESCRIBE <SECURABLE-TYPE> EXTENDED <catalog>.<schema>.<securable-name>"))
display(spark.sql("DESCRIBE <SECURABLE-TYPE> EXTENDED <catalog>.<schema>.<securable-name>"))

オーナー権限の 譲渡

オブジェクトの所有権は、現在の所有者、メタストア管理者、またはコンテナーの所有者 (スキーマのカタログ、テーブルのスキーマ) によって他のプリンシパルに転送できます。 Delta Sharing 共有オブジェクトは例外で、 USE SHARE および SET SHARE PERMISSION を持つプリンシパルも共有所有権を譲渡できます。

オブジェクトの所有権を譲渡するには、次の構文で SQL コマンドを使用します。 プレースホルダー値を置き換えます。

  • <SECURABLE-TYPE>: セキュリティ保護可能なオブジェクトのタイプ ( CATALOGTABLEなど)。 METASTORE は、このコマンドのセキュリティ保護可能なオブジェクトとしてサポートされていません。

  • <SECURABLE-NAME>: セキュリティ保護可能なリソースの名前。

  • <PRINCIPAL>:アカウントレベルのユーザーのメールアドレスまたはアカウントレベルのグループの名前。

ALTER <SECURABLE-TYPE> <SECURABLE-NAME> OWNER TO <PRINCIPAL>;
spark.sql("ALTER <SECURABLE-TYPE> <SECURABLE-NAME> OWNER TO <PRINCIPAL>")
library(SparkR)

sql("ALTER <SECURABLE-TYPE> <SECURABLE-NAME> OWNER TO <PRINCIPAL>")
spark.sql("ALTER <SECURABLE-TYPE> <SECURABLE-NAME> OWNER TO <PRINCIPAL>")

たとえば、テーブルの所有権を accounting グループに譲渡するには、次のようにします。

ALTER TABLE orders OWNER TO `accounting`;
spark.sql("ALTER TABLE orders OWNER TO `accounting`")
library(SparkR)

sql("ALTER TABLE orders OWNER TO `accounting`")
spark.sql("ALTER TABLE orders OWNER TO `accounting`")