Kerberos
-
一种网络验证协议,简称为krb5。通过共享密钥实现可信任的第三方认证。支持双向验证;认证过程实现不依赖主机。一般Hadoop中也会支持krb5,需要另外开启,开启后如果要访问HDFS,zookeeper,HBase等服务,也需要使用krb5生成的密钥kinit,才能通过客户端正常访问。
-
Kerberos的三个角色:客户端,服务器,KDC
-
KDC:提供ticket和临时会话密钥
-
krb5主节点需要安装
yum install krb5-libs krb5-server krb5-workstation
- kdc服务器上的三个配置文件
# 集群上所有节点都有这个文件而且内容同步
/etc/krb5.conf
# 主服务器上的kdc配置
/var/kerberos/krb5kdc/kdc.conf
# 能够不直接访问 KDC 控制台而从 Kerberos 数据库添加和删除主体,需要添加配置
/var/kerberos/krb5kdc/kadm5.acl
- 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 = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_ccache_name = KEYRING:persistent:%{uid}
[realms] #列举使用的realm
EXAMPLE.COM = {
kdc = cdh0 # kdc的位置
admin_server = cdh0 # admin的位置
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
-
配置kadm5.acl修改服务端192.168.1.150上的配置文件/var/kerberos/krb5kdc/kadm5.acl,以允许具备匹配条件的admin用户进行远程登录权限.
-
启动服务
# 启动服务命令
systemctl start krb5kdc
systemctl start kadmin
-
default_realm:Kerberos应用程序的默认领域,所有的principal都将带有这个领域标志.
-
realm name:包含KDC和许多客户端的Kerberos网络,类似于域,俗称为领域;也是principal的一个“容器”或者“命名空间”。相对应的,principal的命名规则是"what_name_you_like@realm"。在kerberos,大家都约定俗成用大写来命名realm,比如“EXAMPLE.COM”
-
认证用户
kadmin.local -q "addprinc root/admin" # 添加认证用户,需要输入密码
pincipal的名字的第二部分是admin,那么根据之前配置的kadm5.acl文件,该principal就拥有administrative privileges,这个账号将会被CDH用来生成其他用户/服务的principal。