共用方式為


在 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中收到 defaultschema 的 USE SCHEMACREATE TABLECREATE VOLUMECREATE MODELCREATE FUNCTIONCREATE MATERIALIZED VIEW 許可權。

如需詳細資訊,請參閱 自動啟用 Unity Catalog

繼承模型

Unity Catalog 中的可安全操作物件是階層式的,許可權會向下繼承。 繼承權限的最高層級物件是 catalog。 這表示授與 catalog 或 schema 的許可權會自動將許可權授與 catalog 或 schema內的所有目前和未來物件。 例如,如果您為使用者提供 catalog的 SELECT 許可權,則該使用者就能夠 selecttables 和 viewscatalog。 在 Unity Catalog 中繼存放區上授與的權限不會被繼承。

Unity Catalog 物件階層

物件的擁有者會被自動授與該物件的所有權限。 此外,物件擁有者可以在物件本身和其所有子物件上擁有 grant 權限。 這表示 schema 的擁有者不會在 schema中自動擁有 tables 的所有許可權,但他們可以在 schema中 tables 上 grant 自己的許可權。

注意

如果您在公開預覽期間建立 Unity Catalog 中繼存放區(在 2022 年 8 月 25 日之前),則可能是在不支援目前繼承模型的舊版許可權模型上。 您可以升級至 Privilege Model 1.0 版,以獲得 get 權限繼承。 請參閱升級至權限繼承

顯示、grant和 revoke 許可權

您可以使用 SQL 命令、Databricks CLIDatabricks Terraform 提供者或 Catalog Explorer 來管理中繼存放區對象的許可權。

在下列 SQL 命令中,將佔位符 values替換掉:

  • <privilege-type> 是 Unity Catalog 許可權類型。 請參閱 許可權類型
  • <securable-type>:安全性實體物件的類型,如 CATALOGTABLE。 請參閱 安全性實體物件
  • <securable-name>:安全性實體的名稱。 如果安全性實體類型為 METASTORE,請勿提供安全性實體名稱。 它假設是附加至工作區的中繼存放區。
  • <principal> 是使用者、服務主體 (由其 applicationId 值表示) 或群組。 您必須以反引號 () 括住包含` `的使用者、服務主體和群組名稱。 請參閱主體

在 Unity Catalog 中繼存放區中顯示物件授與

注意

目前,具有物件 MANAGE 許可權的用戶無法在 INFORMATION_SCHEMA中檢視該物件的所有授與。 相反地,INFORMATION_SCHEMA 只會在物件上顯示自己的授權。 未來會更正此行為。

具有 MANAGE 許可權的使用者可以使用 SQL 命令或 Catalog Explorer 來檢視物件上的所有授與。 請參閱 在 Unity Catalog中管理權限。

所需的權限:

  • Metastore 管理員、擁有該物件 MANAGE 許可權的使用者、物件的擁有者,或擁有包含該物件之 catalog 或 schema 的擁有者可以看到物件上的所有授權。
  • 如果您沒有上述許可權,則只能檢視物件上自己的授與。

Catalog 探險者

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. Select 物件,例如 catalog、schema、table或視圖。
  3. 移至 [ 許可權] 索引標籤。

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 探險家

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. Select 物件,例如 catalog、schema、table或視圖。
  3. 移至 [ 許可權] 索引標籤。如果您不是對象擁有者或中繼存放區管理員,則只能檢視物件上自己的授與。

SQL

在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令,以顯示物件上的授與。

  SHOW GRANTS `<user>@<domain-name>` ON  <securable-type> <securable-name>

在 Unity Catalog 中繼存放區中的物件上設定的 Grant 權限

需要 許可權: 中繼存放區系統管理員、物件的 MANAGE 許可權、對象的擁有者,或包含物件的 catalog 或 schema 擁有者。

Catalog 探索者

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. Select 物件,例如 catalog、schema、table或檢視。
  3. 移至 [ 許可權] 索引標籤。
  4. 點擊 Grant
  5. 輸入使用者的電子郵件地址或組名。
  6. Select grant的許可權。
  7. 按一下 [確定]

SQL

在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。

  GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>

例如,下列命令會授與名為 finance-team 群組的群組, 存取權,以在名為 預設 預設 建立 名為 main的群組:

  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_modelEXECUTE 許可權,您可以使用:

  GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;

Unity Catalog 中繼存放區中物件的 Revoke 許可權

需要 許可權: 中繼存放區系統管理員、物件的 MANAGE 許可權、對象的擁有者,或包含物件的 catalog 或 schema 擁有者。

Catalog 探險者

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. Select 物件,例如 catalog、schema、table或檢視。
  3. 移至 [ 許可權] 索引標籤。
  4. Select 已授予的用戶、服務主體或群組的許可權。
  5. 按一下 Revoke
  6. 若要確認,請按兩下 [Revoke]。

SQL

在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。

  REVOKE <privilege-type> ON <securable-type> <securable-name> TO <principal>

例如,下列命令會撤銷名為 finance-team 群組 存取權,以在名為 預設 預設 建立名為 main 群組:

  REVOKE CREATE TABLE ON SCHEMA main.default TO `finance-team`;

在中繼存放區上顯示授與

需要的許可權: 中繼存放區管理員或帳戶管理員。您也可以在中繼存放區上檢視自己的授與。

Catalog 資源管理器

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. 在 [Catalog 瀏覽器] 頁面標籤旁,點擊中繼存放區名稱旁的圖示。
  3. 移至 [ 許可權] 索引標籤。

SQL

在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。 您可以在特定主體上顯示授與,也可以顯示中繼存放區上的所有授與。

  SHOW GRANTS [principal] ON METASTORE

Grant 中繼存放區的許可權

需要的許可權: 中繼存放區管理員或帳戶管理員。

Catalog 探險者

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. 在 [Catalog Explorer] 頁面標籤旁,點擊中繼存放區名稱旁的圖示。
  3. 在 [許可權] 索引標籤上,點擊 [Grant]。
  4. 輸入使用者的電子郵件地址或組名。
  5. Select 擁有對 grant的許可權。
  6. 按一下 [確定]

SQL

  1. 在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。

    GRANT <privilege-type> ON METASTORE TO <principal>;
    

    在執行與中繼存放區相關的 grant 操作時,無需包含中繼存放區名稱,因為會假設是附加到工作區的中繼存放區。

Revoke 中繼存放區的許可權

需要的許可權: 中繼存放區管理員或帳戶管理員。

Catalog 探險者

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. 在 [Catalog 總管] 頁面標籤,按兩下中繼存放區名稱旁的圖示。
  3. 在 [許可權] 索引標籤上,select 使用者或群組,然後按兩下 [Revoke]。
  4. 若要確認,請按兩下 [Revoke]。

SQL

  1. 在筆記本或 SQL 查詢編輯器中,執行下列 SQL 命令。

    REVOKE <privilege-type> ON METASTORE FROM <principal>;
    

    當您 revoke 中繼存放區的許可權時,不會包含中繼存放區名稱,因為會假設附加至工作區的中繼存放區。