CDH5安装Kerberos认证

BUG

BUG写在前面:Kerberos 1.15.1-18.el7.x86_64 版本有BUG,不要安装这个版本!!!!
如果已安装上面描述版本不要怕,这里有一篇解决方案升级kerberos

1.系统环境

1.操作系统:CentOS Linux release 7.5.1804 (Core)
2. CDH: 5.16.2-1.cdh5.16.2.p0.8
3. Kerberos:1.15.1-50.el7x86
4.采用root用户进行操作

2.KDC服务安装及配置

2.1.安装KDC服务

在Cloudera Manager服务器上安装KDC服务
在CMWEIUI界面(http://cmip:7180/cmf/hardware/roles#clusterId=1)查看cm安装地址.例如下图中安装在namenode02
安装在namenode02
在namenode02 上面执行下面命令

yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation

kerberos下载图
安装完之后,会在KDC 主机上生成配置文件
• /etc/krb5.conf
• /var/kerberos/krb5kdc/kdc.conf

2.2.修改配置文件

2.2.1.修改krb5.conf 文件
2.2.1.1.修改文件地址
/etc/krb5.conf
2.1.1.2. 修改内容

修改内容如下,标注黄色的为修改的内容,其他配置可根据实际情况调整

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 dns_lookup_kdc = false
# ticket_lifetime = 24h
 ticket_lifetime = 60d
# renew_lifetime = 7d
 renew_lifetime = 180d
 forwardable = true
 rdns = false
 default_realm = HADOOP.COM
 #default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 HADOOP.COM = {
  kdc = namenode02
  admin_server = namenode02
 }

[domain_realm]
# .hadoop.com = HADOOP.COM
# hadoop.com = HADOOP.COM

krb5.conf 图片

2.1.1.3. 解释说明
default_realm = HADOOP.COM #指定默认的域名
HADOOP.COM = {
kdc = namenode02 #kdc 服务器地址
admin_server = namenode02 #admin 服务(域控制器)地址
}
2.1.2. 修改kadm5.acl 文件
2.1.2.1. 修改文件地址
/var/kerberos/krb5kdc/kadm5.acl
2.1.2.2. 修改内容
*/admin@HADOOP.COM   *

kadm5.acl 配置文件

2.1.2.3. 解释说明
给数据库管理员添加ACL 权限,修改kadm5.acl 文件,*代表全部权限
#当前用户admin ,* 表示全部权限。可以新增用户和分配权限
#配置表示以/admin@HADOOP.COM 结尾的用户拥有*(all 也就是所有)权限
2.1.3. 修改kdc.conf 文件
2.1.3.1. 修改文件地址
/var/kerberos/krb5kdc/kdc.conf
2.1.3.2. 修改内容

