在 Unity Catalog 中管理許可權
本文說明如何在 Unity Catalog中控制對數據和其他物件的存取。 若要瞭解此模型與 Hive 中繼存放區中的存取控制有何不同,請參閱 使用 Unity Catalog 和舊版 Hive 中繼存放區。
誰可以管理許可權?
一開始,用戶無法存取中繼存放區中的數據。 Azure Databricks 帳戶管理員、工作區管理員和中繼存放區管理員具有管理 Unity Catalog的默認許可權。 請參閱 Unity
Unity 中的所有可安全管理的物件 Catalog 都有擁有者。 對象擁有者在該對象上擁有所有許可權,包括能夠 grant 其他主體的許可權。 擁有者可以將物件上的 MANAGE
許可權 grant 給其他使用者,這些許可權允許使用者管理物件上的許可權。 請參閱 管理 Unity Catalog 物件擁有權。
下列任一項都可以授與權限:
- 中繼存放區管理員。
- 具有物件上
MANAGE
許可權的使用者。 - 對象的擁有者。
- 包含物件的 catalog 或 schema 的擁有者。
帳戶管理員也可以直接在 metastore 上管理 grant 權限。
工作區 catalog 權限
如果您的工作區已針對 Unity 自動啟用 Catalog,則預設會將工作區附加至中繼存放區,且會在中繼存放區中為您的工作區建立工作區 catalog。 工作區系統管理員是工作區的預設擁有者 catalog。 身為擁有者,他們可以管理工作區 catalog 及所有子項目的權限。
所有工作區用戶都會在工作區 catalog上收到 USE CATALOG
許可權。 工作區使用者也會在 catalog中收到 default
schema 的 USE SCHEMA
、CREATE TABLE
、CREATE VOLUME
、CREATE MODEL
、CREATE FUNCTION
和 CREATE MATERIALIZED VIEW
許可權。
如需詳細資訊,請參閱 自動啟用 Unity Catalog。
繼承模型
Unity Catalog 中的可安全操作物件是階層式的,許可權會向下繼承。 繼承權限的最高層級物件是 catalog。 這表示授與 catalog 或 schema 的許可權會自動將許可權授與 catalog 或 schema內的所有目前和未來物件。 例如,如果您為使用者提供 catalog的 SELECT
許可權,則該使用者就能夠 selecttables 和 viewscatalog。 在 Unity Catalog 中繼存放區上授與的權限不會被繼承。
物件的擁有者會被自動授與該物件的所有權限。 此外,物件擁有者可以在物件本身和其所有子物件上擁有 grant 權限。 這表示 schema 的擁有者不會在 schema中自動擁有 tables 的所有許可權,但他們可以在 schema中 tables 上 grant 自己的許可權。
注意
如果您在公開預覽期間建立 Unity Catalog 中繼存放區(在 2022 年 8 月 25 日之前),則可能是在不支援目前繼承模型的舊版許可權模型上。 您可以升級至 Privilege Model 1.0 版,以獲得 get 權限繼承。 請參閱升級至權限繼承。
顯示、grant和 revoke 許可權
您可以使用 SQL 命令、Databricks CLI、Databricks Terraform 提供者或 Catalog Explorer 來管理中繼存放區對象的許可權。
在下列 SQL 命令中,將佔位符 values替換掉:
-
<privilege-type>
是 Unity Catalog 許可權類型。 請參閱 許可權類型。 -
<securable-type>
:安全性實體物件的類型,如CATALOG
或TABLE
。 請參閱 安全性實體物件 -
<securable-name>
:安全性實體的名稱。 如果安全性實體類型為METASTORE
,請勿提供安全性實體名稱。 它假設是附加至工作區的中繼存放區。 -
<principal>
是使用者、服務主體 (由其 applicationId 值表示) 或群組。 您必須以反引號 () 括住包含` `
的使用者、服務主體和群組名稱。 請參閱主體。
在 Unity Catalog 中繼存放區中顯示物件授與
注意
目前,具有物件 MANAGE
許可權的用戶無法在 INFORMATION_SCHEMA
中檢視該物件的所有授與。 相反地,INFORMATION_SCHEMA
只會在物件上顯示自己的授權。 未來會更正此行為。
具有 MANAGE
許可權的使用者可以使用 SQL 命令或 Catalog Explorer 來檢視物件上的所有授與。 請參閱 在 Unity Catalog中管理權限。
所需的權限:
- Metastore 管理員、擁有該物件
MANAGE
許可權的使用者、物件的擁有者,或擁有包含該物件之 catalog 或 schema 的擁有者可以看到物件上的所有授權。 - 如果您沒有上述許可權,則只能檢視物件上自己的授與。
Catalog 探險者
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- Select 物件,例如 catalog、schema、table或視圖。
- 移至 [ 許可權] 索引標籤。
SQL
在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。 您可以在特定主體上顯示授與,也可以顯示安全性實體物件上的所有授與。
SHOW GRANTS [principal] ON <securable-type> <securable-name>
例如,下列命令顯示在父 catalog 中名為 主要的 schema 上,名為 預設 的所有授權:
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 中繼存放區中顯示我對物件的權限
需要的許可權: 您一律可以在 物件上檢視自己的授與。
Catalog 探險家
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- Select 物件,例如 catalog、schema、table或視圖。
- 移至 [ 許可權] 索引標籤。如果您不是對象擁有者或中繼存放區管理員,則只能檢視物件上自己的授與。
SQL
在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令,以顯示物件上的授與。
SHOW GRANTS `<user>@<domain-name>` ON <securable-type> <securable-name>
在 Unity Catalog 中繼存放區中的物件上設定的 Grant 權限
需要 許可權: 中繼存放區系統管理員、物件的 MANAGE
許可權、對象的擁有者,或包含物件的 catalog 或 schema 擁有者。
Catalog 探索者
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- Select 物件,例如 catalog、schema、table或檢視。
- 移至 [ 許可權] 索引標籤。
- 點擊 Grant。
- 輸入使用者的電子郵件地址或組名。
- Select grant的許可權。
- 按一下 [確定]。
SQL
在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。
GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>
例如,下列命令會授與名為 finance-team
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`;
請注意,已註冊的模型是一種函式類型。 若要對模型進行 grant 權限,您必須使用 GRANT ON FUNCTION
。 例如,若要 grant 群組 ml-team-acme
模型 prod.ml_team.iris_model
的 EXECUTE
許可權,您可以使用:
GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;
Unity Catalog 中繼存放區中物件的 Revoke 許可權
需要 許可權: 中繼存放區系統管理員、物件的 MANAGE
許可權、對象的擁有者,或包含物件的 catalog 或 schema 擁有者。
Catalog 探險者
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- Select 物件,例如 catalog、schema、table或檢視。
- 移至 [ 許可權] 索引標籤。
- Select 已授予的用戶、服務主體或群組的許可權。
- 按一下 Revoke。
- 若要確認,請按兩下 [Revoke]。
SQL
在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。
REVOKE <privilege-type> ON <securable-type> <securable-name> TO <principal>
例如,下列命令會撤銷名為 finance-team
REVOKE CREATE TABLE ON SCHEMA main.default TO `finance-team`;
在中繼存放區上顯示授與
需要的許可權: 中繼存放區管理員或帳戶管理員。您也可以在中繼存放區上檢視自己的授與。
Catalog 資源管理器
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- 在 [Catalog 瀏覽器] 頁面標籤旁,點擊中繼存放區名稱旁的圖示。
- 移至 [ 許可權] 索引標籤。
SQL
在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。 您可以在特定主體上顯示授與,也可以顯示中繼存放區上的所有授與。
SHOW GRANTS [principal] ON METASTORE
Grant 中繼存放區的許可權
需要的許可權: 中繼存放區管理員或帳戶管理員。
Catalog 探險者
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- 在 [Catalog Explorer] 頁面標籤旁,點擊中繼存放區名稱旁的圖示。
- 在 [許可權] 索引標籤上,點擊 [Grant]。
- 輸入使用者的電子郵件地址或組名。
- Select 擁有對 grant的許可權。
- 按一下 [確定]。
SQL
在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。
GRANT <privilege-type> ON METASTORE TO <principal>;
在執行與中繼存放區相關的 grant 操作時,無需包含中繼存放區名稱,因為會假設是附加到工作區的中繼存放區。
Revoke 中繼存放區的許可權
需要的許可權: 中繼存放區管理員或帳戶管理員。
Catalog 探險者
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- 在 [Catalog 總管] 頁面標籤,按兩下中繼存放區名稱旁的圖示。
- 在 [許可權] 索引標籤上,select 使用者或群組,然後按兩下 [Revoke]。
- 若要確認,請按兩下 [Revoke]。
SQL
在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。
REVOKE <privilege-type> ON METASTORE FROM <principal>;
當您 revoke 中繼存放區的許可權時,不會包含中繼存放區名稱,因為會假設附加至工作區的中繼存放區。