Apache Hadoop配置Kerberos指南

  一般,一个Hadoop集群的安全使用kerberos来进行保障。在启用Kerberos后,须要用户进行身份验证。用户经过验证后可使用GRANT/REVOKE语句来进行基于角色的访问控制。本文介绍一下在CDH集群中如何配置kerberos。java

1.KDC安装和配置脚本
  脚本install_kerberos.sh能够完成kerberos服务器全部安装配置和相应的参数配置数据库

 1 #!/bin/bash
 2 
 3 # 
 4 echo "ready to install and config kerberos"
 5 
 6 # 使用root权限运行
 7 cd /root  8 chmod 755 /etc  9 chmod 755 /etc/hadoop 10 
11 # 安装kerberos组件
12 yum install -y krb5-server 13 yum install  -y openldap-clients 14 yum -y install krb5-workstation 15 
16 # 在配置文件中更新域名和主机名
17 
18 # 设置域名
19 sed -i.orig 's/EXAMPLE.COM/CLOUDERA/g' /etc/krb5.conf 20 # 设置kerberos server主机名
21 sed -i.m1 's/kerberos.example.com/quickstart.cloudera/g' /etc/krb5.conf 22 # 设置域名为cloudera
23 sed -i.m2 's/example.com/cloudera/g' /etc/krb5.conf 24 
25 # 从Oracle官网下载JDK到root目录
26 
27 mkdir jce 28 cd jce 29 unzip ../UnlimitedJCEPolicyJDK7.zip 30 # 保存原始jar文件作备份
31 cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar local_policy.jar.orig 32 cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar US_export_policy.jar.orig 33 
34 # 将新的jar包拷贝进来
35 cp /root/jce/UnlimitedJCEPolicy/local_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar 36 cp /root/jce/UnlimitedJCEPolicy/US_export_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar 37 
38 # 建立kerberos数据库
39 echo suggested password is cloudera 40 
41 kdb5_util create -s 42 
43 # 更新kdc.conf
44 sed -i.orig 's/EXAMPLE.COM/CLOUDERA/g' /var/kerberos/krb5kdc/kdc.conf 45 # 票据文件中增长一行
46 sed -i.m1 '/dict_file/a max_life = 1d' /var/kerberos/krb5kdc/kdc.conf 47 # 增长可建立的最大文件数
48 sed -i.m2 '/dict_file/a max_renewable_life = 7d' /var/kerberos/krb5kdc/kdc.conf 49 # 将新增长的两行缩进
50 sed -i.m3 's/^max_/ max_/' /var/kerberos/krb5kdc/kdc.conf 51 
52 # acl文件须要admin权限
53 sed -i 's/EXAMPLE.COM/CLOUDERA/' /var/kerberos/krb5kdc/kadm5.acl 54 
55 # 修改kdc.conf文件
56 sed -i.m3 '/supported_enctypes/a default_principal_flags = +renewable, +forwardable' /var/kerberos/krb5kdc/kdc.conf 57 # 设置缩进
58 sed -i.m4 's/^default_principal_flags/ default_principal_flags/' /var/kerberos/krb5kdc/kdc.conf 59 
60 
61 # 启动krb5kdc和kadmin服务
62 service krb5kdc start 63 service kadmin start 64 
65 kadmin.local <# cloudera-scm/admin@YOUR-LOCAL-REALM.COM
66 
67 # 在集群中添加admin用户
68 kadmin.local <

2.Cloudera Manager Kerberos配置
  在运行脚本以后,咱们如今拥有一个正在运行的Kerberos服务器,可使用它来保护Hadoop集群。ClouderaManager封装了大部分工做,咱们只须要配置一些参数值。浏览器

  经过浏览器访问http://<your.cm.manager>:7180登陆到Cloudera Manager。安全

  

  直接进入管理> 安全>Kerberos,以下图所示bash

  

  点击“启用Kerberos”按钮服务器

  列表中这四个选项所有已经由运行的脚本完成。而后选择“继续”。oop

  

  Kerberos向导须要知道脚本的配置项的值。须要咱们填写如下选项:ui

  •  KDC服务器主机: <your_kdc_server>
  •  Kerberos安全领域: <your_safe_realm>
  •  Kerberos加密类型: aes256-cts-hmac-sha1-96

  点击“继续”。加密

  

  勾选经过Cloudera Manager管理krb5.conf。点击继续spa

  

  输入建立的用户名和密码。点击继续,以后提示成功可须要重启集群。重启后咱们就构建了一个使用kerberos进行安全保护的hadoop集群。

3.启动kerberos后集群使用方式

  未开启kerberos时,hdfs用户是hdfs的超级用户,用户能够经过su hdfs来获取对hdfs操做的权限,启用kerberos后使用方式以下:

kinit hdfs@HADOOP

  使用hdfs命令进行验证

hadoop fs -mkdir /kongc hadoop fs -rmdir /kongc

  使Kerberos·token无效

kdestroy

  如今已经成功构建了一个正在运行的Kerberos集群!

相关文章
相关标签/搜索