修改内容如下,标注黄色的为修改的内容,其他配置可根据实际情况调整

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 HADOOP.COM = {
  #master_key_type = aes256-cts
  max_life = 30d
  max_renewable_life = 180d 0h 0m 0s
  #max_renewable_life = 7d 0h 0m 0s
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

kdc.conf 配置文件

3.创建Kerberos数据库

kdb5_util create –r HADOOP.COM -s

此处需要输入Kerberos数据库的密码。

---
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'HADOOP.COM',
master key name 'K/M@HADOOP.COM'
You will be prompted for the database Master Password.   [输入密码: HADOOP.COM]
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
---

创建数据库
创建好数据库后。可以在目录/var/kerberos/krb5kdc 看到以下文件:
目录结构
若重建数据库则需先删除/var/kerberos/krb5kdc 下面principal 相关文件
说明:
• [-s] 表示生成stash file,并在其中存储master server key(krb5kdc)
• [-r] 来指定一个realm name,当krb5.conf 中定义了多个realm 时使用
• 当Kerberos database 创建好了之后,在/var/kerberos/中可以看到生成的principal
相关文件
• 如果遇到数据库已经存在的提示,可以把/var/kerberos/krb5kdc/ 目录下的
principal 的相关文件都删除掉。默认的数据库名字都是principal。可以使用-d 指
定数据库名字。

4.创建Kerberos的管理账号

注意kadmin.local 可以直接运行在KDC 上,而无需通过Kerberos 认证
命令

kadmin.local
addprinc admin/admin@HADOOP.COM

执行

----
[root@namenode02 ~]# kadmin.local
Authenticating as principal root/admin@HADOOP.COM with password.
kadmin.local:  addprinc admin/admin@HADOOP.COM
WARNING: no policy specified for admin/admin@HADOOP.COM; defaulting to no policy
Enter password for principal "admin/admin@HADOOP.COM":     【输入密码为admin】
Re-enter password for principal "admin/admin@HADOOP.COM":
Principal "admin/admin@HADOOP.COM" created.
kadmin.local:  exit
----

管理员用户创建图

5.启动kerberos

将Kerberos 服务添加到自启动服务,并启动krb5kdc 和kadmin 服务。
命令

systemctl enable krb5kdc
systemctl enable kadmin
systemctl start krb5kdc
systemctl start kadmin

启动图

6.验证Kerberos的管理员账号

命令

kinit admin/admin@HADOOP.COM
klist

执行

---
[root@namenode02 ~]# kinit admin/admin@HADOOP.COM
Password for admin/admin@HADOOP.COM:  [输入密码:admin]
[root@namenode02 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@HADOOP.COM

Valid starting       Expires              Service principal
12/03/2021 10:51:53  01/02/2022 10:51:53  krbtgt/HADOOP.COM@HADOOP.COM
        renew until 06/01/2022 10:51:53
 ---

验证图

7.安装Kerberos客户端(所有节点)

为集群安装所有Kerberos客户端,包括Cloudera Manager
以namenode01为例:

yum -y install krb5-libs krb5-workstation

Kerberos客户端

8.在Cloudera Manager Server服务器上安装额外的包

yum -y install openldap-clients

额外的包

9.拷贝配置文件

将KDC Server上的krb5.conf文件拷贝到所有Kerberos客户端
以namenode01为例:

scp /etc/krb5.conf root@namenode01:/etc

拷贝配置文件

10.配置JCE

对于使用Centos5.6 及以上的系统,默认采用AES-256 来加密。这就需要CDH
集群所有的节点都安装Java Cryptography Extension (JCE) Unlimited
Strength Jurisdiction Policy File
下载路径:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-21331
66.html

配置JCE
下载后,在各节点执行,将US_export_policy.jar放到jre下面.

unzip jce_policy-8.zip
cp US_export_policy.jar
/usr/java/jdk1.8.0_231/jre/lib/security/US_export_policy.jar

11.添加cm管理员账号

在KDC中给Cloudera Manager添加管理员账号
查看cmd的用户名,如下图所示的,用户名为: cloudera-scm
添加cm管理员账号
给Cloudera Manager添加管理员账号
命令

kadmin.local
addprinc cloudera-scm/admin@HADOOP.COM
list_principals

执行

----
Authenticating as principal admin/admin@HADOOP.COM with password.
kadmin.local:  addprinc cloudera-scm/admin@HADOOP.COM
WARNING: no policy specified for cloudera-scm/admin@HADOOP.COM; defaulting to no policy
Enter password for principal "cloudera-scm/admin@HADOOP.COM":  [输入密码为cloudera-scm]
Re-enter password for principal "cloudera-scm/admin@HADOOP.COM":
Principal "cloudera-scm/admin@HADOOP.COM" created.
kadmin.local:  list_principals
K/M@HADOOP.COM
admin/admin@HADOOP.COM
cloudera-scm/admin@HADOOP.COM
kadmin/admin@HADOOP.COM
kadmin/changepw@HADOOP.COM
kadmin/namenode02@HADOOP.COM
kiprop/namenode02@HADOOP.COM
krbtgt/HADOOP.COM@HADOOP.COM
kadmin.local:  exit 
----

添加管理员账号

12.配置Kerberos并访问Hadoop相关服务

12.1进入CDH管理安全界面

登录cm的WEBUI界面,选择[管理]–>[安全].进入开启kerberos界面
kerberos界面

12.2检查下列步骤已完成

点击[启动kerberos]按钮,进去开启流程,全部打钩,然后点击[继续].
检查下列步骤已完成

12.3 填写安全域

填写安全域,以及KDC server以及KDC admin server的主机名, 然后点击[继续].
填写安全域

12.4 配置信息

如果勾选了这个选项就可以通过CM 的管理界面来部署krb5.conf,但是实际操
作过程中发现有些配置仍然需要手动修改该文件并同步。所以不建议让
Cloudera Manager 来管理krb5.conf, 点击“继续”
配置信息

12.5 输入cm管理员账号信息

输入Cloudera Manager 的Kerbers 管理员账号,一定得和之前创建的账号一致
cloudera-scm/admin@HADOOP.COM
输入cm管理员账号信息

12.6 点击继续

点击继续

12.7选择服务的principal

默认即可,点击继续
选择服务的principal

12.8 勾选重启

勾选重启集群,然后点击继续
勾选重启

12.9 重启

等待重启,出现下图所示,点击继续
重启

12.10 完成

点击完成
完成

13.附录

13.1.生成keytab文件

kadmin.local
listprincs
ktadd -k /home/kerberos/hdfs.keytab -norandkey hdfs/namenode02@HADOOP.COM

生成keytab文件

13.2 常见问题

问题1

kadmin: GSS-API (or Kerberos) error while initializing kadmin interface
问题1

解决方案

检查NTP 服务是否正常启动,执行ntpq -p 检查偏移量是否正常。如果偏移量
太大,通过date -s "2021-11-03 09:49:00"命令,校正各个主机时间。

问题2

HUE认证问题

解决方案

执行下面命令

klist -f -c /var/run/hue/hue_krb5_ccache
kadmin.local
modprinc -maxrenewlife 90day krbtgt/HADOOP.COM@HADOOP.COM
list_principals
modprinc -maxrenewlife 90day +allow_renewable hue/namenode01@HADOOP.COM
modprinc -maxrenewlife 90day +allow_renewable hue/namenode02@HADOOP.COM
问题3

Caused by: ExitCodeException exitCode=24:
File /var/lib/yarn-ce/etc/hadoop must not be world or group writable, but is 777

解决方案
 chmod -R 751 /var/lib
问题4

Can’t create directory /data1/yarn/nm/usercache/hive/appcache/application_1639382956195_0009 - Permission denied

解决方案

到报错主机下面执行下面脚本

chown yarn:yarn /data1/yarn/nm/usercache/hive

13.3.常用命令

#进入kdc
kadmin.local
#创建kdc数据库
kdb5_util create –r HADOOP.COM –s
--创建princ
addprinc cloudera-scm/admin@HADOOP.COM
--删除princ
delprinc cloudera-scm/admin@HADOOP.COM
--修改密码
change_password admin/admin@HADOOP.COM
--查看生命周期
getprinc zookeeper/datanode05
--查看princ
listprincs
--删除数据库
rm -rf /var/kerberos/krb5kdc/principal*
--生成keytab文件
ktadd -k /home/kerberos/hdfs.keytab -norandkey hdfs/namenode02@HADOOP.COM

14.kerberos系列

CDH5安装Kerberos认证
升级kerberos
windows下火狐浏览器中配置kerberos客户端
CDH禁用kerberos
卸载kerberos

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脸ル粉嘟嘟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值