Unity Catalog特權和安全對象
本文描述了Unity Catalog特權模型。要了解該模型與Hive亞穩態的不同之處,請參見與統一目錄和遺留的Hive metastore工作.
請注意
本文引用了特權模型1.0版中的Unity Catalog特權和繼承模型。如果您在公開預覽期間(2022年8月25日之前)創建了Unity Catalog metastore,則可以升級到特權模型1.0版本升級到特權繼承
管理權限
特權可以由metastore管理員(對象的所有者)或包含該對象的編目或模式的所有者授予。您可以使用SQL命令管理metastore對象的權限,Unity Catalog命令行,或在數據資源管理器中。若要了解如何使用數據資源管理器管理權限,請參閱,在數據資源管理器中管理Unity目錄權限.
要在SQL中管理權限,可以使用格蘭特和撤銷在筆記本或Databricks SQL查詢編輯器中,使用以下語法:
格蘭特privilege_type在securable_object來主要
地點:
privilege_type
是一個Unity Catalog特權類型securable_object
是一個在Unity目錄中的安全對象主要
是用戶、服務主體(由其applicationId值表示)或組。看到主要.
例如,以下命令授予名為金融訪問以在命名的模式中創建表默認的使用父目錄命名主要:
格蘭特創建表格在模式主要.默認的來金融;
有關使用SQL命令授予權限的詳細信息,請參見Unity Catalog中的特權和安全對象.
屬性也可以管理特權磚起程拓殖提供者和databricks_grants.
Unity Catalog中的安全對象
安全對象是在Unity Catalog metastore中定義的對象,在該對象上可以將特權授予主體。Unity Catalog中的安全對象是分層的。
可安全對象包括:
METATORE:元數據的頂層容器。每個Unity Catalog亞存儲都公開了一個三級命名空間(
目錄
.模式
.表格
)來組織你的資料。目錄:對象層次結構的第一層,用於組織數據資產。
模式:也稱為數據庫,模式是對象層次結構的第二層,包含表和視圖。
表格:對象層次結構中的最低級別,表可以是外部(存儲在您選擇的雲存儲中的外部位置)或管理表(存儲在專門為Databricks創建的雲存儲中的存儲容器中)。
視圖:從模式中包含的一個或多個表創建的隻讀對象。
外部位置:一個對象,它包含對存儲憑證的引用和包含在Unity Catalog元存儲中的雲存儲路徑。
存儲憑證:一個封裝了長期雲證書的對象,該對象提供了對包含在Unity Catalog元存儲中的雲存儲的訪問。
函數:包含在模式中的用戶定義函數。
分享:打算使用增量共享共享的表的邏輯分組。共享包含在Unity Catalog亞存儲中。
收件人:一個對象,用於標識一個組織或用戶組,該組織或用戶組可以使用增量共享與其共享數據。這些對象包含在一個Unity Catalog亞礦中。
提供者:表示使用增量共享提供數據的組織的對象。這些對象包含在一個Unity Catalog亞礦中。
繼承模型
Unity Catalog中的安全對象是分層的,權限向下繼承。繼承特權的最高級別對象是目錄。這意味著在編目或模式上授予特權會自動將特權授予編目或模式中的所有當前和未來對象。在Unity Catalog亞存儲上授予的特權不會被繼承。
例如,下麵的命令授予選擇
目錄中任何模式中的所有表和視圖上的特權主要致團隊金融:
格蘭特選擇在目錄主要來金融;
類似地,您可以在較小的訪問範圍的模式上執行授予:
格蘭特選擇在模式主要.默認的來金融;
繼承模型提供了一種為數據設置默認訪問規則的簡單方法。例如,下麵的命令使機器學習團隊能夠在一個模式中創建表並讀取彼此的表:
創建目錄毫升;創建模式毫升.team_sandbox;格蘭特USE_CATALOG在目錄毫升來ml_team;格蘭特USE_SCHEMA在模式毫升.team_sandbox來ml_team;格蘭特創建表格在模式毫升.team_sandbox來ml_team;格蘭特選擇在模式毫升.team_sandbox來ml_team;
Unity目錄中的特權類型
下表總結了適用於目錄中每個可安全對象的特權類型:
可獲得的 |
特權 |
---|---|
Metastore |
|
目錄 |
以下特權類型適用於目錄中的安全對象。您可以在編目級別授予這些特權,以便將它們應用於編目中相關的當前和未來對象。
|
模式 |
以下特權類型適用於模式中的安全對象。您可以在模式級別授予這些特權,以便將它們應用到模式中相關的當前和未來對象。
|
表格 |
|
視圖 |
|
外部位置 |
|
存儲憑證 |
|
函數 |
|
分享 |
|
收件人 |
沒有一個 |
提供者 |
沒有一個 |
在管理metastore上的特權時,不需要在SQL命令中包含metastore名稱。Unity Catalog授予或撤銷附加到工作區的metastore上的特權。例如,以下命令授予名為工程在附加到工作區的metastore中創建目錄的能力:
格蘭特創建目錄在METASTORE來工程
所有權限
適用對象類型:目錄
,外部位置
,存儲憑證
,模式
,函數
,表格
,視圖
用於授予或撤銷適用於可安全對象及其子對象的所有特權,而無需顯式指定它們。這將擴展到在進行權限檢查時所有可用的特權。
請注意
當應用於層次結構中的更高級別時,此特權非常強大。例如,授予目錄主TO上的所有特權分析師
將給予分析團隊對目錄中的每個對象(模式、表、視圖、函數)的所有特權。
創建外部位置
適用對象類型:Unity Catalog metastore,存儲憑證
應用於存儲憑據時,允許用戶使用存儲憑據創建外部位置。也可以將此特權授予metastore上的用戶,以允許他們創建外部位置。
創建外部表
適用對象類型:外部位置
,存儲憑證
允許用戶使用外部位置或存儲憑據直接在雲租戶中創建外部表。Databricks建議在外部位置授予這種特權,而不是在存儲憑據上授予這種特權(因為它的作用域是一個路徑,它允許更多地控製用戶在雲租戶中創建外部表的位置)。
創建函數
適用對象類型:模式
允許用戶在模式中創建函數。由於特權是繼承的,創建函數
也可以在編目上授予,這允許用戶在編目中任何現有或未來的模式中創建函數。
用戶還必須具有使用目錄
在其父目錄和使用模式
在其父模式上。
創建供應商
適用對象類型:Unity Catalog metastore
允許用戶在metastore中創建增量共享提供程序對象。提供者標識使用Delta Sharing共享數據的組織或用戶組。提供者的創建由收件人的Databricks帳戶中的用戶執行。看到使用Delta Sharing安全地共享數據.
創建收件人
適用對象類型:Unity Catalog metastore
允許用戶在metastore中創建增量共享接收對象。接收方標識可以使用增量共享與其共享數據的組織或用戶組。收件人創建由提供者的Databricks帳戶中的用戶執行。看到使用Delta Sharing安全地共享數據.
創建表
適用對象類型:模式
允許用戶在模式中創建表。由於特權是繼承的,創建表格
也可以在編目上授予,這允許用戶在編目中的任何現有或未來模式中創建表。
用戶還必須具有使用目錄
的父目錄和使用模式
它的父模式上的特權。
創建視圖
適用對象類型:模式
允許用戶在模式中創建視圖。由於特權是繼承的,創建視圖
也可以在編目上授予,這允許用戶在編目中的任何現有或未來模式中創建視圖。
用戶還必須具有使用目錄
在其父目錄和使用模式
在其父模式上。
執行
適用對象類型:函數
允許用戶調用用戶定義的函數(如果用戶也有)使用目錄
在其父目錄和使用模式
在其父模式上。
由於特權是繼承的,您可以授予用戶執行
目錄或模式上的權限,該權限將自動授予用戶執行
目錄或模式中所有當前和將來函數的特權。
修改
適用對象類型:表格
允許用戶向表中添加、更新和從表中刪除數據(如果用戶也有)選擇
在桌子上還有使用目錄
在其父目錄和使用模式
在其父模式上。
由於特權是繼承的,您可以授予用戶修改
目錄或模式上的權限,該權限將自動授予用戶修改
目錄或模式中所有當前和將來表上的特權。
讀文件
適用對象類型:外部位置
,存儲憑證
允許用戶直接從雲對象存儲中讀取文件。Databricks建議在外部位置授予此特權,而不是存儲憑據(因為它的作用域是路徑,因此可以更好地控製用戶從哪裏讀取數據)。
選擇
適用對象類型:表格
,視圖
,分享
如果應用於表或視圖,則允許用戶從表或視圖中進行選擇(如果用戶也有)使用目錄
在其父目錄和使用模式
在其父模式上。如果應用於共享,則允許收件人從共享中進行選擇。
由於特權是繼承的,您可以授予用戶選擇
目錄或模式上的特權,它自動授予用戶選擇
目錄或模式中所有當前和未來表以及視圖上的特權。
使用目錄
適用對象類型:目錄
此特權不授予對目錄本身的訪問權,但用戶與目錄內的任何對象進行交互都需要此特權。例如,要從表中選擇數據,用戶需要具有選擇
那張桌子上的特權使用目錄
以及父目錄上的特權使用模式
它的父模式上的特權。
這對於允許目錄所有者能夠限製單個模式和表所有者共享其產生的數據的程度非常有用。例如,表所有者授權選擇
不允許其他用戶對表進行讀訪問,除非他們也被授予了權限使用目錄
以及父目錄上的特權使用模式
它的父模式上的特權。