共计 3431 个字符,预计需要花费 9 分钟才能阅读完成。
通常,一个 Hadoop 集群的安全使用 kerberos 来进行保障。在启用 Kerberos 后,需要用户进行身份验证。用户通过验证后可以使用 GRANT/REVOKE 语句来进行基于角色的访问控制。本文介绍一下在 CDH 集群中如何配置 kerberos。
1.KDC 安装和配置脚本
脚本 install_kerberos.sh 可以完成 kerberos 服务器所有安装配置和相应的参数配置
#!/bin/bash
#
echo “ready to install and config kerberos”
# 使用 root 权限运行
cd /root
chmod 755 /etc
chmod 755 /etc/hadoop
# 安装 kerberos 组件
yum install -y krb5-server
yum install -y openldap-clients
yum -y install krb5-workstation
# 在配置文件中更新域名和主机名
# 设置域名
sed -i.orig ‘s/EXAMPLE.COM/CLOUDERA/g’ /etc/krb5.conf
# 设置 kerberos server 主机名
sed -i.m1 ‘s/kerberos.example.com/quickstart.cloudera/g’ /etc/krb5.conf
# 设置域名为 cloudera
sed -i.m2 ‘s/example.com/cloudera/g’ /etc/krb5.conf
# 从 Oracle 官网下载 JDK 到 root 目录
mkdir jce
cd jce
unzip ../UnlimitedJCEPolicyJDK7.zip
# 保存原始 jar 文件做备份
cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar local_policy.jar.orig
cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar US_export_policy.jar.orig
# 将新的 jar 包拷贝进来
cp /root/jce/UnlimitedJCEPolicy/local_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar
cp /root/jce/UnlimitedJCEPolicy/US_export_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar
# 创建 kerberos 数据库
echo suggested password is cloudera
kdb5_util create -s
# 更新 kdc.conf
sed -i.orig ‘s/EXAMPLE.COM/CLOUDERA/g’ /var/kerberos/krb5kdc/kdc.conf
# 票据文件中增加一行
sed -i.m1 ‘/dict_file/a max_life = 1d’ /var/kerberos/krb5kdc/kdc.conf
# 增加可创建的最大文件数
sed -i.m2 ‘/dict_file/a max_renewable_life = 7d’ /var/kerberos/krb5kdc/kdc.conf
# 将新增加的两行缩进
sed -i.m3 ‘s/^max_/ max_/’ /var/kerberos/krb5kdc/kdc.conf
# acl 文件需要 admin 权限
sed -i ‘s/EXAMPLE.COM/CLOUDERA/’ /var/kerberos/krb5kdc/kadm5.acl
# 修改 kdc.conf 文件
sed -i.m3 ‘/supported_enctypes/a default_principal_flags = +renewable, +forwardable’ /var/kerberos/krb5kdc/kdc.conf
# 设置缩进
sed -i.m4 ‘s/^default_principal_flags/ default_principal_flags/’ /var/kerberos/krb5kdc/kdc.conf
# 启动 krb5kdc 和 kadmin 服务
service krb5kdc start
service kadmin start
kadmin.local <# cloudera-scm/admin@YOUR-LOCAL-REALM.COM
# 在集群中添加 admin 用户
kadmin.local <
2.Cloudera Manager Kerberos 配置
在运行脚本之后,我们现在拥有一个正在运行的 Kerberos 服务器,可以使用它来保护 Hadoop 集群。ClouderaManager 封装了大部分工作,我们只需要配置一些参数值。
通过浏览器访问 http://<your.cm.manager>:7180 登录到 Cloudera Manager。
直接进入管理 > 安全 >Kerberos,如下图所示
点击“启用 Kerberos”按钮
列表中这四个选项全部已经由运行的脚本完成。然后选择“继续”。
Kerberos 向导需要知道脚本的配置项的值。需要我们填写以下选项:
- KDC 服务器主机:<your_kdc_server>
- Kerberos 安全领域:<your_safe_realm>
- Kerberos 加密类型:aes256-cts-hmac-sha1-96
点击“继续”。
勾选通过 Cloudera Manager 管理 krb5.conf。点击继续
输入创建的用户名和密码。点击继续,之后提示成功可需要重启集群。重启后我们就构建了一个使用 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 集群!
Hadoop2.3-HA 高可用集群环境搭建 http://www.linuxidc.com/Linux/2017-03/142155.htm
Hadoop 项目之基于 CentOS7 的 Cloudera 5.10.1(CDH)的安装部署 http://www.linuxidc.com/Linux/2017-04/143095.htm
Hadoop2.7.2 集群搭建详解(高可用)http://www.linuxidc.com/Linux/2017-03/142052.htm
使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm
Ubuntu 14.04 下 Hadoop 集群安装 http://www.linuxidc.com/Linux/2017-02/140783.htm
CentOS 6.7 安装 Hadoop 2.7.2 http://www.linuxidc.com/Linux/2017-08/146232.htm
Ubuntu 16.04 上构建分布式 Hadoop-2.7.3 集群 http://www.linuxidc.com/Linux/2017-07/145503.htm
CentOS 7 下 Hadoop 2.6.4 分布式集群环境搭建 http://www.linuxidc.com/Linux/2017-06/144932.htm
Hadoop2.7.3+Spark2.1.0 完全分布式集群搭建过程 http://www.linuxidc.com/Linux/2017-06/144926.htm
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址 :https://www.linuxidc.com/Linux/2018-02/150959.htm