首页 > 社交 > 科普中国

hadoop、hbase、zookeeper集成kerberos认证

常驻编辑 科普中国 2022-09-23 凭据   所有者   节点   集群   命令   证书   权限   文件   内容   用户

注:在配置kerberos认证之前,必须先确保成功安装kerberos集群QCI拜客生活常识网

一、环境说明

环境说明

QCI拜客生活常识网

二、生成HDFS/Zookeeper/Hbase的keytab证书

1.生成Zookeeper的keytab证书

这里需要说明的是,我使用的是自己搭建的基于原生Apache大数据组件的集群,启动和使用集群的普通用户是hadoop,所以在生成keytab时需要添加hadoop用户的凭据,还需要添加HTTP及Zookeeper的凭据,添加HTTP凭据是因为集群网络通讯所需的,而Zookeeper的凭据是因为Zookeeper配置kerberos认证时的jaas.conf中的server端必须指定的,那么下面就来生成对应的凭据吧。保证在启动了kerberos的krb5kdc和kadmin服务后,在安装了kerberos服务器端的节点上,我这里安装kerberos服务器的节点是ha01,所以我在ha01节点上使用root用户生成相应的keytab证书,命令如下:QCI拜客生活常识网

#添加HTTP服务的凭据
kadmin.local -q "addprinc -randkey HTTP/$host@HADOOP.COM"
#添加zookeeper的凭据
kadmin.local -q "addprinc -randkey zookeeper/$host@HADOOP.COM"
#添加hadoop用户的凭据
kadmin.local -q "addprinc -randkey hadoop/$host@HADOOP.COM"
#生成包含前三个凭据的keytab证书,hadoop.keytab为最终生成的证书的名称
kadmin.local -q "xst -k hadoop.keytab hadoop/$host HTTP/$host zookeeper/$host"

执行上述命令后,生成的hadoop.keytab就在执行该命令的路径下,我们需要在集群每个节点提前准备一个存放keytab证书的目录,我是将每个节点生成的keytab证书放在每个主机提前创建好的 /etc / security/keytab 目录中,需要注意的是,集群中有几个节点就需要在kerberos服务器节点ha01上执行上面的四条命令几次,因为要生成集群中每个主机对应的keytab证书,当要生成某个节点的keytab证书时, QCI拜客生活常识网

需要将上面命令中的 $host 替换成对应节点的主机名 ,然后将每个节点生成的hadoop.keytab证书远程发送到对应节点的 /etc / security/keytab 目录,因为有了 keytab 相当于有了永久凭证,不需要提供密码(如果修改 kdc 中的 principal 的密码,则该 keytab 就会失效),所以其他用户如果对该文件有读权限,就可以冒充 keytab 中指定的用户身份访问集群中的服务,所以 keytab 文件需要确保只对 owner(我这里的owner是hadoop用户) 有读权限。QCI拜客生活常识网

#修改keytab存放目录的用户组
chown -R hadoop:hadoop /etc/security/keytab
#修改hadoop.keytab证书的权限为400
chmod 400 /etc/security/keytab/hadoop.keytab

三、Zookeeper配置kerberos认证

注:以下的内容可以在一个节点配置好发送到其他节点相应路径下,其他内容一致但需要修改3.2中的jaas.conf中的host_name为当前节点的主机名!QCI拜客生活常识网

3.1 修改$ZOOKEEPER_HOME/conf/目录下创建zoo.cfg配置文件,在原有配置文件的末尾添加如下内容:

kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true
 
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000

3.2 在$ZOOKEEPER_HOME/conf/目录下创建jaas.conf配置文件,其内容如下:

Server {
 
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/hadoop.keytab" #keytab证书的位置
  storeKey=true
  useTicketCache=false
  principal="zookeeper/host_name@HADOOP.COM"; #这里必须是zookeeper,否则zk的客户端后面启动报错
};
 
Client {
 
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/hadoop.keytab"
  storeKey=true
  useTicketCache=false
  principal="hadoop/host_name@HADOOP.COM";
};    

相关阅读:

  • 喁喁夜话
  • 做到这3点,让你通过做「证明题」,自信面对人生低谷
  • 2022年度城乡居民基本医疗保险费怎么缴费?
  • 清华大学张超:实现数据确权与保护,数据密态渐成行业共识
  • 怎样的多元化投资最合理?寻找适合自己的资产配置丨视频
  • 马斯克:SpaceX可能在8月进行“星际飞船”轨道飞行
  • 湘电股份:前三季度净利同比预增141%
  • 老白干酒:预计前三季度净利超5亿元,同比增加约113%
  • 南网科技:前三季度归母净利润同比预增169.78%
  • 钜泉科技:预计前三季度归母净利润同比增加123.14%
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。