hadoop集群中添加kerberos认证
来源:互联网 发布:linux oracle怎么启动 编辑:程序博客网 时间:2024/06/04 22:47
hadoop集群中添加kerberos认证
可以参照cloudera的官网方法:http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-Security-Guide/CDH4-Security-Guide.html
但本人的配置与其有所不同,更简单一点
本人使用的是hadoop_cloudera_mr1_CDH4.2.1版本
一. 在kdc上添加user principal和host principal
创建user principal
kadmin: addprinc -randkey cxz/rock-hdpnn.dscc@KERBEROS.ROCK
kadmin: addprinc -randkey cxz/rock-hdp1.dscc@KERBEROS.ROCK
kadmin: addprinc -randkey cxz/rock-hdp2.dscc@KERBEROS.ROCK
创建host principal
kadmin: addprinc -randkey host/rock-hdpnn.dscc@KERBEROS.ROCK
kadmin: addprinc -randkey host/rock-hdp1.dscc@KERBEROS.ROCK
kadmin: addprinc -randkey host/rock-hdp2.dscc@KERBEROS.ROCK
个人理解:user/host_name@realm是用于服务的认证,而user@realm是用于用户的认证
创建完成后,可以用命令listprincs查看。
二、创建keytab文件
kadmin: xst -norandkey -k cxz.keytab cxz/rock-hdpnn.dscc cxz/rock-hdpnn.dscc
kadmin: xst -norandkey -k cxz.keytab cxz/rock-hdp1.dscc cxz/rock-hdp1.dscc
kadmin: xst -norandkey -k cxz.keytab cxz/rock-hdp2.dscc cxz/rock-hdp2.dscc
我是用的是ubuntu系统,貌似不支持此命令,必须通过下面的手段生成。
#cd ../var/krb5kdc
#kadmin
kadmin: xst -k cxz-unmerged.keytab cxz/rock-hdpnn.dscc@KERBEROS.ROCK
kadmin: xst -k cxz-unmerged.keytab cxz/rock-hdp1.dscc@KERBEROS.ROCK
kadmin: xst -k cxz-unmerged.keytab cxz/rock-hdp2.dscc@KERBEROS.ROCK
kadmin: xst -k host.keytab host/rock-hdpnn.dscc@KERBEROS.ROCK
kadmin: xst -k host.keytab host/rock-hdp1.dscc@KERBEROS.ROCK
kadmin: xst -k host.keytab host/rock-hdp2.dscc@KERBEROS.ROCK
可以看到在当前目录下新生成了两个keytab文件
注:CDH4的官方文档里头,不是使用host,而是HTTP,建议采用HTTP方式,这样可以使用HFTP方式访问
合并两个keytab文件
#cd ../var/krb5kdc
#ktutil
ktutil: rkt cxz-unmerged.keytab
ktutil: rkt host.keytab
ktutil: wkt cxz.keytab
ktutil: clear
可以看到在当前文件下新生成了cxz.keytab文件
可以使用如下命令查看keytab文件的内容
#klist -e -k -t cxz.keytab
利用keytab文件获取票据可以使用如下命令
# kinit -k -t cxz.keytab cxz/fully.qualified.domain.name@YOUR-REALM.COM
三、停止hadoop集群,校正文件夹权限
FileSystem Directory permissions
Local dfs.namenode.name.dir drwx------
Local dfs.datanode.data.dir drwx------
Local mapred.local.dir drwxr-xr-x
HDFS mapreduce.jobtracker.system.dir drwx------
HDFS /(root dir) drwxr-xr-x
四、如果是使用AES-256加密方式,还得安装JCE(Java Cryptography Extension)
本人未使用此加密方式,所以具体不细说了!
可以使用klist -e查看具体的加密方式。
五、进行添加kerberos5认证的配置
1. 配置core-site.xml
<property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> <property> <name>hadoop.security.authorization</name> <value>true</value> </property>
2. 配置hdfs-site.xml
<!-- General HDFS security config --> <property> <name>dfs.block.access.token.enable</name> <value>true</value> </property> <!-- NameNode security config --> <property> <name>dfs.namenode.keytab.file</name> <value>/home/cxz/hadoop/conf/cxz.keytab</value> </property> <property> <name>dfs.namenode.kerberos.principal</name> <value>cxz/_HOST@KERBEROS.ROCK</value> </property> <property> <name>dfs.namenode.kerberos.internal.spnego.principal</name> <value>HTTP/_HOST@KERBEROS.ROCK</value> </property> <!-- DataNode security config --> <property> <name>dfs.datanode.data.dir.perm</name> <value>700</value> </property> <property> <name>dfs.datanode.address</name> <value>0.0.0.0:51004</value> </property> <property> <name>dfs.datanode.http.address</name> <value>0.0.0.0:51006</value> </property> <property> <name>dfs.datanode.keytab.file</name> <value>/home/cxz/hadoop/conf/cxz.keytab</value> </property> <property> <name>dfs.datanode.kerberos.principal</name> <value>cxz/_HOST@KERBEROS.ROCK</value> </property> <property> <name>ignore.secure.ports.for.testing</name> <value>true</value> </property>
注:上头的51004和51006两端口,在官方中是指定要配置小于1024,这个是为了安全起见,但是配置小于1024就得用root用户启动,不然需要配置好jsvc进行启动。
这样比较麻烦,本人将其设置的很大,这样就需要最后一个配置,指明是在进行test,否则会无法启动。
3. 配置mapred-site.xml
<property> <name>mapreduce.jobtracker.staging.root.dir</name> <value>/user</value> </property> <property> <name>mapred.child.java.opts</name> <value>-server -Dcom.sun.management.jmxremote -Djava.security.krb5.conf=/home/cxz/kerberos5-client/etc/krb5.conf</value> </property> <!-- JobTracker security configs --> <property> <name>mapreduce.jobtracker.kerberos.principal</name> <value>cxz/_HOST@KERBEROS.ROCK</value> </property> <property> <name>mapreduce.jobtracker.keytab.file</name> <value>/home/cxz/hadoop/conf/cxz.keytab</value> </property> <!-- TaskTracker security configs --> <property> <name>mapreduce.tasktracker.kerberos.principal</name> <value>cxz/_HOST@KERBEROS.ROCK</value> </property> <property> <name>mapreduce.tasktracker.keytab.file</name> <value>/home/cxz/hadoop/conf/cxz.keytab</value> </property> <!-- TaskController setting --> <!-- property> <name>mapred.task.tracker.task-controller</name> <value>org.apache.hadoop.mapred.LinuxTaskController</value> </property> <property> <name>mapreduce.tasktracker.group</name> <value>cxz</value> </property -->
注:mapred.child.java.opts此配置是为了job执行时能够找到kerberos的配置文件,不然会job执行失败。
还有最后的task-controller可以不用配置。
4. 配置hadoop-env.sh
加入如下配置
export KRB5_HOME=/home/cxz/kerberos5-client
export KRB5_CONFIG=${KRB5_HOME}/etc/krb5.conf
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Djava.security.krb5.conf=${KRB5_CONFIG} -Dsun.security.krb5.debug=true"
六、部署keytab文件和kerberos5-client(每个节点都需要)
1. 将前面所说的生成的cxz.keytab文件copy到每个节点的hadoop_home/conf文件下,配置文件中有体现
2. 将kerberos5中的bin, etc, lib抽取出来就是kerberos5-client了,将其部署到每个节点。
可以在bin目录下写个自己的认证脚本
服务的认证脚本:kinit_cxz.sh
#! /bin/bashUSER=`whoami`HOST=`hostname`### init_kerberos_auth KRB5_HOME=/home/$USER/kerberos5-clientexport KRB5_CONFIG=${KRB5_HOME}/etc/krb5.confexport LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${KRB5_HOME}/lib${KRB5_HOME}/bin/kinit -k -t ~/hadoop/conf/cxz.keytab cxz/rock-hdpnn.dscc@KERBEROS.ROCK${KRB5_HOME}/bin/klist
如果是hadoop-client端的普通用户认证
echo "$PASSWD" | ${KRB5_HOME}/bin/kinit -p $PRINCIPAL
注:若添加了kerberos后,想使用hftp方式访问,在创建keytab时需要使用HTTP,并且在hdfs-site.xml中必须配置dfs.https.port与dfs.http.port相同,这个是hadoop的一个bug,貌似还未解决。
- hadoop集群中添加kerberos认证
- hadoop 添加kerberos认证
- hadoop 添加kerberos认证
- Hadoop集群的kerberos认证
- Hadoop(HDP)集群kerberos认证实现方案
- hadoop的kerberos认证
- Hadoop集群集成kerberos
- Hadoop集群集成kerberos
- Hadoop 安全机制认证---Kerberos
- Hadoop 安全机制认证---Kerberos
- Hadoop 2.7.3-Kerberos认证
- Spark应用如何访问带Kerberos认证的CDH Hadoop集群
- Linux7 下Hadoop集群用户管理方案之三 用户认证组件Kerberos安装
- Hadoop集群中添加硬盘
- CDH集群开启Kerberos安全认证
- Hadoop平台安全机制Kerberos认证
- CDH添加Kerberos认证(5.3.X以上)
- solr添加kerberos认证及授权
- c#Process.Start无法启动exe程序的问题
- 持续集成方案,Hudson还是Jenkins?
- 设计模式读书笔记-----访问者模式
- Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
- 输入倒三角的星号图的几种方法
- hadoop集群中添加kerberos认证
- java 类中函数加与不加static
- uploadify 丢失session解决方法
- IE8中访问FTP无法直接显示文件夹视图解决办法
- android wifi 移植记录
- Linux 安装 JDK7 和 Tomcat 7
- IPHONE水浒卡牌《梦回水浒》逆袭攻略
- 钢化玻璃与普通膜的区别
- 编程语言题目随笔