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