0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unity Catalogにおける権限およびセキュリティ保護可能オブジェクト

Posted at

Unity Catalog privileges and securable objects | Databricks on AWS [2022/12/14時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

本書ではUnity Catalogにおける権限モデルを説明します。Hiveメタストアとこのモデルの違いについてはUnity CatalogとレガシーHiveメタストアを操作するをご覧ください。

注意
本書では権限モデルバージョン1.0におけるUnity Catalog権限と継承モデルを参照します。パブリックプレビュー期間にUnity Catalogメタストアを作成している場合には、Upgrade to privilege inheritanceに従うことで、権限モデルバージョン1.0にアップグレードすることができます。

権限の管理

権限はメタストア管理者、オブジェクトのオーナー、オブジェクトを格納するカタログやスキーマのオーナーによって許可されます。SQLコマンド、Unity Catalog CLI、データエクスプローラを用いてメタストアのオブジェクトに対する権限を管理することができます。権限を管理するためにどのようにデータエクスプローラを使うのかに関してはManage Unity Catalog permissions in Data Explorerをご覧ください。

SQLで権限を管理するには、ノートブックやDatabricks SQLのクエリーエディタで以下の構文を用いてGRANTREVOKE文を使用します。

SQL
GRANT privilege_type ON securable_object TO principal

ここでは:

例えば、以下のコマンドはmainという親カタログにあるdefaultというスキーマにテーブルを作成する権限をfinanceというグループに許可します。

SQL
GRANT CREATE TABLE ON SCHEMA main.default TO finance;

SQLコマンドを用いた権限の付与に関しては、Privileges and securable objects in Unity Catalogをご覧ください。

また、Databricks Terraformdatabricks_grantsを用いて権限を管理することもできます。

Unity Catalogにおけるセキュリティ保護可能オブジェクト

セキュリティ保護可能オブジェクトはUnity Catalogメタストアで定義されるプリンシパルに権限を付与可能なオブジェクトです。Unity Catalogにおけるセキュリティ保護可能オブジェクトは階層になっています。

セキュリティ可能オブジェクトは:

  • メタストア: メタデータのトップレベルのコンテナです。それぞれのUnity Catalogメタストアはデータを整理するために3レベルの名前空間(catalog.schema.table)を提供します。
  • カタログ: オブジェクト階層の最初のレイヤーであり、データアセットを整理するために使用されます。
  • スキーマ: データベースとも呼ばれるスキーマはオブジェクト階層の2番目のレイヤーでありテーブルとビューを格納します。
  • テーブル: オブジェクト階層の最下層にあるテーブルは外部テーブル(お使いのクラウドストレージの外部ロケーションに格納されます)あるいはマネージドテーブル(Databricksで明示的に作成したクラウドストレージのストレージコンテナに格納されます)となります。
  • ビュー: スキーマに格納される1つ以上のテーブルから作成される読み取り専用のオブジェクトです。
  • 外部ロケーション: Unity Catalogメタストアに含まれるストレージ資格情報とクラウドストレージパスへのリファレンスを格納するオブジェクトです。
  • ストレージ資格情報: Unity Catalogメタサウトアに含まれるクラウドストレージへのアクセスを提供する長期のクラウド資格情報をカプセル化するオブジェクトです。
  • 関数: スキーマに格納されるユーザー定義関数です。
  • 共有: Delta Sharingを用いた共有を意図したテーブルに対する論理的グループです。共有はUnity Catalogメタストアに格納されます。
  • 受信者: Delta Sharingを用いてデータを共有できる組織、ユーザーグループを識別するオブジェクトです。これらのオブジェクトはUnity Catalogメタストアに格納されます。
  • 提供者: Delta Sharingを用いたデータ共有を可能にする組織を表現するオブジェクトです。これらのオブジェクトはUnity Catalogメタストアに格納されます。

継承モデル

Unity Catalogにおけるセキュリティ可能オブジェクトは階層型であり、権限は下流に継承されます。権限が継承される最上位のオブジェクトはカタログです。これは、カタログやスキーマに付与した権限は自動で、現在かつ将来においてカタログ、スキーマに含まれるすべてのオブジェクトに権限が付与されることを意味します。Unity Catalogメタストアに付与された権限は継承されません。

例えば、以下のコマンドはカタログmainのすべてのスキーマに存在するすべてのテーブル、ビューに対するSELECT 権限をfinanceグループに付与します:

SQL
GRANT SELECT ON CATALOG main TO finance;

同様に、アクセスのスコープを小さくするためにスキーマに対する権限付与を行うこともできます。

SQL
GRANT SELECT ON SCHEMA main.default TO finance;

継承モデルはデータに対するデフォルトのアクセスルールをセットアップする簡単な方法を提供します。例えば、以下のコマンドによって、機械学習チームはスキーマにテーブルを作成し、他の人が作成したテーブルを読み込めるようになります。

SQL
CREATE CATALOG ml;
CREATE SCHEMA ml.team_sandbox;
GRANT USE_CATALOG ON CATALOG ml TO ml_team;
GRANT USE_SCHEMA ON SCHEMA ml.team_sandbox TO ml_team;
GRANT CREATE TABLE ON SCHEMA ml.team_sandbox TO ml_team;
GRANT SELECT ON SCHEMA ml.team_sandbox TO ml_team;

Unity Catalogの権限タイプ

以下のテーブルでは、カタログのそれぞれのセキュリティ可能オブジェクトに対してどの権限タイプが適用されるのかをまとめています。

セキュリティ可能オブジェクト 権限
メタストア CREATE CATALOG, CREATE EXTERNAL LOCATION, CREATE RECIPIENT, CREATE SHARE, CREATE PROVIDER
カタログ ALL PRIVILEGES, CREATE SCHEMA, USE CATALOG

以下の権限タイプはカタログ内のセキュリティ可能オブジェクトに適用されます。カタログに存在する適切な現在かつ将来のオブジェクトに適用するために、カタログレベルでこれらの権限を付与することができます。

CREATE FUNCTION, CREATE TABLE, CREATE VIEW, EXECUTE, MODIFY, SELECT, USE SCHEMA
スキーマ ALL PRIVILEGES, CREATE FUNCTION, CREATE TABLE, CREATE VIEW, USE SCHEMA

以下の権限タイプはスキーマ内のセキュリティ可能オブジェクトに適用されます。スキーマに存在する適切な現在かつ将来のオブジェクトに適用するために、スキーマレベルでこれらの権限を付与することができます。

EXECUTE, MODIFY, SELECT
テーブル ALL PRIVILEGES, SELECT, MODIFY
ビュー ALL PRIVILEGES, SELECT
外部ロケーション ALL PRIVILEGES, CREATE EXTERNAL TABLE, READ FILES, WRITE FILES, CREATE MANAGED STORAGE
ストレージ資格情報 ALL PRIVILEGES, CREATE EXTERNAL LOCATION, CREATE EXTERNAL TABLE, READ FILES, WRITE FILES
関数 ALL PRIVILEGES, EXECUTE
共有 SELECT (RECIPIENTに付与することができます)
受信者 None
提供者 None

メタストアで権限を管理する際、SQLコマンドにメタストア名を含めてはいけません。Untiy Catalogはワークスペースにアタッチされたメタストアの権限を付与、剥奪します。例えば、以下のコマンドはワークスペースにアタッチされたメタストアでカタログを作成する権限をengineeringというグループに付与します。

SQL
GRANT CREATE CATALOG ON METASTORE TO engineering

ALL PRIVILEGES

適用可能なオブジェクトタイプ: CATALOG, EXTERNAL LOCATION, STORAGE CREDENTIAL, SCHEMA, FUNCTION, TABLE, VIEW

明示的に指定することなしに、セキュリティ可能オブジェクトとその子供の部ジェクトに適用可能なすべての権限を付与、剥奪するために使用されます。これは、アクセス権チェックが行われた際に利用可能なすべてのアクセス権を展開します。

注意
この権限は階層の高次レベルで適用された際にはパワフルなものとなります。例えば、ALL PRIVILEGES ON CATALOG main TO analystsはカタログのすべてのオブジェクト(スキーマ、テーブル、ビュー、関数)に対するすべての権限をアナリストチームに付与します。

CREATE CATALOG

適用可能なオブジェクトタイプ: Unity Catalogメタストア

Unity Catalogメタストアでのカタログの作成を許可します。

CREATE EXTERNAL LOCATION

適用可能なオブジェクトタイプ: Unity Catalogメタストア, STORAGE CREDENTIAL

ストレージ資格情報に適用された際、ストレージ資格上を用いて外部ロケーションを作成することを許可します。また、この権限はメタストアに外部ロケーションを作成することを許可します。

CREATE EXTERNAL TABLE

適用可能なオブジェクトタイプ: EXTERNAL LOCATION, STORAGE CREDENTIAL

外部ロケーションやストレージ資格情報を用いて、お使いのクラウドテナントに直接外部テーブルを作成することを許可します。ストレージ資格情報ではなく外部ロケーションにこの権限を付与することをお勧めします(これは、パスのスコープであり、あなたのクラウドテナントでユーザーが外部テーブルを作成できる場所をよりコントロールできるためです)。

CREATE FUNCTION

適用可能なオブジェクトタイプ: SCHEMA

スキーマに関数を作成することを許可します。権限は継承されるので、CREATE FUNCTIONはカタログで許可することもでき、カタログの現在と将来のスキーマで関数を作成できることを許可することができます。

ユーザーは親のカタログのUSE CATALOG権限と親のスキーマのUSE SCHEMA権限を有している必要があります。

CREATE MANAGED STORAGE

適用可能なオブジェクトタイプ: EXTERNAL LOCATION

カタログ、スキーマレベルでマネージドテーブルを格納するロケーションを指定することを許可し、メタストアのデフォルトルートストレージを上書きします。

CREATE PROVIDER

適用可能なオブジェクトタイプ: Unity Catalogメタストア

メタストアでDelta Sharing提供者オブジェクトの作成を許可します。提供者はDelta Sharingを用いてデータを共有できる組織やユーザーグループを特定します。提供者の作成は受信者のDatabricksアカウントのユーザーによって実行されます。Share data securely using Delta Sharingをご覧ください。

CREATE RECIPIENT

適用可能なオブジェクトタイプ: Unity Catalogメタストア

メタストアでDelta Sharing受信者オブジェクトの作成を許可します。受信者はDelta Sharingを用いてデータが共有される組織やユーザーグループを特定します。受信者の作成は提供者のDatabricksアカウントのユーザーによって実行されます。Share data securely using Delta Sharingをご覧ください。

CREATE SCHEMA

適用可能なオブジェクトタイプ: CATALOG

スキーマの作成を許可します。また、ユーザーはカタログに対するUSE CATALOG権限が必要です。

CREATE SHARE

適用可能なオブジェクトタイプ: Unity Catalogメタストア

メタストアに共有の作成を許可します。共有はdelta Sharingを用いた共有を意図したテーブルの論理的グループです。

CREATE TABLE

適用可能なオブジェクトタイプ: SCHEMA

スキーマでテーブルを作成することを許可します。権限は継承されるので、カタログにCREATE TABLEを付与することができ、カタログの現在そして将来のスキーマでテーブルを作成することを許可します。

ユーザーは親のカタログのUSE CATALOG権限と親のスキーマのUSE SCHEMA権限を有している必要があります。

CREATE VIEW

適用可能なオブジェクトタイプ: SCHEMA

スキーマでビューを作成することを許可します。権限は継承されるので、カタログにCREATE TABLEを付与することができ、カタログの現在そして将来のスキーマでビューを作成することを許可します。

ユーザーは親のカタログのUSE CATALOG権限と親のスキーマのUSE SCHEMA権限を有している必要があります。

EXECUTE

適用可能なオブジェクトタイプ: FUNCTION

ユーザーが親のカタログのUSE CATALOG権限と親のスキーマのUSE SCHEMA権限を有している場合には、ユーザー定義関数を呼び出すことを許可します。

権限は継承されるので、カタログやスキーマにEXECUTEを付与することができ、カタログやスキーマで現在そして将来の関数を実行することを許可します。

MODIFY

適用可能なオブジェクトタイプ: TABLE

ユーザーが親のカタログのUSE CATALOG権限と親のスキーマのUSE SCHEMA権限を有している場合には、テーブルに対する追加、更新、削除を行うことを許可します。

権限は継承されるので、カタログやスキーマにMODIFYを付与することができ、カタログやスキーマで現在そして将来のテーブルにMODIFYを実行することを許可します。

READ FILES

適用可能なオブジェクトタイプ: EXTERNAL LOCATION, STORAGE CREDENTIAL

クラウドオブジェクトストレージから直接ファイルを読み込むことを許可します。ストレージ資格情報ではなく外部ロケーションにこの権限を付与することをお勧めします(これは、パスのスコープであり、あなたのクラウドテナントでユーザーがデータを読み込める場所をよりコントロールできるためです)。

SELECT

適用可能なオブジェクトタイプ: TABLE, VIEW, SHARE

テーブルやビューに適用される際には、ユーザーが親のカタログのUSE CATALOG権限と親のスキーマのUSE SCHEMA権限を有している場合には、テーブルやビューを参照することを許可します。共有に適用されると、受信者は共有を参照できるようになります。

権限は継承されるので、カタログやスキーマにSELECTを付与することができ、カタログやスキーマの現在そして将来のテーブルやビューにSELECTを実行することを許可します。

USE CATALOG

適用可能なオブジェクトタイプ: CATALOG

この権限はカタログ自身へのアクセスを許可しませんが、カタログ内のすべてのオブジェクトを操作する際に必要となります。例えば、テーブルからデータをselectするには、ユーザーは当該テーブルのSELECT権限と親のカタログに対するUSE CATALOG権限と親スキーマに対するUSE SCHEMA権限が必要となります。

これは、カタログのオーナーがそれぞれのスキーマやテーブルのオーナーが彼らが生成するデータをどこまで共有できるのかを制限できるようになるため有用です。例えば、別のユーザーにSELECTを許可したテーブルのオーナーは、親のカタログに対するUSE CATALOG権限と親のスキーマに対するUSE SCHEMA権限を付与しない限り、SELECTが付与されたユーザーはテーブルを読み込むことはできません。

USE SCHEMA

適用可能なオブジェクトタイプ: SCHEMA

この権限はスキーマ自身へのアクセスを許可しませんが、スキーマ内のすべてのオブジェクトを操作する際に必要となります。例えば、テーブルからデータをselectするには、ユーザーは当該テーブルのSELECT権限と親のカタログに対するUSE CATALOG権限と親スキーマに対するUSE SCHEMA権限が必要となります。

権限は継承されるので、カタログにUSE SCHEMA権限を付与することがd系、カタログの現在、将来のすべてのスキーマにおいてUSE SCHEMA権限が自動で付与されるようになります。

WRITE FILES

適用可能なオブジェクトタイプ: EXTERNAL LOCATION, STORAGE CREDENTIAL

クラウドオブジェクトストレージに直接ファイルを書き込むことを許可します。ストレージ資格情報ではなく外部ロケーションにこの権限を付与することをお勧めします(これは、パスのスコープであり、あなたのクラウドテナントでユーザーがデータを書き込める場所をよりコントロールできるためです)。

Databricks 無料トライアル

Databricks 無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?