您的位置:首页 > 数据库

基于ambari 2.4.1 HDP-2.5.0 构建安全的hive数据库

2017-02-28 17:04 309 查看
基于ambari 2.4.1 HDP-2.5.0 构建安全的hive数据库

基本条件:
1. 利用ambari 启用kerberos
基本原理:
hadoop 代理机制:hadoop 可以使用"超级"用户,伪装为其他用户提交程序。且可以通过配置对被伪装的用户限定用户名,用户组和IP(或主机名)
详细参考http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/Superusers.html

hadoop 代理机制中限定权限的配置,其中的hive为hiveserver运行用户. 对组,用户,和hosts具有多个值的用','分开。'*'表示不限制
hadoop.proxyuser.hive.groups
hadoop.proxyuser.hive.users
hadoop.proxyuser.hive.hosts

具体方案:
1. 通过kdc统一管理hive用户,以文件或密码的文件提供给客户端进行认证
2. 通过hadoop.proxyuser.hive.groups/users/hosts 对用户进行hdfs级别的登陆限制
3.

验证步骤
本示例演示在系统中添加hdp用户,并通过beeline进行测试
1. 在kdc中分配principal用户,并导出keytab拷贝到客户端 (core-site.xml 中的hadoop.security.auth_to_local会把hdp/xj3@EXAMPLE 解析为hdp用户 )
addprinc -randkey hdp/xj3@EXAMPLE.COM

xst -norandkey -k /tmp/hdp.xj3.keytab hdp/xj3@EXAMPLE.COM

2. 获取ticket
kinit -kt /tmp/hdp.xj3.keytab hdp/xj3

3. 连接
beeline
!connect jdbc:hive2://xj2:10000/;principal=hive/xj2@EXAMPLE.COM;

显示错误信息
Error: Failed to open new session: java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException):
User: hive/xj2@EXAMPLE.COM is not allowed to impersonate hdp (state=,code=0)

4. 需要在namenode上创建hdp用户,并hadoop.proxyuser.hive.groups或hadoop.proxyuser.hive.users权限,具体配置如下
hadoop.proxyuser.hive.users hdp

在客户端用beeline 重新测试

备注:
使用参数
hadoop.security.auth_to_local
hive.server2.authentication.kerberos.keytab /etc/security/keytabs/hive.service.keytab

hive.server2.authentication.kerberos.principal hive/_HOST@EXAMPLE.COM
hive.server2.authentication.spnego.keytab /etc/security/keytabs/spnego.service.keytab

hive.server2.authentication.spnego.principal HTTP/_HOST@EXAMPLE.COM
hive.server2.authentication KERBEROS
hive.server2.enable.doAs true
hive.server2.thrift.port 10000
hive.server2.thrift.http.port 10001
hive.server2.transport.mode binary

注意事项:
如果通过group限制对hdfs的访问,需要在namenode上建立相应用户,以及对应的组
例如:hadoop.proxyuser.hive.groups 参数为hdfs,bdg

当有用户提交提交程序时,hdfs 会在namenode上查看主机中用户的组为bdg,如果不是就不予认证

https://github.com/apache/hive/blob/master/beeline/src/test/org/apache/hive/beeline/ProxyAuthTest.java
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kerberos
相关文章推荐