Unity Catalog権限モデルの概念
このページでは、オブジェクト モデル、権限、所有権、継承など、Unity Catalog 権限モデルの中心となる概念について説明します。
すべてのUnity Catalog権限の一般的なリファレンスについては、 Unity Catalog権限とセキュリティ保護可能なオブジェクト」を参照してください。 権限の付与と取り消しの手順については、 「権限の表示、付与、取り消し」を参照してください。
セキュリティ保護可能なオブジェクト
Unity Catalog では、データとメタデータはメタストアと呼ばれる最上位のコンテナーに保存されます。このメタストア内では、データは 3 レベルの名前空間内のオブジェクトとして表されます: catalog . schema . table .この階層構造は、Unity Catalog のアクセス制御の基盤も提供します。

この階層内のすべてのオブジェクトは セキュリティ保護可能なオブジェクト です。Unity Catalog のアクセス制御は、これらのセキュリティ保護可能なオブジェクトに対してSELECT 、 MODIFY 、 USE SCHEMAなどの権限を付与することによって機能します。このモデルでは、組織全体で誰がデータにアクセスして管理できるかをきめ細かく制御できます。
セキュリティ保護可能なオブジェクトとそれぞれに適用される権限の完全なリストについては、 Unity Catalog権限とセキュリティ保護可能なオブジェクト」を参照してください。
コンテナオブジェクト
Unity Catalog内のセキュリティ保護可能なオブジェクトの中には、 コンテナー オブジェクトと呼ば れるものがあります。つまり、階層内に子オブジェクトが含まれています。 コンテナ オブジェクトは、付与された権限が継承を通じて子に影響を及ぼす可能性があるため、権限モデルにおいて特別な役割を果たします。
以下はUnity Catalog内のコンテナ オブジェクトです。
- カタログ: 3 レベルの名前空間の最上位レベル。カタログには、直接の子としてスキーマが含まれます。
- スキーマ: 3 レベルの名前空間の中間レベル。スキーマには、テーブル、ビュー、ボリューム、関数が直接の子として含まれます。
コンテナ オブジェクトにはいくつかの重要な特性があります。
characteristic | 説明 |
|---|---|
権限の継承 | コンテナ オブジェクトに権限を付与すると、その権限は現在および将来のすべての子オブジェクトに自動的に適用されます。たとえば、カタログに |
使用権限 | 子オブジェクトにアクセスするには、親コンテナ オブジェクトに対する適切な |
子オブジェクトを管理する機能 | コンテナ オブジェクトを所有すると、子オブジェクトを直接所有していなくても、すべての子オブジェクトを管理する権限が自動的に付与されます。所有権を参照してください。 |
作成権限 | コンテナ オブジェクトは、カタログの |
テーブル、ビュー、ボリューム、関数などの非コンテナ オブジェクトには、子オブジェクトが含まれません。
特権
権限によって、ユーザーまたはグループがセキュリティ保護可能なオブジェクトに対して実行できるアクションが決まります。一般的な権限は次のとおりです:
SELECT: テーブルまたはビューからデータを読み取るMODIFY: テーブルまたはビューにデータを書き込むUSE CATALOG: カタログにアクセスします (子オブジェクトを操作するには追加の権限が必要です)USE SCHEMA: スキーマにアクセスします (子オブジェクトを操作するには追加の権限が必要です)CREATE TABLE: スキーマ内にテーブルを作成する
ユーザーまたはグループには、アクションを実行する権限を明示的に付与する必要があります。Unity Catalog はデフォルトでアクセスを拒否します。
次のセクションでは、Databricks の重要な特別な権限について説明します。すべての権限の完全なリファレンスについては、 Unity Catalog権限とセキュリティ保護可能なオブジェクト」を参照してください。
使用権限
USE CATALOG USE SCHEMAは使用権限です。通常、階層内のオブジェクトとその子オブジェクトを操作するには、使用権限が必要です。
カタログ内のオブジェクトを操作するには、カタログに対するUSE CATALOG権限が必要です。スキーマ内のオブジェクトを操作するには、スキーマに対するUSE SCHEMA権限が必要です。
たとえば、テーブル、ビュー、ボリューム、または関数に対するほとんどの操作を実行するには、次のものが必要です。
USE CATALOG親カタログUSE SCHEMA親スキーマ上- 操作の特定の権限(
SELECT、MODIFY、EXECUTEなど)
これら 3 つすべてが必要です。テーブルに対するSELECT権限のみを持っていても、その親オブジェクトに対するUSE CATALOGまたはUSE SCHEMAがない場合、テーブルを読み取るには不十分です。
使用権限は、上位レベルの管理者にとって重要なアクセス制御メカニズムを提供します。たとえば、テーブル所有者がテーブルを他のユーザーと共有したい場合でも、それらのユーザーは親オブジェクトに対するUSE CATALOG権限とUSE SCHEMA権限がないとテーブルにアクセスできません。これらの使用権限を付与できるのはカタログおよびスキーマの所有者またはMANAGE権限を持つユーザーのみであるため、テーブル所有者が承認された境界外のアクセスを付与することを防ぎます。
次の表は、一般的な操作とそれに必要な権限を示しています。
オペレーション | 必要な権限 |
|---|---|
テーブルからデータを読み取る |
|
テーブルにデータを書き込む |
|
カタログにスキーマを作成する |
|
スキーマ内にテーブルを作成する |
|
関数を実行する |
|
ボリュームからファイルを読み取る |
|
ALL PRIVILEGES動作
ALL PRIVILEGES 特定のオブジェクト タイプに適用可能なすべての権限 を意味します 。ここで、 implies は 権限が暗黙的に付与され、Databricks が個々の権限を明示的に付与しないことを意味します。例えば:
ALL PRIVILEGESテーブル上のは、SELECT、MODIFY、およびAPPLY TAGを意味します。ALL PRIVILEGESボリュームの場合はREAD VOLUME、WRITE VOLUME、APPLY TAGを意味します。ALL PRIVILEGESスキーマに対する権限は、すべてのスキーマ レベルの権限を意味します。ALL PRIVILEGESカタログでは、すべてのカタログ レベルの権限が暗黙的に与えられます。
ALL PRIVILEGESを持つユーザーに対してSHOW GRANTSコマンドを実行すると、 SELECTやMODIFYなどの個別の暗黙の権限ではなく、 ALL PRIVILEGESのみが返されます。
偶発的なデータ流出や権限の昇格を防ぐため、 ALL PRIVILEGESはEXTERNAL USE SCHEMA 、 EXTERNAL USE LOCATION 、またはMANAGE権限は含まれません。
ALL PRIVILEGESが取り消されると、 ALL PRIVILEGESの付与とそれによって暗黙的に付与された個々の権限の両方が削除されます。EXTERNAL USE SCHEMA 、 EXTERNAL USE LOCATION 、およびMANAGE権限は影響を受けません。
下位互換性を維持するために、 ALL PRIVILEGES権限チェックが行われるときに評価されます。つまり、Databricks が新しい権限とセキュリティ保護可能なオブジェクトをリリースすると、既存のALL PRIVILEGES付与には、セキュリティ保護可能なオブジェクトに適用可能な新しい権限と、すべての新規および既存の子オブジェクトが自動的に含まれるようになります。
MANAGE権限
MANAGE権限により、ユーザーは、所有者でなくても、オブジェクトの権限を管理したり、オブジェクトの所有権を譲渡したり、オブジェクトを削除したりできます。これらの権限を行使するには、 MANAGEを持つユーザーには、オブジェクトとそのすべての親オブジェクトのレベルでの使用権限が必要です。たとえば、スキーマに対してMANAGE権限を行使するには、スキーマに対するUSE SCHEMAと親カタログに対するUSE CATALOGも必要です。
MANAGEを持つユーザーには、オブジェクトに対するすべての権限が自動的に付与されるわけではありません。それぞれの特定の権限を個別に付与する必要があります。MANAGEを持つユーザーは、これらの権限を自分自身に明示的に付与できます。
ユーザーにコンテナ オブジェクトに対するMANAGE権限を付与すると、そのユーザーにはすべての子オブジェクトに対するMANAGE権限も付与されます。たとえば、カタログに対してMANAGE権限を付与すると、すべての子スキーマとテーブルに対してMANAGE権限も明示的に付与されます。この動作は、Unity Catalog の権限継承と一致しています。
BROWSE権限
BROWSE権限は、基礎となるデータへのアクセスを許可せずに、オブジェクトに関するメタデータを検出して表示できるようにする特別な権限です。BROWSEを持つユーザーは次のことができます:
- オブジェクトが存在することを確認する
- 名前、説明、タグを表示する
- アクセスをリクエストする
BROWSE カタログ レベルでのみ付与できます。BROWSE使用すると、そのカタログ内のすべてのオブジェクトを検出して表示できますが、カタログ エクスプローラーでスキーマと子オブジェクトの権限を表示するときに、継承された権限として明示的に表示されません。
BROWSEを持つユーザーは、メタデータを検出して表示するためにUSE CATALOGやUSE SCHEMAのような使用権限を必要としません。
Databricks では、組織全体でデータを検出できるように、カタログのBROWSEをAll account usersグループに付与することをお勧めします。これにより、管理者が事前に権限を付与しなくても、ユーザーはデータを検索してアクセスを要求できるようになります。
所有
Unity Catalog内のセキュリティ保護可能なすべてのオブジェクトには所有者がいます。 所有者はユーザー、サービスプリンシパル、またはグループです。 オブジェクトを作成したプリンシパルがその最初の所有者になります。
所有権はUnity Catalogでは特別な意味を持ちます。 オブジェクト所有者は、所有するオブジェクトに対してすべての機能を自動的に実行できます。ただし、Databricks は所有者にALL PRIVILEGES権限を明示的に付与しません。つまり、 SHOW GRANTSコマンドを実行してもALL PRIVILEGESは返されません。
Unity Catalog では所有権は下位に継承されません。ただし、オブジェクトの所有者には、すべての子オブジェクトを管理する権限が自動的に付与されます。たとえば、カタログを所有している場合、カタログ内の子スキーマを自動的に所有するわけではありませんが、すべての子スキーマを管理することはできます。所有者が明示的にALL PRIVILEGESを持たなくてもオブジェクトのすべての機能を持つのと同様に、この場合も Databricks はMANAGE権限を明示的に付与しません。
オブジェクトの所有者は、権限の付与と取り消し、所有権の譲渡、オブジェクトの削除など、オブジェクトに対するその他の重要な操作を実行できます。
要約すると、オブジェクトの所有者は次の操作を実行できます。
機能 | 説明 |
|---|---|
すべてのオブジェクト機能 | 所有者は、所有するオブジェクトに対するすべての機能を自動的に持ちます。これは機能的には |
子オブジェクトの管理 | 所有者は自動的にすべての子オブジェクトを管理する権限を取得します。これは機能的にはすべての子オブジェクトに対する |
権限の付与と取り消し | 所有者は、オブジェクトに対する権限をユーザーやグループに付与したり取り消したりできます。 |
所有権の譲渡 | 所有者はオブジェクトの所有権を別のプリンシパルに譲渡できる |
オブジェクトをドロップする | 所有者は自分が所有するオブジェクトを削除できます |
所有権とその譲渡方法の詳細については、 Unity Catalogオブジェクトの所有権の管理」を参照してください。
所有権とMANAGE権限
MANAGE権限は、オブジェクトに対する権限を付与および取り消す権限をユーザーに付与します。ユーザーにオブジェクトに対するすべての権限を付与するわけではありません。ただし、 MANAGEを持つユーザーは、 SELECTなどのデータ アクセス権限を自分自身に明示的に付与できます。
対照的に、オブジェクト所有者は、デフォルトでそのオブジェクトに対するすべての機能を持ちます。所有権は子オブジェクトに継承されないため、所有者は依然としてそれらの子オブジェクトに対する明示的な権限付与を必要とします。
MANAGE権限を持つユーザーには、該当する場合はオブジェクト レベル、およびすべての親コンテナ オブジェクト レベルでの適切な使用権限が必要です。たとえば、スキーマに対してMANAGE権限を行使するには、スキーマに対するUSE SCHEMAと親カタログに対するUSE CATALOGが必要です。テーブルに対する権限を付与するには、テーブルに対するMANAGE 、親カタログに対するUSE CATALOG 、親スキーマに対するUSE SCHEMAが必要です。
次の表は、所有権とMANAGE権限の主な違いをまとめたものです。
機能 | 所有者 |
|
|---|---|---|
オブジェクトのすべての機能 | はい、すべての機能が 暗黙的に含まれ ています。これは、明示的に | いいえ、権限は別途付与する必要があります。 |
オブジェクトに対する権限の付与と取り消し | はい | はい |
所有権の譲渡 | はい | はい |
オブジェクトをドロップする | はい | はい |
子オブジェクトを管理する機能 | はい、子オブジェクトの管理機能が 暗黙的に含ま れます。所有権を参照してください。 | はい、子オブジェクトに対して |
使用権限が必要です | No | はい、適切な |
校長の数 | プリンシパルは 1 つだけ (ユーザー、サービスプリンシパル、またはグループ) | 複数のプリンシパルに付与できます |
誤って権限を昇格することを避けるため、 ALL PRIVILEGES権限にはMANAGE権限は含まれません。
特権の継承
パブリックプレビュー期間中(2022 年 8 月 25 日より前)に Unity Catalog メタストアを作成した場合、現在の継承モデルをサポートしていない以前の権限モデルを使用している可能性があります。権限の継承を取得するには、権限モデル バージョン 1.0 にアップグレードできます。「権限継承へのアップグレード」を参照してください。
権限の継承は、Unity Catalog 権限モデルの重要な機能です。親オブジェクトに権限を付与すると、その権限は現在および将来のすべての子オブジェクトに自動的に適用されます。これにより、個別に付与する必要のある権限の数が減り、アクセス管理が簡素化されます。
権限はオブジェクト モデル階層を通じて下方に継承されます。
- カタログに付与された権限は、そのカタログ内のすべてのスキーマと、それらのスキーマ内のすべてのテーブル、ビュー、ボリューム、および関数に適用されます。
- スキーマに付与された権限は、そのスキーマ内のすべてのテーブル、ビュー、ボリューム、および関数に適用されます。
たとえば、ユーザーにカタログに対するSELECT権限を付与すると、そのユーザーはそのカタログ内のすべてのテーブルとビューを読み取ることができます (適切なUSE CATALOGおよびUSE SCHEMA使用権限を持ちます)。
メタストアに付与された権限は子オブジェクトに継承されません。メタストア レベルの許可は、メタストア内のデータへのアクセスではなく、 CREATE CATALOGやCREATE EXTERNAL LOCATIONなどのメタストア スコープの操作を制御します。
Unity Catalog では所有権は下位に継承されません。オブジェクトの所有者には、そのオブジェクトに対するすべての権限が自動的に付与されます。自分のオブジェクトの下に作成された子オブジェクトの所有権は自動的に取得されません。ただし、すべての新規および既存の子オブジェクトに対するMANAGE権限は自動的に取得されます。
継承の例
カタログ レベルでSELECT 、 USE CATALOG 、 USE SCHEMA finance_teamグループに付与するとします。
GRANT USE CATALOG, USE SCHEMA, SELECT ON CATALOG sales TO finance_team;
この許可により、 finance_teamグループは次のことが可能になります:
salesカタログにアクセスする- カタログ内のすべてのスキーマにアクセスする
- カタログ内の現在および将来のすべてのテーブルとビューからデータを読み取ります
カタログ レベルでCREATE TABLE 、 USE CATALOG 、 USE SCHEMA data_engineersグループに付与するとします。
GRANT USE CATALOG, USE SCHEMA, CREATE TABLE ON CATALOG analytics TO data_engineers;
この許可により、 data_engineersグループは次のことが可能になります:
analyticsカタログにアクセスする- カタログ内のすべてのスキーマにアクセスする
- カタログ内の現在のスキーマまたは将来のスキーマにテーブルを作成する
権限を付与および取り消す方法については、 「権限の表示、付与、取り消し」を参照してください。