基于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
基本条件:
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
相关文章推荐
- CentOS7使用本地库(Local Repository)安装Ambari-2.4.1和HDP-2.5.0
- Ambari + HDP 升级 (Ambari 2.2.2 - 2.4.1 + HDP 2.4.2 - 2.5.0)
- 使用本地库(Local Repository)安装Ambari-2.4.1和HDP-2.5.0
- spring security基于数据库的安全认证 配置
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层
- 中国人民公安大学CSDN巡回演讲公开课——基于传统数据库的大型系统的构建
- 2013春季巡讲讲稿—基于传统数据库的大型系统构建—赵振平—中国人民公安大学CSDN高校俱乐部
- 基于盛大的云数据库系统 MongoIC 构建图片系统
- hdfs,hive,yarn,hbase基于系统用户的安全管理
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层
- 使用ASP.NET WEB API构建基于REST风格的服务实战系列教程(一)——使用EF6构建数据库及模型
- 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例
- WebSphere DataPower 专题: 基于 WebSphere DataPower SOA Appliances 构建 Web 服务安全网关
- MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍 推荐
- MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍(二)
- vsftpd+mysql+pam实现基于数据库的安全的ftp服务
- 构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]
- 构建基于 J2ME 的安全 SOAP 客户机
- asp.net不要Windows认证,自定义基于数据库的安全认证
- 基于开源数据库源码的安全应用定制