本文描述CDH6.3.2集群集成MIT Kerberos流程和遇到的问题以及解决方法。
参考:https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_sg_intro_kerb.html。
MIT Kerberos安装文档请参考 Ubuntu安装MIT Kerberos。
操作系统:Ubuntu18.04。
创建Cloudera Manager主体
登陆KDC主机。切换到root
用户权限。
执行kadmin.local
进入kerberos管理员交互程序。
在kadmin.local
中,键入以下命令创建cloudera manager主体:
kadmin.local: addprinc -pw password cloudera-scm/admin@EXAMPLE.COM
-pw
用于指定主体密码。EXAMPLE.COM
是Kerberos REALM,你应该写成你的。
启用kerberos
调整KDC配置
查看/etc/krb5kdc/kdc.conf
文件,确保以下配置存在,没有则添加:
max_life = 1d
max_renewable_life = 7d
完整示例如下:
[kdcdefaults]
kdc_ports = 750,88
[realms]
EXAMPLE.CN = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 750,88
max_life = 1d 0h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
#supported_enctypes = aes256-cts:normal aes128-cts:normal
default_principal_flags = +preauth
}
开始启用Kerberos
使用管理员用户进入Cloudera Manager Web UI。
1、进入启用Kerberos向导
依次点击 管理 -> 安全,进入安全管理页面,找到要启用Kerberos的集群,点击 启用Kerberos,即可进入启用Kerberos向导。
2、启用要求
确认四个要求都满足,全部勾选。点击 继续。
3、填写KDC信息
Kerberos加密类型选择aes256-cts
。
Kerberos安全领域,KDC Server主机,KDC Admin Server Host按照以安装好的Kerberos KDC信息进行填写。
点击 继续。
问题记录:
出现的默认加密类型:rc4-hmac,启用会失败。
测试可用的加密类型有:aes128-cts-hmac-sha1-96,aes256-cts。其他没有测。
这里使用aes256-cts。
4、 KRB5配置
不要选择 通过Cloudera Manager管理krb5.conf,点击 继续。
网上有人指出,使用Cloudera Manager管理krb5.conf会有问题,本人没有对此进行测试。
使用手动管理krb5.conf方法,配置更改后,确保Kerberos所有机器保持最新的配置。
5、KDC Account Manager凭据
填入在文章开始时创建的Cloudera Manager主体信息,这里是cloudera-scm/admin
,填入密码,点击 继续。
6、导入KDC Account Manager凭据命令
等待成功,点击 继续。
如果失败,分析并排查解决。上面第3步的问题就是在这一步失败,更改加密类型后,此步成功导入。
7、配置主体
此步配置各个服务的主体,保持默认即可。点击 继续。
8、配置端口
勾选重启集群,其他保持默认。点击 继续。
9、启用Kerberos命令
等待集群重启成功。点击 继续。
10、启用成功
不出意外,到达此步,Kerberos启用成功。点击 完成。
使用启用Kerberos的服务
当服务启用Kerberos后,如果想要使用指定服务的超级用户访问服务(总会有这样的需要),需要提供用户凭据才可以访问服务。
各服务凭据存放在各机器的/var/run/cloudera-scm-agent/process
目录下。
注意:请不要手动使用Kerberos管理员为这些服务的超级用户生成凭据,那将会刷新用户凭据,导致集群服务出现问题。
例如查找hive的凭证票据:
find /var/run/cloudera-scm-agent/process | grep keytab | grep hive
这个只有在安装有hive实例的机器上可以找到,例如hive的metastore所在机器。
输出如下:
/run/cloudera-scm-agent/process/764-hive-HIVESERVER2/hive.keytab
/run/cloudera-scm-agent/process/763-hive-HIVEMETASTORE/hive.keytab
/run/cloudera-scm-agent/process/756-hive-HIVESERVER2/hive.keytab
/run/cloudera-scm-agent/process/755-hive-HIVEMETASTORE/hive.keytab
...
排在前面的两个是最新的,可用,其他不可用。
获取hive用户凭据(假设hive主体是hive/host1.example.com
):
kinit -kt /run/cloudera-scm-agent/process/764-hive-HIVESERVER2/hive.keytab hive/host1.example.com
然后就可以通过beeline
连接hive进行操作了。
其他服务同样操作。