Hive メタストアの特権とセキュリティ保護可能なオブジェクト
適用対象: Databricks SQL Databricks Runtime
権限は、メタストア内のセキュリティ保護可能なオブジェクトを操作するためにプリンシパルに付与される権限です。
特権モデルとセキュリティ保護可能なオブジェクトは、Unity Catalog メタストアとレガシの Hive メタストアのどちらを使用しているかによって異なります。 この記事では、レガシ Hive メタストアの特権モデルについて説明します。 Unity Catalog を使用している場合は、「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
Hive メタストアのセキュリティ保護可能なオブジェクト
セキュリティ保護可能なオブジェクトは、プリンシパルに特権を付与できるメタストアで定義されているオブジェクトです。
オブジェクトに対する特権を管理するには、その所有者または管理者である必要があります。
構文
securable_object
{ ANY FILE |
CATALOG [ catalog_name ] |
{ SCHEMA | DATABASE } schema_name |
FUNCTION function_name |
[ TABLE ] table_name |
VIEW view_name
}
パラメーター
ANY FILE
基になるファイルシステムへのアクセスを制御します。
CATALOG
catalog_nameデータ カタログ全体へのアクセスを制御します。
{ SCHEMA | DATABASE }
schema_nameスキーマへのアクセスを制御します。
FUNCTION
function_name名前付き関数へのアクセスを制御します。
[ TABLE ]
table_nameマネージドまたは外部のテーブルへのアクセスを制御します。
VIEW
view_nameSQL ビューへのアクセスを制御します。
継承モデル
Hive メタストアのセキュリティ保護可能なオブジェクトは階層構造であり、特権は下位に継承されます。 つまり、CATALOG
に対する特権を許可または拒否すると、カタログ内のすべてのスキーマに対する特権が自動的に許可または拒否されます。 同様に、スキーマ オブジェクトに付与された特権は、そのスキーマ内のすべてのオブジェクトによって継承されます。 このパターンは、セキュリティ保護可能なオブジェクトすべてに該当します。
テーブルに対するユーザー特権を拒否した場合、ユーザーはスキーマ内のすべてのテーブルを一覧表示しようとしてもテーブルを表示できません。 スキーマに対するユーザー特権を拒否すると、カタログ内のすべてのスキーマを一覧表示しようとして、スキーマが存在することをユーザーに確認できません。
特権の種類
次の表に、どの特権がどのセキュリティ保護可能なオブジェクトに関連しているかを示します。
特権の種類 | 匿名関数 | 任意のファイル | CATALOG | 方式 | FUNCTION | TABLE | VIEW |
---|---|---|---|---|---|---|---|
CREATE | あり | はい | |||||
MODIFY | はい | イエス | イエス | はい | |||
READ_METADATA | はい | イエス | イエス | はい | |||
SELECT | はい | イエス | イエス | イエス | イエス | イエス | はい |
USAGE | はい | はい |
ALL PRIVILEGES
セキュリティ保護可能なオブジェクトとその子オブジェクトに適用可能なすべての権限を、明示的に指定せずに付与または取り消すために使用されます。 これにより、アクセス許可のチェックが行われた時点で使用可能なすべての特権に拡張されます。
CREATE
カタログまたはスキーマ内にオブジェクトを作成します。
MODIFY
テーブルの COPY INTO、UPDATE DELETE、INSERT、または MERGE INTO を行います。
securable_object が
hive_metastore
であるか、その中のスキーマである場合、MODIFY
を付与すると、そのセキュリティ保護可能なオブジェクト内のすべての現在および将来のテーブルとビューに対するMODIFY
が許可されます。READ_METADATA
SHOW でセキュリティ保護可能なオブジェクトを検出し、DESCRIBE でそのオブジェクトに対して問い合わせます
セキュリティ保護可能なオブジェクトが
hive_metastore
カタログであるか、その中のスキーマである場合、READ_METADATA
を付与すると、そのセキュリティ保護可能なオブジェクト内のすべての現在および将来のテーブルとビューに対するREAD_METADATA
が許可されます。READ FILES
SELECT
テーブルまたはビューに対してクエリを実行するか、ユーザー定義または匿名の関数を呼び出すか、
ANY FILE
を選択します。 ユーザーには、テーブル、ビュー、または関数に対するSELECT
と、さらにオブジェクトのスキーマとカタログに対するUSAGE
が必要です。セキュリティ保護可能なオブジェクトが
hive_metastore
であるか、その中のスキーマである場合、SELECT
を付与すると、そのセキュリティ保護可能なオブジェクト内のすべての現在および将来のテーブルとビューに対するSELECT
が許可されます。USAGE
必須ですが、カタログまたはスキーマ内のオブジェクトを参照するには十分ではありません。 プリンシパルには、個々のセキュリティ保護可能なオブジェクトに対する特権も必要です。
WRITE FILES
例
-- Grant a privilege to the user alf@melmak.et
> GRANT SELECT ON TABLE t TO `alf@melmak.et`;
-- Revoke a privilege from the general public group.
> REVOKE USAGE ON SCHEMA some_schema FROM `alf@melmak.et`;