蜂巢metastore特權和可獲得的對象(遺留)

本文描述了遺留數據磚蜂巢metastore特權模式,是建立在每個磚工作區。它也描述了如何格蘭特,否認和撤銷權限對象的內置蜂巢metastore。統一目錄使用不同的模型授予特權。看到統一目錄權限和可獲得的對象

請注意

表的數據訪問控製管理的蜂巢metastore遺留數據治理模型。磚建議你表由蜂巢metastore升級到統一目錄metastore。統一目錄簡化了數據的安全性和治理提供一個中心位置管理和審計數據訪問跨多個工作空間在您的帳戶。了解更多關於如何遺留權限模型不同於統一目錄權限模型,明白了統一目錄和遺留蜂巢metastore一起工作

需求

請注意

  • 數據訪問控製總是使在磚SQL即使表訪問控製未啟用的工作空間。

  • 如果表的訪問控製是指定工作區和您已經啟用了acl(允許和拒絕特權)在工作區中,這些acl尊重在磚SQL。

蜂巢metastore管理對象上的特權

數據對象上的特權管理的蜂巢metastore可以授予一個工作區管理或者一個對象的所有者。你可以管理權限蜂巢metastore對象通過使用SQL命令。

在SQL管理特權,你使用格蘭特,撤銷,否認,MSCK,秀獎助金語句在筆記本或磚SQL查詢編輯器,使用的語法:

格蘭特privilege_typesecurable_object主要

地點:

關於管理權限對象的更多信息在蜂房裏metastore,明白了在蜂巢metastore特權和可獲得的對象

對象所有權

當啟用訪問控製表在集群或SQL倉庫,用戶創建一個模式,表、視圖或函數成為它的主人。所有者授予所有特權和權限授予其他用戶。

組可能的對象,在這種情況下,所有成員的組織被認為是主人。

一個對象的所有者或工作區管理可以使用的對象的所有權轉移改變<對象>老板' <用戶名> @ <用戶域>。com”命令。

可獲得的蜂巢metastore中的對象

可獲得的對象是:

  • 目錄:控製訪問整個數據目錄。

    • 模式:控製訪問模式。

      • :控製訪問管理或外部表。

      • 視圖:控製訪問SQL視圖。

      • 函數:控製訪問命名函數。

  • 匿名函數:控製訪問匿名的或臨時的功能

    請注意

    匿名函數對象不支持在磚SQL。

  • 任何文件:控製訪問底層文件係統。

    警告

    用戶授權訪問任何文件可以繞過這些限製的目錄、模式、表和視圖通過閱讀直接從文件係統。

權限可以授予蜂巢metastore對象

  • 選擇:給對象的讀訪問權。

  • 創建:給有能力創建一個對象(例如,一個表在模式)。

  • 修改:給能夠添加、刪除和修改數據或從一個對象。

  • 使用:不給任何的能力,但是是一個額外的需求模式對象上執行任何操作。

  • READ_METADATA:給視圖對象及其元數據的能力。

  • CREATE_NAMED_FUNCTION:提供能力在現有的目錄中創建一個名為UDF或模式。

  • MODIFY_CLASSPATH:給文件添加到火花類路徑的能力。

  • 所有特權:給所有特權(翻譯成所有上麵的特權)。

請注意

MODIFY_CLASSPATH特權在磚不支持SQL。

使用特權

執行一個動作在蜂巢metastore模式對象,用戶必須有使用特權模式上除了特權執行該動作。任何一個下麵的滿足使用要求:

  • 是一個工作空間管理

  • 使用特權模式或一組的使用的特權模式

  • 使用上的特權目錄或在一群的使用特權

  • 模式的所有者或擁有一組模式

即使是一個對象的所有者必須在一個模式使用特權來使用它。

特權等級

當啟用訪問控製表工作區和所有集群,磚的SQL對象繼承層次和特權。這意味著允許或拒絕的特權目錄自動授予或拒絕目錄中的所有模式的特權。同樣,特權授予一個schema對象繼承了所有對象的模式。這種模式適用於所有可獲得的對象。

如果你拒絕一個用戶權限表,用戶看不到試圖列出所有表的表模式。如果你拒絕一個用戶權限模式,模式存在的用戶看不到試圖列出目錄中的所有模式。

動態視圖功能

磚包括兩個用戶功能,允許你表達列和行級權限體內動態的視圖定義由蜂巢metastore管理。

  • current_user ():返回當前用戶的名稱。

  • is_member ():判斷當前用戶屬於一個特定的磚集團在工作空間的水平。

  • is_account_group_member ():判斷當前用戶屬於一個特定的磚集團在帳戶級別。

請注意

在磚使用這些函數運行時7.3 LTS,你必須設置火花配置spark.databricks.userInfoFunctions.enabled真正的。他們在所有支持的磚默認啟用運行時版本高於7.3。

下麵的例子結合函數來確定用戶擁有適當的組成員:

——返回:如果用戶是一個成員,如果他們不是假的選擇current_user作為用戶,——檢查當前用戶是否屬於“經理”。is_account_group_member(“經理”)作為管理

列級權限

您可以使用動態視圖來限製列一個特定的組或用戶可以看到。考慮下麵的例子隻屬於用戶審計人員集團能夠看到的電子郵件地址sales_raw表。在分析時引發取代了情況下語句和文字“修訂”或列電子郵件。這種行為讓所有常見的性能優化提供的火花。

——別名字段“電子郵件”本身(如電子郵件)預防——允許邏輯從直接出現在列名的結果。創建視圖sales_redacted作為選擇user_id,情況下is_account_group_member(“審計師”)然後電子郵件其他的“修訂”結束作為電子郵件,國家,產品,sales_raw

行級權限

使用動態視圖可以指定權限的行或領域的水平。考慮下麵的例子,隻有屬於用戶經理組能夠看到事務量(列)大於1000000美元:

創建視圖sales_redacted作為選擇user_id,國家,產品,sales_raw在哪裏情況下is_account_group_member(“經理”)然後真正的其他的< =1000000結束;

數據屏蔽

如前麵的示例所示,您可以實現列級屏蔽,以防止用戶看到特定的列數據,除非他們在正確的組。因為這些觀點是標準的火花SQL,你能做的更高級類型的掩蔽與更複雜的SQL表達式。下麵的例子可以讓所有用戶對郵件執行分析領域,但允許的成員審計人員組看到用戶的完整的電子郵件地址。

——regexp_extract函數接受一個電子郵件地址等——user.x.lastname@example.com和提取“例子”,允許——分析師查詢域名創建視圖sales_redacted作為選擇user_id,地區,情況下is_account_group_member(“審計師”)然後電子郵件其他的regexp_extract(電子郵件,“^ * @ (. *)$。”,1)結束sales_raw