Apache Sentry是一個基於角色的粒度受權模塊,適用於Hadoop。Sentry提供了對通過身份驗證的用戶和應用程序(如Presto)的數據控制和強制執行精確級別權限的功能。html
Presto Enterprise與Apache Sentry集成,強制在Hive對象上授予相同和現有的權限。Presto將強制分配給Hive數據庫,表,列和視圖的權限。若是用戶沒有查詢對象的權限,則查詢將失敗並返回錯誤。數據庫
Presto Enterprise僅可從Staburst得到。有關Presto Enterprise和Apache Sentry集成的更多信息或得到免費試用版,請聯繫hello @ starburstdata 。com。緩存
在使用Apache Sentry配置Presto以前,請驗證如下先決條件:服務器
- 安裝了Apache Sentry和Hive的Cloudera Enterprise 5.12+。
- Presto Coordinator和Presto Workers具備相應的網絡訪問權限,可與Apache Sentry Service進行通訊。一般這是端口8038。
- 若是LDAP用於組映射,則Presto Coordinator和Presto Workers具備相應的網絡訪問權限以與LDAP服務器通訊。一般這是端口636或389。
若是您是Apache Sentry的新手,Cloudera提供了安裝和配置Apache Sentry的優秀文檔:網絡
當查詢提交給Presto時,Presto會解析並分析查詢,以瞭解用戶訪問特定對象所需的權限。Presto與Apache Sentry Service通訊以肯定請求是否有效。若是請求有效,則查詢繼續執行。若是請求無效,則會向用戶返回錯誤。app
緩存還用於提升性能並減小對Sentry服務的請求數。工具
與Hive,Impala,Spark和Hue同樣,您必須爲Presto建立一個名爲Admin的Admin Group presto
。您能夠經過Cloudera Manager執行此操做,也能夠經過sentry.service.admin.group
在sentry-site.xml
文件中添加屬性來手動執行此操做 。Presto進程的用戶應屬於該組。此外,您必須普雷斯托用戶添加(從sentry.client-principal
)以sentry.service.allow.connect
在sentry-site.xml
。oop
有關其餘信息,請參閱Cloudera文檔:性能
必須配置Starburst Presto Enterprise才能使Presto與Apache Sentry服務進行通訊。要啓用,請在Hive鏈接器配置中設置如下屬性。spa
hive.security =哨兵
爲Presto啓用Apache Sentry後,還須要其餘必需和可選屬性才能進一步配置。您還能夠在Apache Sentry Based Authorization中查看配置屬性的完整列表。
Sentry管理角色權限和角色到用戶組關聯。Sentry無論理用戶到用戶組關聯。所以,須要將使用Sentry的任何應用程序配置爲可以肯定用戶的組。在Presto中,該sentry.group-mapping
屬性指定如何肯定用戶組。默認狀況下,它設置爲HADOOP_DEFAULT
。有關其餘可能的值,請參閱基於Apache Sentry的受權。
有關Cloudera文檔的更多信息,請參閱:
注意
可能須要重用現有sentry-site.xml
配置,而不是在Hive鏈接器配置中設置新配置。要讓Presto使用XML配置文件,請設置sentry.config.resources
爲配置文件的文件位置sentry-site.xml
。
使用HADOOP_DEFAULT
組映射並sentry.config.resources
設置,而且提供的文件包含值時hadoop.security.group.mapping
,將使用配置的用戶組映射。若是未設置,sentry.config.resources
Presto將使用Hadoop的默認行爲,即從本地操做系統檢索用戶組。一樣,在使用LDAP
組映射並使用sentry.config.resources
屬性提供Hadoop配置文件時 ,您能夠避免在Hive鏈接器配置中設置LDAP組映射屬性。
能夠經過查詢如下表來訪問Sentry受權信息:
information_schema.roles
- 返回有關全部現有角色的信息(至關於)SHOW ROLES
information_schema.applicable_roles
- 返回授予當前用戶的角色information_schema.enabled_roles
- 返回當前用戶當前正在使用的角色列表(至關於)SHOW CURRENT USER
information_schema.table_privileges
- 根據當前啓用的角色返回授予用戶的全部表權限對遠程過程調用Apache Sentry以及同步LDAP組有一些延遲。Presto包含一個緩存機制,以便後續調用能夠在進行遠程調用以前查看緩存。有關緩存屬性及其默認值,請參閱基於Apache Sentry的受權。根據您的使用狀況,您可能但願增長或減小默認ttl值。
- 若是你獲得例外, 那麼你須要確保使用正確。
GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)
sentry.service-principal
- 若是你獲得一個
SentryAccessDeniedException
則例外確保您的設置用戶sentry.admin-user
屬於上市任何團體sentry.service.admin.group
在sentry-site.xml
。- 若是普雷斯托不可以鏈接到基於Kerberos的哨兵,你會獲得一個異常 確保您添加的普雷斯托用戶(從)以在。另外,確保字母外殼匹配。
Peer indicated failure: Problem with callback handler
sentry.client-principal
sentry.service.allow.connect
sentry-site
- 確保您的
sentry.server
價值是正確的。它不是IP或主機名。它是Sentry中的服務器對象名稱。
Presto僅強制執行Apache Sentry策略。Presto不支持在Sentry中修改受權策略。這包括CREATE ROLE,GRANT或REVOKE等命令。若是您須要修改角色和權限,則必須經過其餘工具(如Apache Hive或Hue)完成。Sentry Policy Files也不受支持。