使用Apache Sentry的Presto

 

概觀

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服務的請求數。工具

使用Apache Sentry配置Presto

Apache Sentry配置

與Hive,Impala,Spark和Hue同樣,您必須爲Presto建立一個名爲Admin的Admin Group presto。您能夠經過Cloudera Manager執行此操做,也能夠經過sentry.service.admin.groupsentry-site.xml文件中添加屬性來手動執行此操做 。Presto進程的用戶應屬於該組。此外,您必須普雷斯托用戶添加(從sentry.client-principal)以sentry.service.allow.connectsentry-site.xmloop

有關其餘信息,請參閱Cloudera文檔:性能

Apache Sentry的Presto配置

必須配置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.groupsentry-site.xml
  • 若是普雷斯托不可以鏈接到基於Kerberos的哨兵,你會獲得一個異常 確保您添加的普雷斯托用戶(從)以在。另外,確保字母外殼匹配。Peer indicated failure: Problem with callback handlersentry.client-principalsentry.service.allow.connectsentry-site
  • 確保您的sentry.server價值是正確的。它不是IP或主機名。它是Sentry中的服務器對象名稱。

限制

Presto僅強制執行A​​pache Sentry策略。Presto不支持在Sentry中修改受權策略。這包括CREATE ROLE,GRANT或REVOKE等命令。若是您須要修改角色和權限,則必須經過其餘工具(如Apache Hive或Hue)完成。Sentry Policy Files也不受支持。

相關文章
相關標籤/搜索