环境说明

  • 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所有节点下

1
2
3
# 下载对应jdk1.8的JCE版本
wget http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
unzip -o -j -q jce_policy-8.zip -d $JAVA_HOME/jre/lib/security

重启mabari-server

1
ambari-server restart

二、安装krb5

1
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

(*注:将上述三个配置文件分别传给子节点,并放入对应位置)

krb5.conf

1
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没有关系。

kdc.conf

1
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_principal permissions [target_principal] [restrictions]

admin_keytab:KDC 进行校验的 keytab。

supported_enctypes:支持的校验方式。

kadm5.acl

1
vim /var/kerberos/krb5kdc/kadm5.acl

文件格式:

principal permissions [target_principal] [restrictions]

principal:`*/admin@EXAMPLE.COM`

permissions: # 代表所有权限

target_principal:选填

restrictions:选填

该文件可扩展,扩展链接:点我

注意:不要忘记将上述三个配置文件分别传给子节点,并放入对应位置

2. 创建kerberos数据库 (*注:会提示你输入密码。)

1
/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)(*注:根据提示输入密码)

1
2
3
4
# 进入Kerberos数据库
kadmin.local
# 创建admin/admin管理员
addprinc admin/admin

最后执行exit命令退出。

4. 启动KDC服务器和KDC管理服务器,并使其开机自启动

1
2
3
4
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命令来认证用户了。