环境说明
- CentOS-6 / CentOS-7
- Ambari 2.6.1.0
- HDP 2.6.4
- Kerberos 1.14.1
一、安装JCE
对于Kerberos系统来说,默认使用的 AES-256
来进行加密。在集群启用Kerberos之前,必须在Ambari集群上的每个节点上都装有JCE。
重要:如果您使用的是Oracle JDK,则必须在群集中的所有主机上分发和安装JCE,包括Ambari Server。安装JCE后,请务必重新启动Ambari Server。如果您使用的是OpenJDK,OpenJDK的某些发行版会自动提供无限强度的JCE,因此不需要安装JCE。
JCE与JDK版本是对应的,需要根据JDK的版本来选择JCE版本,下载JCE的zip包并解压到 $JAVA_HOME/jre/lib/security
目录下。
jce 6 http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
jce 7 http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/jce-7-download-432124.html
jce 8 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
也可直接执行以下命令,在ambari所有节点下:
代码语言:javascript复制# 下载对应jdk1.8的JCE版本
在 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html下载zip包
unzip -o -j -q jce_policy-8.zip -d $JAVA_HOME/jre/lib/security
代码语言:javascript复制重启mabari-server
ambari-server restart
二、安装krb5
代码语言:javascript复制yum -y install krb5-server krb5-libs krb5-workstation
注:KDC (Key Distribution Center)密匙分配中心, 其在kerberos中通常提供两种服务:
- Authentication Service (AS):认证服务
- Ticket-Granting Service (TGS):授予票据服务
注:关闭防火墙和selinux
三、kerberos配置
1.修改配置文件
- krb5.conf
- kdc.conf
- kadm5.acl
(*注:将上述三个配置文件分别传给子节点,并放入对应位置)
代码语言:javascript复制krb5.conf
vim /etc/krb5.conf
参数说明:
[libdefaults]:每种连接的默认配置,需要注意以下几个关键的小配置
default_realm = EXAMPLE.COM 默认的realm,必须跟要配置的realm的名称一致。
ticket_lifetime 表明凭证生效的时限,一般为24小时。
renew_lifetime 表明凭证最长可以被延期的时限,一般为7天。当凭证过期之后, 对安全认证的服务的后续访问则会失败。
[logging]:表示server端的日志的打印位置
[realms]:列举使用的realm。
kdc:代表安装 kdc server
的机器。格式是机器ip或者主机名
admin_server:代表安装 admin server
的机器。格式是机器ip或者主机名
EXAMPLE.COM:是设定的realm。名字随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。
大小写敏感,一般为了识别使用全部大写。这个realm跟机器的hostname没有关系。
代码语言:javascript复制kdc.conf
vim /var/kerberos/krb5kdc/kdc.conf
参数说明:
EXAMPLE.COM:是设定的realm,名称随意。Kerberos可以支持多个realms,会增加复杂度。本文不探讨。书写大小写敏感,一般为了识别使用全部大写。这个realm跟机器的hostname没有关系。
master_key_type:和 supported_enctypes
默认使用 aes256-cts
。JAVA 使用 aes256-cts
验证方式需要安装 JCE 包。
acl_file:标注文件路径,用于设置 principal
的权限,需要用户自己创建。文件格式: Kerberos_principalpermissions[target_principal][restrictions]
admin_keytab:KDC 进行校验的 keytab。
supported_enctypes:支持的校验方式。
代码语言:javascript复制kadm5.acl
vim /var/kerberos/krb5kdc/kadm5.acl
文件格式:
principal permissions[target_principal][restrictions]
principal: */admin@EXAMPLE.COM
permissions:* # *代表所有权限
target_principal:选填
restrictions:选填
该文件可扩展,扩展链接:https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/kadm5_acl.html
注意:不要忘记将上述三个配置文件分别传给子节点,并放入对应位置
2.创建kerberos数据库 (*注:会提示你输入密码。)
代码语言:javascript复制/usr/sbin/kdb5_util create -s -r EXAMPLE.COM
参数说明:
- 其中,[-s]表示生成stash file,并在其中存储master server key(krb5kdc);还可以用[-r]来指定一个krb5.conf 文件中存在的realm name
- 保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可
- 在此过程中,我们会输入database的管理密码。这里设置的密码一定要记住,如果忘记了,就无法管理Kerberos server。
- 当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
3. 创建管理员(admin/admin@EXAMPLE.COM)(*注:根据提示输入密码)
代码语言:javascript复制# 进入Kerberos数据库
kadmin.local
# 创建admin/admin管理员
addprinc admin/admin
最后执行 exit
命令退出。
4. 启动KDC服务器和KDC管理服务器,并使其开机自启动
代码语言:javascript复制service krb5kdc start
service kadmin start
chkconfig krb5kdc on
chkconfig kadmin on
四、启用Kerberos向导
1. 开始使用
2. 配置Kerberos
3. 安装和测试Kerberos客户端
4. 配置身份
保持默认配置,点击下一步。
5. 确认配置
6. 停止服务
7. 梳理Kerberize集群
8. 启动和测试服务
9. 完成
这样的话,ambari的Kerberos服务就安装配置成功了。接下来,就可以使用kinit命令来认证用户了。
更多精彩干货内容,请关注微信公众号实时查看