使用Apache Sentry的Presto

三世轮回 提交于 2019-11-28 15:28:51

 

概观

Apache Sentry是一个基于角色的粒度授权模块,适用于Hadoop。Sentry提供了对经过身份验证的用户和应用程序(如Presto)的数据控制和强制执行精确级别权限的功能。

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通信以确定请求是否有效。如果请求有效,则查询继续执行。如果请求无效,则会向用户返回错误。

缓存还用于提高性能并减少对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.xml

有关其他信息,请参阅Cloudera文档:

Apache Sentry的Presto配置

必须配置Starburst Presto Enterprise才能使Presto与Apache Sentry服务进行通信。要启用,请在Hive连接器配置中设置以下属性。

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也不受支持。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!