CDP存量集群启动Kerberos
本章节将为您介绍如何在CDP集群启用Kerberos。
本操作流程中将KDC服务安装在Cloudera Manager Server所在服务器上(KDC服务可根据自己需要安装在其他服务器)。
前提条件
CDP集群正常运行
集群未启用Kerberos
操作流程
安装及配置KDC服务
CDP集群启用Kerberos
集群环境
操作系统:CentOS7.9
CDP版本:Cloudera Runtime 7.1.6 (Parcels)
采用root用户进行操作
KDC服务安装及配置
1.修改/etc/krb5.conf配置
vim/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 = BDPHTSEC.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 1d
renew_lifetime = 7d
forwardable = true
default_tgs_enctypes = aes256-cts aes128-cts
default_tkt_enctypes = aes256-cts aes128-cts
permitted_enctypes = aes256-cts aes128-cts
udp_preference_limit = 1
kdc_timeout = 3000
[realms]
BDPHTSEC.COM = {
kdc = cdp-utility-1.c-a4542b55a0e64699.cn-hangzhou.cdp.aliyuncs.com
admin_server = cdp-utility-1.c-a4542b55a0e64699.cn-hangzhou.cdp.aliyuncs.com
}
[domain_realm]
.c-a4542b55a0e64699.cn-hangzhou.cdp.aliyuncs.com = BDPHTSEC.COM
c-a4542b55a0e64699.cn-hangzhou.cdp.aliyuncs.com = BDPHTSEC.COM
配置项 | 说明 |
[logging] | 表示server端的日志的打印位置 |
[libdefaults] | 每种连接的默认配置,需要注意以下几个关键的小配置 |
default_realm | BDPHTSEC.COM默认的realm,必须跟要配置的realm的名称一致。 |
udp_preference_limit = 1 | 禁止使用udp可以防止一个Hadoop中的错误 |
ticket_lifetime | 表明凭证生效的时限,一般为24小时 |
renew_lifetime | 表明凭证最长可以被延期的时限,一般为一个礼拜 |
kdc | 代表要kdc的位置。格式是机器:端口 |
admin_server | 代表admin的位置。格式是机器:端口 |
[domain_realm] | 代表默认的域名,注意使用全域名,查看全域名: [root@cdp-utility-1 ~]# hostname -f cdp-utility-1.c-xxxxxxx.cn-beijing.cdp.aliyuncs.com |
[appdefaults] | 可以设定一些针对特定应用的配置,覆盖默认配置 |
2.修改/var/kerberos/krb5kdc/kadm5.acl配置
*/admin@BDPHTSEC.COM *
3.修改/var/kerberos/krb5kdc/kdc.conf配置
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
BDPHTSEC.COM = {
database_name = /var/kerberos/krb5kdc/principal
max_renewable_life = 7d
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 = aes256-cts aes128-cts
}
BDPHTSEC.COM:设定的realms。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有太大关系。
max_renewable_life = 7d:涉及到是否能进行ticket的renew必须配置。
master_key_type:和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包(jce-policy)。
acl_file:标注了admin的用户权限。
admin_keytab:KDC进行校验的keytab。后文会提及如何创建。
supported_enctypes:支持的校验方式。
4.创建Kerberos数据库,并输入密码
kdb5_util create –r BDPHTSEC.COM -s
5.创建Kerberos的管理账号需要输入管理员密码
[root@cdp-utility-1 ~]# kadmin.local
Authenticating as principal root/admin@BDPHTSEC.COM with password.
kadmin.local: addprinc admin/admin@BDPHTSEC.COM
WARNING: no policy specified for admin/admin@BDPHTSEC.COM; defaulting to no policy
Enter password for principal "admin/admin@BDPHTSEC.COM":
Re-enter password for principal "admin/admin@BDPHTSEC.COM":
Principal "admin/admin@BDPHTSEC.COM" created.
kadmin.local: exit
6.将Kerberos服务添加到自启动服务,并启动krb5kdc和kadmin服务
[root@ ~]# systemctl enable krb5kdc
Created symlink from /etc/systemd/system/multi-user.target.wants/krb5kdc.service to /usr/lib/systemd/system/krb5kdc.service.
[root@ ~]# systemctl enable kadmin
Created symlink from /etc/systemd/system/multi-user.target.wants/kadmin.service to /usr/lib/systemd/system/kadmin.service.
[root@~]# systemctl start krb5kdc
[root@ ~]# systemctl start kadmin
7.测试Kerberos的管理员账号
[root@cdp-utility-1 ~]# kinit admin/admin@BDPHTSEC.COM
Password for admin/admin@BDPHTSEC.COM:
[root@cdp-utility-1 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@BDPHTSEC.COM
Valid starting Expires Service principal
2021-10-15T16:26:47 2021-10-16T16:26:47 krbtgt/BDPHTSEC.COM@BDPHTSEC.COM
renew until 2021-10-22T16:26:47
8.Cloudera Manager Server服务器上已经默认安装了openldap-clients,如果没有可以执行下面命令安装
[root@cdp-utility-1 ~]# yum -y install openldap-client
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
没有可用软件包 openldap-client。
错误:无须任何处理
9.将KDC Server上的krb5.conf文件拷贝到所有Kerberos客户端(分发到所有的节点)
scp /etc/krb5.conf cdp-master-1:/etc
scp /etc/krb5.conf cdp-core-1:/etc
scp /etc/krb5.conf cdp-core-2:/etc
scp /etc/krb5.conf cdp-core-3:/etc
CDH集群启用Kerberos
1.在KDC中给Cloudera Manager添加管理员账号,并输入密码确认。
[root@cdp-utility-1 ~]# kadmin.local
Authenticating as principal admin/admin@BDPHTSEC.COM with password.
kadmin.local: addprinc cloudera/admin@BDPHTSEC.COM
2.进入Cloudera Manager的“管理”->“安全”界面,选择“启用Kerberos”。
3.确保如下列出的所有检查项都已完成,点击勾选并继续。
4.Enter KDC Information
配置相关的KDC信息,包括类型、KDC服务器、KDC Realm、加密类型以及待创建的Service Principal(hdfs,yarn,hbase,hive等)的更新生命期等,并继续。
5.不建议让Cloudera Manager来管理krb5.conf, 点击“继续”。
6.输入Cloudera Manager的Kerbers管理员账号,一定得和之前创建的账号一致,点击“继续”。
7.验证通过,点击下一步。
8.保持默认点击继续。
9.点击“完成”,至此已成功启用Kerberos。
等待服务安装完成,查看各个服务都能正常启动。