为相关服务启用Sentry

趁我未失忆之前,记录过去曾经的自己

本文讯息来自与Configuring the Sentry Service


前言

在安裝Sentry Service之前先要设置hive目录权限。注意:在启用HDFS / Sentry同步後,无需在Hive仓库目录上显式设置权限。启用同步后,所有 Hive 数据库和表在HDFS底层文件系统上都归属 hive : hive 。Sentry 会把表的权限自动转换为 HDFS 底层文件的 ACL。

  1. 使用默认的Hive仓库目录
#設置權限 默认路径为/user/hive/warehouse ,如果不知道去hive-site.xml查
sudo -u hdfs hdfs dfs -chmod -R 771 /user/hive/warehouse
#所有文件和子目录的用户属组应该为 hive:hive
sudo -u hdfs hdfs dfs -chown -R hive:hive /user/hive/warehouse

  1. 安装Kerberos 在你的集群时,必须先kinit在设置权限
#kinit hdfs
sudo -u hdfs kinit -kt hdfs.keytab hdfs
#設置權限 默认路径为/user/hive/warehouse ,如果不知道去hive-site.xml查
sudo -u hdfs hdfs dfs -chmod -R 771 /user/hive/warehouse
#所有文件和子目录的用户属组应该为 hive:hive
sudo -u hdfs hdfs dfs -chown -R hive:hive /user/hive/warehouse
  1. 使用非默认的Hive仓库目录
#kinit hdfs
sudo -u hdfs kinit -kt hdfs.keytab hdfs
#設置權限 默认路径为/user/hive/warehouse ,如果不知道去hive-site.xml查
sudo -u hdfs hdfs dfs -chmod -R 771 /user/hive/warehouse
#所有文件和子目录的用户属组应该为 hive:hive
sudo -u hdfs hdfs dfs -chown -R hive:hive /user/hive/warehouse

注意:
更改Hive仓库默认路径不会移动现有表的数据。在修改默认路径之前的任何数据都会保留在默认位置/user/hive/warehouse,创建新表则会保存在新路径下。

  1. 为了使Sentry / HDFS同步正常工作,将新的仓库URL添加到Sentry同步路径前缀列表中。
    注意:
    在hive-site.xml中将hive.warehouse.subdir.inherit.perms设置为true,以便在 warehouse 目录上设置的权限可以集成到子目录。
    如果用户有权访问warehouse中的任何对象,该用户将能够执行使用默认设置。这样可以确保启用Sentry后,由旧版应用程序发出的使用默认命令可以正常工作。
    在Hive warehouse目录上修改权限(如上所述)将覆盖CDH 5安装指南的Hive部分中的建议。

  2. 禁用HiveServer2的模拟。HiveServer2模拟允许用户作为连接用户而不是超级用户执行查询和访问HDFS文件。访问策略使用基于HDFS ACL 应用于 HDFS 文件。启用 HiveServer2 模拟会绕过 Sentry 的端到端授权过程。具体来说,如果启用了Hive模拟,虽然Sentry对Hive仓库中的表和视图的权限,但是却没办法控制底层HDFS文件的访问,这意味着,对Hive仓库中的表没有Sentry权限的用户仍然可以绕过Sentry授权检查并对仓库中的表执行作业和查询,只要他们对支持该表的HDFS文件具有权限即可。使用以下方式禁用Hive的用户模拟:
    1.进入Hive 管理页面
    2.点击Configuration 标签
    3.选取Scope > HiveServer2
    4.选取Category > Main.或是在搜寻框打上 HiveServer2 Enable Impersonation.
    5.将HiveServer2 Enable Impersonation勾勾取消.
    6.保存更改并重启相关服务。
    在这里插入图片描述

  3. 如果使用的是YARN,请启用Hive用户提交YARN作业。
    1.进入YARN管理页面
    2.点击Configuration 标签.
    3.点选Scope > NodeManager.
    4.在搜索框上打上allowed.system.users
    5.确保 Allowed System Users 属性包含 hive. 如果没, 增加 hive.
    6.保存更改并重启相关服务。
    注意:
    如果你有多组NodeManager,需要保证每组NodeManager的该配置都包含了hive用户。
    在这里插入图片描述

  4. 阻止外部应用程序访问Hive Metastore。
    1.进入Hive 管理页面
    2.点击Configuration 标签
    3.搜寻框上打上hadoop.proxyuser.hive.groups找到Hive Metastore Access Control and Proxy User Groups Override.然后单击加号
    4.添加hive,hue和sentry用户
    5.保存更改并重启相关服务。
    注意:设置此参数会阻止对非服务用户访问Hive Metastore。这可以禁止Hive CLI,Spark和Sqoop应用程序与Hive服务的交互。该配置不影响这些应用程序的运行,但是它们无法再访问Hive Metastore,并且所有Hive查询都将失败。运行Hive CLI,Spark和Sqoop的用户必须是hive,hue或sentry用户,或者属于这3个group,你也可以将其他用户组增加到上面配置的代理用户列表中。
    在这里插入图片描述


