欢迎来到魔据教育大数据学院,专注大数据工程师培养!
当前位置:赛车彩票 > 学习资料 > 讲师博文 > hadoop2.6安全认证Kerberos配置

赛车彩票: hadoop2.6安全认证Kerberos配置

时间:2017-08-17 17:40:06作者:[!--zuozhe--]

赛车彩票 www.d6sa.cn  

配置环境
系统:Centos6.5
软件版本:Hadoop2.6(HA)
Kerberos对应操作系统版本(取自iso镜像)
 
Hadoop环境:环境使用三台机器zyx7,zyx8,zyx9,用户使用zhengyx。
 
目的
由于hadoop默认安全配置,用户可以私自接入节点,可用其他用户执行环境这对安全利,所以需要安全配置。
Hadoop提供了两种安全配置simplekerberos。
simple简单认证控制用户名和所属,很容易被冒充。
Kerberos借助kerberos服务生成秘钥文件所机器公,有秘钥文件才是可信节点。本文主要介绍kerberos的配置。Kerberos存在问题,配置复杂,切更改麻烦,需从新生成秘钥切分发所有机器。
、安装
Kerberos分主服务(主)和认证机器(从)
服务安装
安装rpm包(版本对应操作系统iso镜像包)
krb5-auth-dialog
krb5-server
keyutils-libs-devel
libcom_err-devel
libsepol-devel
libselinux-devel
krb5-devel
krb5-libs(镜像已含,不用再安装)
krb5-workstation(镜像已含,不用再安装)
安装
安装rpm包(版本对应操作系统iso镜像包
keyutils-libs-devel
libcom_err-devel
libsepol-devel
libselinux-devel
krb5-devel
krb5-libs(镜像已含,不用再安装)
krb5-workstation(镜像已含,不用再安装)
 
启动命令
chkconfig --level 35 krb5kdc on
chkconfig --level 35 kadmin on
service krb5kdc start
service kadmin start
 
、配置
Kerberos配置
/etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 
[libdefaults]
 default_realm = ZHENGYX.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 clockskew = 120
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 renewable = true
 udp_preference_limit = 1
 default_tgs_enctypes = arcfour-hmac
 default_tkt_enctypes = arcfour-hmac
 
[realms]
 ZHENGYX.COM = {
  kdc = zyx7:88
  admin_server = zyx7:749
 }
 
[domain_realm]
  .zhengyx.com = ZHENGYX.COM
  www.zhengyx.com = ZHENGYX.COM
 
[kdc]
profile=/var/kerberos/krb5kdc/kdc.conf
 
安全域ZHENGYX.COM名称任意,配置一致即可
Kdc为主服务机器
 
注:Kerberos凭证(ticket)有两个属性,ticket_lifetime和renew_lifetime。其中ticket_lifetime表明凭证生效的时限,一般为24小时。在凭证失效前部分凭证可以延期失效时间(即Renewable),renew_lifetime表明凭证最长可以被延期的时限,一般为一个礼拜。当凭证过期之后,对安全认证的服务的后续访问则会失败。段服务可以用默认设置,如果是长期认证服务凭证时间需要调长。
kdc.conf
Kerberos默认安装目录/var/kerberos/krb5kdc
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88
 
[realms]
 ZHENGYX.COM = {
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes =  des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal des-cbc-crc:v4 des-cbc-crc:afs3
  max_life = 24h
  max_renewable_life = 10d
  default_principal_flags = +renewable, +forwardable
 }
 
kadm5.acl
Kerberos默认安装目录/var/kerberos/krb5kdc
 
*/[email protected]     * 
 
生成kerberos用户
由于本人使用zhengyx用户安装hadoop(包含hdfs和yarn),使用此账户启动环境所以建立zhengyx的kerberos用户。另需建立HTTP的用户,用于环境内部使用默认名称。
 
创建用户
kadmin.local -q "addprinc -randkey zhengyx/[email protected]"
kadmin.local -q "addprinc -randkey zhengyx/[email protected]"
kadmin.local -q "addprinc -randkey zhengyx/[email protected]"
 
kadmin.local -q "addprinc -randkey HTTP/[email protected]"
kadmin.local -q "addprinc -randkey HTTP/[email protected]"
kadmin.local -q "addprinc -randkey HTTP/[email protected]"
 
生成keytab
$ cd /var/kerberos/krb5kdc/
kadmin.local -q "xst  -k zhengyx-unmerged.keytab  zhengyx/[email protected]"
kadmin.local -q "xst  -k zhengyx-unmerged.keytab  zhengyx/[email protected]"
kadmin.local -q "xst  -k zhengyx-unmerged.keytab  zhengyx/[email protected]"
 
kadmin.local -q "xst  -k HTTP.keytab  HTTP/[email protected]"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/[email protected]"
kadmin.local -q "xst  -k HTTP.keytab  HTTP/[email protected]"
 
合并keytab
$ ktutil
ktutil: rkt zhengyx-unmerged.keytab
ktutil: rkt HTTP.keytab
ktutil: wkt zhengyx.keytab
查看
klist -ket  hadoop.keytab
验证是否合并
$ kinit -k -t zhengyx.keytab zhengyx/[email protected]
$ kinit -k -t zhengyx.keytab HTTP/[email protected]
 
分发keytab文件
scp zhengyx.keytab zyx7:/data/hadoop/etc/hadoop
scp zhengyx.keytab zyx8:/data/hadoop/etc/hadoop
scp zhengyx.keytab zyx9:/data/hadoop/etc/hadoop
修改所属用户组(hadoop安装用户和组)及权限(本用户只读,其他组无权限)
ssh zyx7 "chown zhengyx:zhengyx /data/hadoop/etc/hadoop/zhengyx.keytab ;chmod 400 /data/hadoop/etc/hadoop/zhengyx.keytab"
ssh zyx8 "chown zhengyx:zhengyx /data/hadoop/etc/hadoop/zhengyx.keytab ;chmod 400 /data/hadoop/etc/hadoop/zhengyx.keytab"
ssh zyx9 "chown zhengyx:zhengyx /data/hadoop/etc/hadoop/zhengyx.keytab ;chmod 400 /data/hadoop/etc/hadoop/zhengyx.keytab"
 
通过文件登录
kinit -k -t /data/hadoop/etc/hadoop/zhengyx.keytab zhengyx/[email protected]
 
 
Zookeeper配置
由于hadoophdfs配置了ha所以zookeeper需要配置kerberos
zoo.cfg
增加
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
 
zk配置文件目录下建 jaas.conf内容如下
Server {
      com.sun.security.auth.module.Krb5LoginModule required
      useKeyTab=true
      keyTab="/data/hadoop/etc/hadoop/zhengyx.keytab"
      storeKey=true
      useTicketCache=true
      principal="zhengyx/[email protected]";
  };
 
新建java.env
export JVMFLAGS="-Djava.security.auth.login.config=/data/zookeeper/conf/jaas.conf"
 
Hdfs配置
core-site.xml
<property>
  <name>hadoop.security.authentication</name>
  <value>kerberos</value>
</property>
 
<property>
  <name>hadoop.security.authorization</name>
  <value>true</value>
</property>
 
hdfs-site.xml
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
<description>max number of file which can be opened in a datanode</description>
</property>
 
<property>
  <name>dfs.block.access.token.enable</name>
  <value>true</value>
</property>
<property>
  <name>dfs.namenode.keytab.file</name>
  <value>/data/hadoop/etc/hadoop/zhengyx.keytab</value>
</property>
<property>
  <name>dfs.namenode.kerberos.principal</name>
  <value>zhengyx/[email protected]</value>
</property>
<property>
  <name>dfs.namenode.kerberos.https.principal</name>
  <value>HTTP/[email protected]</value>
</property>
<property>
  <name>dfs.datanode.address</name>
  <value>0.0.0.0:1034</value>
</property>
<property>
  <name>dfs.datanode.http.address</name>
  <value>0.0.0.0:1036</value>
</property>
<property>
  <name>dfs.datanode.keytab.file</name>
  <value>/data/hadoop/etc/hadoop/zhengyx.keytab</value>
</property>
<property>
  <name>dfs.datanode.kerberos.principal</name>
  <value>zhengyx/[email protected]</value>
</property>
<property>
  <name>dfs.datanode.kerberos.https.principal</name>
  <value>HTTP/[email protected]</value>
</property>
 
 
<!-- datanode SASL配置 -->
<property>
  <name>dfs.http.policy</name>
  <value>HTTPS_ONLY</value>
</property>
<property>
  <name>dfs.data.transfer.protection</name>
  <value>integrity</value>
</property>
 
<!--journalnode 配置-->
<property>
  <name>dfs.journalnode.keytab.file</name>
  <value>/data/hadoop/etc/hadoop/zhengyx.keytab</value>
</property>
<property>
  <name>dfs.journalnode.kerberos.principal</name>
  <value>zhengyx/[email protected]</value>
</property>
<property>
  <name>dfs.journalnode.kerberos.internal.spnego.principal</name>
  <value>HTTP/[email protected]</value>
</property>
 
<!--webhdfs-->
<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>
 
<property>
  <name>dfs.web.authentication.kerberos.principal</name>
  <value>HTTP/[email protected]</value>
</property>
 
<property>
  <name>dfs.web.authentication.kerberos.keytab</name>
  <value>/data/hadoop/etc/hadoop/zhengyx.keytab</value>
</property>
 
<property>
  <name>dfs.datanode.data.dir.perm</name>
  <value>700</value>
</property>
 
SASL配置
此处是用于datanode服务,与kerberos无关,通过此配置不需要jsvc
一台机器(ca)生成key与cert
ca机器相当于主机生成zyx_ca_key与zyx_ca_cert文件
openssl req -new -x509 -keyout zyx_ca_key -out zyx_ca_cert -days 9999
z123456789
将key和cert文件传给所有机器
 
zyx_ca_key与zyx_ca_cert文件传给其他机器,在其他机器执行生成z_keystore与z_truststore
keytool -keystore z_keystore -alias localhost -validity 9999 -genkey
keytool -keystore z_truststore -alias CARoot -import -file zyx_ca_cert
keytool -keystore z_keystore -alias localhost -certreq -file z_cert
openssl x509 -req -CA zyx_ca_cert -CAkey zyx_ca_key -in z_cert -out z_cert_signed -days 9999 -CAcreateserial -passin pass:z123456789
keytool -keystore z_keystore -alias CARoot -import -file zyx_ca_cert
keytool -keystore z_keystore -alias localhost -import -file z_cert_signed
 
将z_keystore与z_truststore
配置到ssl(ssl-server.xml,ssl-client.xml)文件中(hadoop/etc/hadoop)
指定文件与密码即可,无特殊配置不做说明。
 
Yarn配置
Yarn-site.xml增加kerberos配置
<!--YARN kerberos security-->
<property>
  <name>yarn.resourcemanager.keytab</name>
  <value>/data/hadoop/etc/hadoop/zhengyx.keytab</value>
</property>
<property>
  <name>yarn.resourcemanager.principal</name>
  <value>zhengyx/[email protected]</value>
</property>
<property>
  <name>yarn.nodemanager.keytab</name>
  <value>/data/hadoop/etc/hadoop/zhengyx.keytab</value>
</property>
<property>
  <name>yarn.nodemanager.principal</name>
  <value>zhengyx/[email protected]</value>
</property>
 
三、使用
新建环境使用用户:addprinc zhengyx/hadoop
登录kinit zhengyx/hadoop
登录后可正常使用hadoop命令

5-1.png

不登录kerberos使用hadoop命令会报错

5-2.png

、备注
存在问题:kerberos主服务为节点,如果主服务异?;岬贾禄骷湮薹ㄈ现?/span>致使环境能正常工作。这可用环境不符,kerberos的高可后续研究。

更多大数据相关资讯敬请关注魔据教育,为您分享最及时的大数据资讯。
学习大数据敬请关注魔据教育微信二维码。
魔据教育微信二维码

【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至[email protected],我们将及时沟通与处理。本站内容除非来源注明魔据教育,否则均为网友转载,涉及言论、版权与本站无关。

全国咨询热线:18501996998,值班手机:18501996998(7*24小时)

在线咨询:张老师QQ 320169340

企业合作服务专线:010-82340234-821, 院校合作洽谈专线:010-82340234

Copyright 2001-2019 魔据教育 - 北京华育兴业科技有限公司 版权所有,京ICP备17018991号-2

免费在线咨询赛车彩票

免费索取技术资料立即索取

大数据技术交流QQ:226594285

电话咨询010-82340234

  • 互联网基金违规销售乱象:巧立名目送红包、送份额 2019-05-22
  • 2018国际产学研用合作会议在南昌举行 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-12
  • 广东金林村:农民爱写诗 2019-05-11
  • 二哈冲进轻轨“调戏”乘客 工作人员急追 2019-05-11
  • 南方电网首座500千伏智能变电站投运 2019-04-28
  • 为什么说一直辛苦劳作的农民没有富起来?而不说一直勤劳的农民没有富起来? 2019-04-28
  • 东博会16个国家企业参展 国际展区人气旺 2019-04-12
  • 走路开车看手机是把生命当儿戏(社会观察) 2019-04-05
  • 广西壮族自治区东兰县“七民一站一阵地工作法”维护群众权益 2019-04-05
  • 这是全国精气最为集中的地方 被称为中国丹田所在 ——凤凰网房产 2019-04-04
  • [大笑]大家都不玩了,咱就不相信光靠房地产商和金融资本两方能把房价通过左手倒右手右手倒左手炒上天! 2019-03-25
  • 世界杯开幕式小旗手来自中国贵州丹寨--旅游频道 2019-03-25
  • 把过去私有制基础上的“阶级分析”生搬硬套到现代公有制和私有制并存的无阶级社会,是张冠李戴、睁着眼睛说瞎话。 2019-03-19
  • 致敬!他们是不为人知的城市猎鹰 2019-03-08
  • 41| 398| 498| 323| 718| 457| 87| 792| 838| 151|