Share via


管理 Unity 目錄中的權限 \(部分機器翻譯\)

本文說明如何控制對 Unity 目錄中數據和其他物件的存取。 若要瞭解此模型與Hive中繼存放區中的訪問控制有何不同,請參閱 使用 Unity 目錄和舊版 Hive 中繼存放區

神秘 可以管理許可權嗎?

一開始,用戶無法存取中繼存放區中的數據。 Azure Databricks 帳戶管理員、工作區管理員和中繼存放區管理員具有管理 Unity 目錄的默認許可權。 請參閱 Unity 目錄中 管理員 許可權。

Unity 目錄中的所有安全性實體物件都有擁有者。 對象擁有者在該對象上擁有所有許可權,包括將許可權授與其他主體的能力。 請參閱 管理 Unity 目錄對象擁有權

中繼存放區管理員、物件的擁有者或包含物件的目錄或結構描述的擁有者可以授與權限。 帳戶管理員也可以直接在中繼存放區上授與許可權。

工作區目錄許可權

如果您的工作區已針對 Unity 目錄自動啟用,則工作區預設會附加至中繼存放區,而且會在中繼存放區中為您的工作區建立工作區目錄。 工作區系統管理員是工作區目錄的預設擁有者。 身為擁有者,他們可以管理工作區目錄和所有子對象的許可權。

所有工作區用戶都會收到 USE CATALOG 工作區目錄的許可權。 工作區使用者也會收到USE SCHEMA目錄中架構的 defaultCREATE TABLECREATE VOLUMECREATE MODELCREATE FUNCTION、 和 CREATE MATERIALIZED VIEW 許可權。

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

繼承模型

Unity 目錄中的安全性實體對像是階層式物件,且許可權會向下繼承。 繼承權限的最高層級物件是目錄。 這表示授與目錄或結構描述的權限,會自動將權限授與目錄或結構描述內的所有目前和未來物件。 例如,如果您為使用者 SELECT 授與目錄的許可權,則該用戶將能夠選取(讀取)該目錄中的所有數據表和檢視。 不會繼承 Unity 目錄中繼存放區上授與的權限。

Unity Catalog 物件階層

對象的擁有者會自動授與該物件的所有許可權。 此外,對象擁有者可以授與物件本身和其所有子對象的許可權。 這表示架構的擁有者不會自動擁有架構中數據表的所有許可權,但可以授與架構中數據表的許可權。

注意

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

顯示、授與和撤銷許可權

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

在下列 SQL 命令中,取代這些佔位元值:

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

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

必要許可權: 中繼存放區管理員、對象的擁有者、包含對象的目錄或架構的擁有者。 您也可以檢視自己的授與。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 選取物件,例如目錄、架構、數據表或檢視表。
  3. 移至 [ 許可權] 索引標籤。

Sql

在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令。 您可以在特定主體上顯示授與,也可以顯示安全性實體物件上的所有授與。

  SHOW GRANTS [principal] ON  <securable-type> <securable-name>

例如,下列命令會在名為main的父目錄中,顯示名為default之架構上的所有授與:

  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 目錄中繼存放區中對象的許可權

必要許可權: 中繼存放區管理員、對象的擁有者,或包含對象的目錄或架構的擁有者。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 選取物件,例如目錄、架構、數據表或檢視表。
  3. 移至 [ 許可權] 索引標籤。
  4. 按兩下 [ 授與]。
  5. 輸入使用者的電子郵件地址或組名。
  6. 選取要授與的許可權。
  7. 按一下 [確定]

Sql

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

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

例如,下列命令會授與名為 finance-team 存取權的群組,以使用名為 main 的父目錄,在名為 default 的架構中建立數據表:

  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`;

撤銷 Unity 目錄中繼存放區中對象的許可權

必要許可權: 中繼存放區管理員、對象的擁有者,或包含對象的目錄或架構的擁有者。

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 選取物件,例如目錄、架構、數據表或檢視表。
  3. 移至 [ 許可權] 索引標籤。
  4. 選取已授與用戶、服務主體或群組的許可權。
  5. 按兩下 [ 撤銷]。
  6. 若要確認,請按兩下 [ 撤銷]。

Sql

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

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

例如,下列命令會撤銷名為 finance-team 存取權的群組,以使用名為 main 的父目錄,在名為 default 的架構中建立數據表:

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

在中繼存放區上顯示授與

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

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 在目錄管頁面標籤旁邊,按兩下中繼存放區名稱旁的圖示。
  3. 移至 [ 許可權] 索引標籤。

Sql

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

  SHOW GRANTS [principal] ON METASTORE

授與中繼存放區的許可權

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

目錄總管

  1. 在您的 Azure Databricks 工作區中,按兩下 目錄圖示[目錄]。
  2. 在目錄管頁面標籤旁邊,按兩下中繼存放區名稱旁的圖示。
  3. 在 [ 許可權] 索引標籤上,按兩下 [ 授與]。
  4. 輸入使用者的電子郵件地址或組名。
  5. 選取要授與的許可權。
  6. 按一下 [確定]

Sql

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

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

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

撤銷中繼存放區的許可權

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

目錄總管

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

Sql

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

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

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