次の方法で共有


Unity Catalog の特権の管理

この記事では、Unity Catalog のデータとその他のオブジェクトへのアクセスを制御する方法について説明します。 このモデルと Hive メタストアのアクセス制御の違いについては、「Unity Catalog と従来の Hive メタストアの使用」を参照してください。

誰が権限を管理できますか?

初期状態では、ユーザーはメタストア内のデータにアクセスできません。 Azure Databricks アカウント管理者、ワークスペース管理者、メタストア管理者には、Unity Catalog を管理するための既定の特権があります。 Unity Catalog の管理者特権に関する記事を参照してください。

Unity Catalog 内のすべてのセキュリティ保護可能なオブジェクトには所有者が存在します。 オブジェクト所有者は、他のプリンシパルに特権を付与できることを含め、そのオブジェクトに対するすべての特権を持ちます。 「Unity Catalog オブジェクトの所有権を管理する」を参照してください。

特権を付与できるのは、メタストア管理者、オブジェクトの所有者、またはオブジェクトを含むカタログやスキーマの所有者のいずれかです。 アカウント管理者は、メタストアに対して直接特権を付与することもできます。

ワークスペース カタログ特権

ワークスペースで Unity Catalog が自動的に有効になっている場合、ワークスペースは既定でメタストアにアタッチされ、メタストア内のワークスペース用にワークスペース カタログが作成されます。 ワークスペース管理者は、ワークスペース カタログの既定の所有者です。 所有者は、ワークスペース カタログとすべての子オブジェクトに対する特権を管理できます。

すべてのワークスペース ユーザーは、ワークスペース カタログに対する USE CATALOG 特権を受け取ります。 ワークスペース ユーザーは、カタログ内の default スキーマに対する USE SCHEMACREATE TABLECREATE VOLUMECREATE MODELCREATE FUNCTIONCREATE MATERIALIZED VIEW 特権も受け取ります。

詳細については、「Unity Catalog の自動有効化」を参照してください。

継承モデル

Unity Catalog のセキュリティ保護可能なオブジェクトは階層構造であり、権限は下位に継承されます。 特権が継承される最上位レベルのオブジェクトは、カタログです。 つまり、カタログまたはスキーマに対する権限を付与すると、カタログまたはスキーマ内のすべての現在および将来のオブジェクトに権限が自動的に付与されます。 たとえば、ユーザーにカタログに対する SELECT 特権を付与すると、そのユーザーはそのカタログ内のすべてのテーブルとビューを選択 (読み取り) できるようになります。 Unity Catalog メタストアで付与された特権は継承されません。

Unity Catalog のオブジェクト階層

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

Note

パブリック プレビュー中 (2022 年 8 月 25 日より前) に Unity Catalog メタストアを作成した場合は、現在の継承モデルをサポートしていない以前の特権モデルを使用している可能性があります。 特権モデル バージョン 1.0 にアップグレードして、特権の継承を取得できます。 「特権継承へのアップグレード」を参照してください。

特権を表示、付与、取り消す

SQL コマンド、Databricks CLIDatabricks Terraform プロバイダー、またはカタログ エクスプローラーを使用して、メタストア オブジェクトの特権を管理できます。

次の SQL コマンドで、以下のプレースホルダー値を置き換えます。

  • <privilege-type> は Unity Catalog の特権の種類です。 「特権の種類」を参照してください。
  • <securable-type>: CATALOGTABLE などのセキュリティ保護可能なオブジェクトの型。 「セキュリティ保護可能なオブジェクト」を参照してください
  • <securable-name>: セキュリティ保護可能なリソースの名前。 セキュリティ保護可能な型が METASTORE の場合は、セキュリティ保護可能な名前を指定しないでください。 ワークスペースにアタッチされているメタストアと見なされます。
  • <principal> は、ユーザー、サービス プリンシパル (applicationId 値で表される)、またはグループです。 特殊文字を含むユーザー、サービス プリンシパル、およびグループ名は、バックティック (` `) で囲む必要があります。 「プリンシパル」を参照してください。

Unity Catalog メタストア内のオブジェクトに対する許可を表示する

必要なアクセス許可: メタストア管理者、オブジェクトの所有者、オブジェクトを含むカタログまたはスキーマの所有者。 独自の許可を表示することもできます。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
  3. [アクセス許可] タブに移動します。

