这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战
前言
最近一段时间和数仓同学接触的比较多,算是一个知识点的扫盲把,kerberos认证是大数据权限认证的一种解决方案。 那么什么是kerberos呢?
Kerberos简介
Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证,该词为麻省理工学院为这个协议开发的一套计算机软件,软件设计采用CS架构,并且能够进行互相认证,客户端和服务器都可对对方进行身份验证,可以用于防止窃听,防止重放攻击,保护数据完整性等场合,是一种应用对称密钥体进行密钥管理的系统
Kerberos基本概念
1.KDC : 密钥分发中心,负责管理发放票据,记录授权
2.Realm: Kerberos管理领域的标识
3.principal:当每添加一个用户或服务的时候都需要向kdc添加一条principal,principal的形式为:主名称/实例名称@领域名
4.主名称: 主名称可以是用户名或服务名,表示是用于提供各种网络服务(如hdfs,yarn,hive)的主体
Kerberos 认证原理
基于kerberos安全认证部署案例
1. Kerberos部署
1.1 安装
kerberos主节点安装服务
yum install krb5-server -y
1.2 配置文件
kdc服务器三个配置文件
# 集群上所有节点都有这个文件而且内容同步
/etc/krb5.conf
# 主服务器上的kdc配置
/var/kerberos/krb5kdc/kdc.conf
# 能够不直接访问 KDC 控制台而从 Kerberos 数据库添加和删除主体,需要添加配置
/var/kerberos/krb5kdc/kadm5.acl
-
修改/etc/krb5.conf
-
修改/var/kerberos/krb5kdc/kdc.conf
-
创建/var/kerberos/krb5kdc/kadm5.acl
1.4 创建Kerberos数据库
# 保存路径为/var/kerberos/krb5kdc 如果需要重建数据库,将该目录下的principal相关的文件删除即可
kdb5_util create -r EXAMPLE.COM -s
-r指定配置的realm领域名
出现 Loading random data 的时候另开个终端执行点消耗CPU的命令如 cat /dev/vda > /dev/urandom 可以加快随机数采集
该命令会在 /var/kerberos/krb5kdc/ 目录下创建 principal 数据库
1.5 启动服务
chkconfig --level 35 krb5kdc on
chkconfig --level 35 kadmin on
systemctl start krb5kdc
systemctl start kadmin
1.6 创建Kerberos管理员
# 需要设置两次密码,当前设置为root
kadmin.local -q "addprinc admin/admin"
principal的名字的第二部分是admin,那么该principal就拥有administrative privileges
这个账号将会被CDH用来生成其他用户/服务的principal
1.7 测试kerberos
# 列出Kerberos中的所有认证用户,即principals
kadmin.local -q "list_principals"
# 添加认证用户,需要输入密码
kadmin.local -q "addprinc dy"
# 使用该用户登录,获取身份认证,需要输入密码
kinit dy
# 查看当前用户的认证信息
ticket klist
# 更新ticket
kinit -R
# 销毁当前的ticket
kdestroy
# 删除认证用户
kadmin.local -q "delprinc dy"