Hive 中繼存放區中的許可權和安全性實體物件
適用於:Databricks SQL Databricks Runtime
許可權模型與可保護物件會因您使用 Unity Catalog 元數據存儲或舊版 Hive 元數據存儲而有所不同。 本文說明舊版Hive中繼存放區的許可權模型。 如果您使用 Unity
Hive 中繼存放區中的安全性實體物件
安全性實體物件是在中繼存放區中定義的物件,其許可權可以授與主體。
若要管理任何對象的許可權,您必須是其擁有者或系統管理員。
語法
securable_object
{ ANY FILE |
CATALOG [ catalog_name ] |
{ SCHEMA | DATABASE } schema_name |
FUNCTION function_name |
[ TABLE ] table_name |
VIEW view_name
}
Parameters
ANY FILE
控制基礎文件系統的存取。
CATALOG
catalog_name控制對整個資料的存取 catalog。
{ SCHEMA | DATABASE }
schema_name控制對 schema的存取。
FUNCTION
function_name控制具名函式的存取。
[ TABLE ]
table_name控制對管理的或外部 table的存取。
VIEW
view_name控制對 SQL views的存取。
繼承模型
Hive 中繼存放區中的安全性實體對像是階層式物件,且許可權會向下繼承。 這表示授與或拒絕 CATALOG
的許可權會自動授與或拒絕 catalog中的所有架構許可權。 同樣地,schema 物件上賦予的權限會被該 schema中的所有物件繼承。 此模式適用於所有安全性實體物件。
如果您在 table上 deny 設定用戶權限,則該用戶無法通過嘗試 listschema中的所有 tables 來查看 table。 如果您在 schema上 deny 用戶許可權,則使用者無法藉由嘗試 listcatalog中的所有架構來看到 schema 存在。
許可權類型
下列 table 顯示哪些許可權與哪些具有安全性設定的實體對象相關聯。
權限類型 | ANONYMOUS 函式 | ANY FILE | CATALOG | SCHEMA | FUNCTION | TABLE | VIEW |
---|---|---|---|---|---|---|---|
CREATE | 是 | 是 | |||||
MODIFY | 是 | 是 | 是 | 是 | |||
READ_METADATA | 是 | 是 | 是 | 是 | |||
SELECT | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
USAGE | 是 | 是 |
ALL PRIVILEGES
用來 grant 或 revoke 所有適用於安全性實體及其子對象的許可權,而不需要明確指定這些許可權。 這會擴充至進行權限檢查時的所有可用權限。
CREATE
在 catalog 或 schema中建立物件。
MODIFY
COPY INTO、UPDATEDELETE、INSERT或 MERGE INTOtable。
如果可保護物件是包含的
hive_metastore
或 schema,則授予MODIFY
會在該可保護物件內的所有目前和未來 tables 和 views 上 grantMODIFY
。READ_METADATA
在 SHOW 中探索安全性實體物件,並在 DESCRIBE 中審訊物件
如果安全性實體物件是
hive_metastore
catalog 或其中的 schema,那麼授與READ_METADATA
會對安全性實體物件內所有目前和未來的 tables 和 views 進行 grantREAD_METADATA
。READ FILES
SELECT
查詢 table 或檢視、叫用使用者定義或匿名函式,或 select
ANY FILE
。 使用者需要在 table、檢視或函式上具有SELECT
,以及物件的 schema 和 catalog上具有USAGE
。如果安全性實體對像是安全性實體物件內的
hive_metastore
或 schema,則授與SELECT
會在安全性實體物件內的所有目前和未來 tables 和 views 上 grantSELECT
。USAGE
必要,但不足以參考 catalog 或 schema中的任何物件。 主體也必須擁有個別安全性實體對象的許可權。
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`;