集群权限集成
1.Kerberos安装
1.1 在主节点cloud01安装
#在主节点cloud01安装
yum -y install krb5-server krb5-workstation #krb5-auth-dialog
1.2 全部节点操作
#全部节点操作
yum -y install krb5-libs krb5-workstation #krb5-auth-dialog
1.3 所有节点安装sasl工具
#所有节点安装sasl工具,impala启用kerberos时需要sasl工具,如已安装请忽略
yum -y install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5
1.4 修改krb5.conf文件
#进入文件
vim /etc/krb5.conf
#注释掉如下行,打开会引起错误:[Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
# default_ccache_name = KEYRING:persistent:%{uid}
#装在主节点
cp -n /etc/krb5.conf /etc/krb5.conf.bak && \
sed -i 's/#//g' /etc/krb5.conf && \
sed -i 's/EXAMPLE.COM/HADOOP.COM/g' /etc/krb5.conf && \
sed -i 's/kerberos.example.com/cloud01/g' /etc/krb5.conf && \
sed -i 's/example.com/cloud01/g' /etc/krb5.conf && \
sed -i 's/ default_ccache_name/# default_ccache_name/g' /etc/krb5.conf && \
sed -i 's/ Configuration/# Configuration/g' /etc/krb5.conf
# 查看修改前和修改后的文件对比
diff /etc/krb5.conf.bak /etc/krb5.conf
1.5 修改/var/kerberos/krb5kdc/kdc.conf文件
修改EXAMPLE.COM为自己公司的域名
cp -n /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kdc.conf.bak && \
sed -i 's/EXAMPLE.COM/HADOOP.COM/g' /var/kerberos/krb5kdc/kdc.conf
1.6 查看修改前和修改后的文件对比
# 查看修改前和修改后的文件对比
diff /var/kerberos/krb5kdc/kdc.conf.bak /var/kerberos/krb5kdc/kdc.conf
#并在文件中添加一下内容
max_renewable_life = 7d 0h 0m 0s
1.7 修改/var/kerberos/krb5kdc/kadm5.acl文件,修改EXAMPLE.COM为自己公司的域名。
cp -n /var/kerberos/krb5kdc/kadm5.acl /var/kerberos/krb5kdc/kadm5.acl.bak && \
sed -i 's/EXAMPLE.COM/HADOOP.COM/g' /var/kerberos/krb5kdc/kadm5.acl
diff /var/kerberos/krb5kdc/kadm5.acl.bak /var/kerberos/krb5kdc/kadm5.acl
1.8 配置kerberos服务
#配置kerberos服务
#在cloud01节点上,生成kerberos数据库,设置密码为:12345678
/usr/sbin/kdb5_util create -s
1.9 开启kerberos管理界面
#为cdh创建cloudera-scm/admin用户,设置密码为:12345678
# 开启kerberos管理界面
kadmin.local
# 添加认证主体, 主体名: cloudera-scm/admin 密码: 12345678
addprinc cloudera-scm/admin
12345678
12345678
#查看用户
listprincs
# 退出kerberos管理界面
exit
1.10 查看数据库文件
#查看数据库文件principal(自动生成的)
ll /var/kerberos/krb5kdc/
1.11 修改参数
#修改krbtgt/HADOOP.COM@HADOOP.COM的Maximum renewable life参数为90天(其默认值为0天),解决在CDH启用kerberos时,Hue角色Kerberos Ticket Renewer启动异常问题
kadmin.local
modprinc -maxrenewlife 90day krbtgt/HADOOP.COM@HADOOP.COM
getprinc krbtgt/HADOOP.COM@HADOOP.COM
exit
1.12 启动kerberos服务
#启动kerberos服务
systemctl start krb5kdc
systemctl start kadmin
systemctl status krb5kdc
systemctl status kadmin
1.13 从节点安装kerberos客户端软件
#从节点安装kerberos客户端软件
yum -y install krb5-libs krb5-workstation
1.14 从主节点复制配置文件到从节点
#从主节点复制配置文件到从节点
sh scp_all.sh /etc/krb5.conf /etc/
sh ssh_all.sh cat /etc/krb5.conf
1.15 kerberos认证测试
#kerberos认证测试
#客户端执行
#获取票据
kinit cloudera-scm/admin
12345678
#查看票据
klist
#销毁票据
kdestroy
2.集成kerberos
全选
页面2,更改以下参数
KDC Type: MIT KDC
Kerberos Security Realm: HADOOP.COM
KDC Server Host: cloud01
KDC Admin Server Host: cloud01
Kerberos Encryption Types: rc4-hmac
Maximum Renewable Life for Principals: 5
页面3,不要勾选该项(Manage krb5.conf through Cloudera Manager),直接继续
页面4,cloudera-scm/admin账号、密码
cloudera-scm/admin
12345678
hdfs启用Kerberos
角色缺少 Kerberos Keytab。请运行“管理”->“安全”页面上的“Kerberos 凭据”选项卡中的“生成缺失凭据”命令。
停止hdfs和yarn,重新生成
3.kerberos使用
1. 进入管理界面
kadmin.local
2. 创建principal(认证主体)
使用管理员创建认证主体,即principal,principal由主体名@域名组成,域名一般都设置为公司的域名。
# 语法格式:
# addprinc -pw 密码 主体名@域名
# 创建hdfs认证主体
addprinc -pw hdfs hdfs@HADOOP.COM
# 创建hive 认证主体
addprinc -pw hive hive@HADOOP.COM
# 创建hbase 认证主体
addprinc -pw hbase hbase@HADOOP.COM
3. 生成keytab凭证
#得在根目录下有data目录
mkdir /data1
# 语法格式:
# xst -norandkey -k 主体文件生成位置 主体名
# 生成hdfs的keytab
xst -norandkey -k /data/hdfs.keytab hdfs
# 生成hive的keytab
xst -norandkey -k /data/hive.keytab hive
# 生成hbase的keytab
xst -norandkey -k /data/hbase.keytab hbase
exit
*****************************************************************************************
# 删除主体(该操作需要管理员用户才能执行,需要进入kadmin.local界面下操作)
kadmin.local
delprinc '主体名'
#策略
add_policy policy1
modify_principal -policy policy1 hdfs@HADOOP.COM
addprinc -pw hdfs hdfs@HADOOP.COM
*****************************************************************************************
4. 认证方式
4.1 普通认证(用主体加密码的方式认证)
# 用主体加密码的方式认证
kinit hdfs
# 输入密码,即创建主体principal时-pw设置的密码
password
# 查看当前票据
klist
4.2keytab认证 (适合生产环境使用的方式认证)
# 适合生产环境使用
# 使用keytab认证 参数kt意义为keytab文件路径 后面接要认证的主体名,keytab文件要和主体名一致
kinit -kt /data/hdfs.keytab hdfs
# 查看当前票据
klist
Kerberos配置完成