以下就是在各个服务下启用Sentry

一、为Hive服务启用Sentry

1.进入Hive 管理页面
2.点击Configuration 标签
3.搜索框打上sentry
4.在Sentry Service属性中选择Sentry

在这里插入图片描述
5.搜索框打上Enable Stored Notifications in Database将Hive Metastore Server Default Group 选项打勾。
在这里插入图片描述

6.保存更改并重启相关服务。
注意:启用Sentry on Hive 服务将几个HiveServer2属性放在受限列表属性上,客户端无法在运行时对其进行修改。 请参阅HiveServer2受限属性。 HiveServer2 Restricted Properties

二、为Impala服务启用Sentry

1.进入Impala 管理页面
2.点击Configuration 标签
3.搜索框打上sentry
4.在Sentry Service属性中选择Sentry
5.保存更改并重启相关服务。
在这里插入图片描述

三、配置HDFS开启ACLs与Sentry权限同步

1.进入HDFS管理页面
2.点击Configuration 标签
3.搜索框打上acl
4.将Enable Access Control Lists和Enable Sentry Synchronization选项打勾。将启用访问控制列表和Sentry同步 服务。
5.保存更改并重启相关服务。
在这里插入图片描述

四、为Hue服务启用Sentry

Hue中集成了一个安全模块用来界面化操作Sentry。设置Hue以管理Sentry权限时,请确保正确设置了用户和组。连接到Sentry的每个Hue用户必须与服务器操作系统(OS)中的用户相同,以便Sentry可以对Hue用户进行身份验证。Hue中的用户group也同样要与本地操作系统(OS)中的用户group相同。
有关使用“安全模块”的更多信息,请参阅Hue安全性
1.进入Hue管理页面
2.点击Configuration 标签
3.搜索框打上Sentry Service,在Sentry Service选项勾选Sentry
4.保存更改并重启相关服务。
在这里插入图片描述

五、将Hive,Spark和Hue组添加到Sentry的管理组

1.进入Sentry 管理页面
2.点击Configuration 标签
3.搜索框打上Admin Groups,在Sentry Service增加 hive, spark, 和hue 添加到列表中。如果end user属于这些管理组之一,则该用户在Sentry Server上具有管理特权。
4.保存更改并重启相关服务。

在这里插入图片描述

六、HiveServer2受限制的属性

Hive启用Sentry后会导致HiveServer2的部分属性无法在客户端运行时进行修改。此列表由hive.conf.restricted.list表示,并且这些属性只能在服务器端进行配置。 具体受限制的属性参数如下,当然你依旧可以在HiveServer2服务端进行参数修改。该列表包括:

hive.enable.spark.execution.engine
hive.semantic.analyzer.hook
hive.exec.pre.hooks
hive.exec.scratchdir
hive.exec.local.scratchdir
hive.metastore.uris,
javax.jdo.option.ConnectionURL
hadoop.bin.path
hive.session.id
hive.aux.jars.path
hive.stats.dbconnectionstring
hive.scratch.dir.permission
hive.security.command.whitelist
hive.security.authorization.task.factory
hive.entity.capture.transform
hive.access.conf.url
hive.sentry.conf.url
hive.access.subject.name
hive.sentry.subject.name
hive.sentry.active.role.set

七、保护Hive Metastore

保护Hive Metastore是非常重要的。如果你的集群没有启用Kerberos,请将sentry.hive.testing.mode属性设置为true,以允许Sentry使用较弱的身份验证机制。将以下属性添加到HiveServer2和Hive Metastore的sentry-site.xml中:

<property>
  <name>sentry.hive.testing.mode</name>
  <value>true</value>
</property>

在这里插入图片描述

八、在HiveServer2中使用UDF(User-Defined Functions)

当Beeline在其他主机上运行时,ADD JAR命令不适用于HiveServer2和Beeline客户端。Hive’s auxiliary paths 就是替代ADD JAR命令功能。也是说,在加载jar包时只能通过在Hive服务中配置hive.reloadable.aux.jars.path路径。当Sentry 被启用,创建永久函数和临时函数的过程存在一些差异。有关详细说明,请参阅:Registering a UDF in Hive

Creating Temporary Functions

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值