Kerberos介绍

326 阅读2分钟

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。