目录
在 UDH 上使用 Keberos 认证,它会根据所安装的服务生成对应主机和服务的 principal 、 keytab 等信息的 csv 文件,并且在启动后通过脚本自动生成 keytab 存放到对应主机目录上( /etc/security/keytabs )。
所以,只需在安装完 KDC 环境执行 UDH 中 kerberos-setup.sh 脚本, UDH 就能够完成大部分的初始化工作。
1 、 Hadoop 的安全认证机制
简单来说 , 没有做 kerberos 认证的 Hadoop ,只要有 client 端就能够连接上。而且,通过一个有 root 的权限的内网机器,通过创建对应的 linux 用户,就能够得到 Hadoop 集群上对应的权限。
而实行 Kerberos 后,任意机器的任意用户都必须现在 Kerberos 的 KDC 中有记录,才允许和集群中其它的模块进行通信。
2 、 Kerberos 安全认证协议
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。
简单介绍:
使用 Kerberos 时,一个客户端需要经过三个步骤来获取服务 :
认证:客户端向认证服务器发送一条报文,并获取一个含时间戳的 Ticket-Granting Ticket ( TGT )。
授权:客户端使用 TGT 向 Ticket-Granting Server ( TGS )请求一个服务 Ticket 。
服务请求:客户端向服务器出示服务 Ticket ,以证实自己的合法性。该服务器提供客户端所需服务,在 Hadoop 应用中,服务器可以是 namenode 或 jobtracker 。
为此, Kerberos 需要 The Key Distribution Centers ( KDC )来进行认证。 KDC 只有一个 Master ,可以带多个 slaves 机器。 slaves 机器仅进行普通验证。 Mater 上做的修改需要自动同步到 slaves 。
另外, KDC 需要一个 admin ,来进行日常的管理操作。这个 admin 可以通过远程或者本地方式登录。
3 、 搭建 Keberos
a. UDH集群内环境安装
环境: udh-yf-dev-1~udh-yf-dev-4 , 选择 udh-yf-dev-1 , udh-yf-dev-2 , udh-yf-dev-3 组成分布式的 KDC , udh-yf-dev-1 作为 Master 机器,
安装:通过执行 Auto_Kerberos_Install.sh 脚本自动安装,
setup1. 根据提示填写 KDC 的 realm 域 如: YONYOU.COM
setup2. 设置 kadmin 的密码,注意这里的密码也是 kdc 数据库的密码
setup3. 确认是否执行在 UDH server 所在机器上
配置说明: Kerberos 的配置文件只有两个,分别为 /etc/krb5.conf 、 /var/kerberos/krb5kdc/kdc.conf , Keberos 脚本根据集群环境相应主机生成默认配置文件, /etc/krb5.conf : 包含 Kerberos 的配置信息。例如, KDC 的位置, Kerberos 的 admin 的 realms 等。需要所有使用的 Kerberos 的机器上的配置文件都同步。这里仅列举需要的基本配置。
说明:
[logging] :表示 server 端的日志的打印位置
[libdefaults] :每种连接的默认配置,需要注意以下几个关键的小配置
default_realm = YONYOU .COM 默认的 realm ,必须跟要配置的 realm 的名称一致。
udp_preference_limit = 1 禁止使用 udp 可以防止一个 Hadoop 中的错误
[realms]: 列举使用的 realm 。
kdc :代表要 kdc 的位置。格式是 机器 : 端口
admin_server: 代表 admin 的位置。格式是 机器 : 端口
default_domain :代表默认的域名
/var/kerberos/krb5kdc/kdc.conf: 包括 KDC 的配置信息
说明:
YONYOU.COM: 是设定的 realms 。名字随意。 Kerberos 可以支持多个 realms ,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个 realms 跟机器的 host 没有大关系。
max_renewable_life = 7d 涉及到是否能进行 ticket 的 renwe 必须配置。
master_key_type: 和 supported_enctypes 默认使用 aes256-cts 。由于, JAVA 使用 aes256-cts 验证方式需要安装额外的 jar 包。推荐不使用。
acl_file: 标注了 admin 的用户权限,需要用户自己创建。文件格式是
Kerberos_principal permissions [target_principal] [restrictions]
支持通配符等。最简单的写法是
*/admin@ YONYOU .COM *
代表名称匹配 */admin@ YONYOU .COM 都认为是 admin ,权限是 * 。代表全部权限。
admin_keytab:KDC 进行校验的 keytab 。后文会提及如何创建。
supported_enctypes: 支持的校验方式。注意把 aes256-cts 去掉。
注意:执行完 Kerboers 安装脚本,已经初始化 KDC 数据库、同步配置到所有 slave kdcs 并启动。
b.UDH集群外环境安装
新增一个节点作为 KDC server ,只需在执行 Auto_Kerberos_Install.sh 脚本 setup3 填写 N 就可以了,脚本安装后的环境一样,这里不在重复介绍。
4 、 Keberos 用户操作
a. 查看当前的认证用户:klist
b. 认证用户:kinit -k -t /xxx/xxx/kerberos.keytab hdfs/udh-yf-dev-1.yonyou.com
c. 删除当前的认证的缓存:kdestroy
启动、停止、重启命令
/etc/init.d/krb5kdc start|stop|restart
/etc/init.d/kadmin start|stop|restart