SQL

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。 特定のプリンシパルに対して許可を表示することも、セキュリティ保護可能なオブジェクトに対するすべての許可を表示することもできます。

  SHOW GRANTS [principal] ON  <securable-type> <securable-name>

たとえば、次のコマンドは、main という名前の親カタログの default という名前のスキーマに対するすべての許可を表示します。

  SHOW GRANTS ON SCHEMA main.default;

このコマンドによって次の情報が返されます。

  principal     actionType     objectType objectKey
  ------------- -------------  ---------- ------------
  finance-team   CREATE TABLE  SCHEMA     main.default
  finance-team   USE SCHEMA    SCHEMA     main.default

Unity Catalog メタストア内のオブジェクトに対するアクセス許可を付与する

必要なアクセス許可: メタストア管理者、オブジェクトの所有者、オブジェクトを含むカタログまたはスキーマの所有者。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
  3. [アクセス許可] タブに移動します。
  4. [許可] をクリックします。
  5. ユーザーのメール アドレスまたはグループの名前を入力します。
  6. 付与するアクセス許可を選択します。
  7. OK をクリックします。

SQL

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。

  GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>

たとえば、次のコマンドは、finance-team という名前のグループに、main という名前の親カタログを使用して default という名前のスキーマにテーブルを作成するためのアクセス権を付与します。

  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`;

Unity Catalog メタストア内のオブジェクトに対するアクセス許可を取り消す

必要なアクセス許可: メタストア管理者、オブジェクトの所有者、オブジェクトを含むカタログまたはスキーマの所有者。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. カタログ、スキーマ、テーブル、ビューなどのオブジェクトを選択します。
  3. [アクセス許可] タブに移動します。
  4. ユーザー、サービス プリンシパル、またはグループに許可されている特権を選択します。
  5. [取り消し] をクリックします。
  6. 確定するために、[取り消し] をクリックします。

SQL

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。

  REVOKE <privilege-type> ON <securable-type> <securable-name> TO <principal>

たとえば、次のコマンドは、main という名前の親カタログを使用して default という名前のスキーマにテーブルを作成する、finance-team という名前のグループのアクセスを取り消します。

  REVOKE CREATE TABLE ON SCHEMA main.default TO `finance-team`;

メタストアで許可を表示する

必要なアクセス許可: メタストア管理者またはアカウント管理者。メタストアで独自の許可を表示することもできます。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. Catalog Explorer ページ ラベルの横で、メタストア名の横にあるアイコンをクリックします。
  3. [アクセス許可] タブに移動します。

SQL

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。 特定のプリンシパルに対して許可を表示することも、メタストアに対するすべての許可を表示することもできます。

  SHOW GRANTS [principal] ON METASTORE

メタストアに対するアクセス許可を付与する

必要なアクセス許可: メタストア管理者またはアカウント管理者。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. Catalog Explorer ページ ラベルの横で、メタストア名の横にあるアイコンをクリックします。
  3. [アクセス許可] タブで [付与] をクリックします。
  4. ユーザーのメール アドレスまたはグループの名前を入力します。
  5. 付与するアクセス許可を選択します。
  6. OK をクリックします。

SQL

  1. ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。

    GRANT <privilege-type> ON METASTORE TO <principal>`;
    

    メタストアに対して特権を付与する場合は、ワークスペースにアタッチされているメタストアが想定されるため、メタストア名を含めることはできません。

メタストアに対するアクセス許可を取り消す

必要なアクセス許可: メタストア管理者またはアカウント管理者。

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

  1. Azure Databricks ワークスペースで、カタログ アイコン [カタログ] をクリックします。
  2. Catalog Explorer ページ ラベルの横で、メタストア名の横にあるアイコンをクリックします。
  3. [アクセス許可] タブで、ユーザーまたはグループを選択し、[取り消し] をクリックします。
  4. 確定するために、[取り消し] をクリックします。

SQL

  1. ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。

    REVOKE <privilege-type> ON METASTORE TO <principal>;
    

    メタストアの特権を取り消す場合は、ワークスペースにアタッチされているメタストアが想定されるため、メタストア名を含めることはできません。