大数据权限认证解决方案Kerberos

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

前言

最近一段时间和数仓同学接触的比较多,算是一个知识点的扫盲把,kerberos认证是大数据权限认证的一种解决方案。
那么什么是kerberos呢?

Kerberos简介

Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证,该词为麻省理工学院为这个协议开发的一套计算机软件,软件设计采用CS架构,并且能够进行互相认证,客户端和服务器都可对对方进行身份验证,可以用于防止窃听,防止重放攻击,保护数据完整性等场合,是一种应用对称密钥体进行密钥管理的系统

Kerberos基本概念

1.KDC : 密钥分发中心,负责管理发放票据,记录授权

2.Realm: Kerberos管理领域的标识

3.principal:当每添加一个用户或服务的时候都需要向kdc添加一条principal,principal的形式为:主名称/实例名称@领域名

4.主名称: 主名称可以是用户名或服务名,表示是用于提供各种网络服务(如hdfs,yarn,hive)的主体

Kerberos 认证原理

image.png

基于kerberos安全认证部署案例

1. Kerberos部署

1.1 安装

kerberos主节点安装服务

yum install krb5-server -y

1.2 配置文件

kdc服务器三个配置文件

1
2
3
4
5
6
bash复制代码# 集群上所有节点都有这个文件而且内容同步 
/etc/krb5.conf
# 主服务器上的kdc配置
/var/kerberos/krb5kdc/kdc.conf
# 能够不直接访问 KDC 控制台而从 Kerberos 数据库添加和删除主体,需要添加配置
/var/kerberos/krb5kdc/kadm5.acl
  1. 修改/etc/krb5.conf
  2. 修改/var/kerberos/krb5kdc/kdc.conf
  3. 创建/var/kerberos/krb5kdc/kadm5.acl

1.4 创建Kerberos数据库

1
2
bash复制代码# 保存路径为/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 启动服务

1
2
3
4
bash复制代码chkconfig --level 35 krb5kdc on
chkconfig --level 35 kadmin on
systemctl start krb5kdc
systemctl start kadmin

image.png

1.6 创建Kerberos管理员

1
2
bash复制代码# 需要设置两次密码,当前设置为root 
kadmin.local -q "addprinc admin/admin"

principal的名字的第二部分是admin,那么该principal就拥有administrative privileges

这个账号将会被CDH用来生成其他用户/服务的principal

1.7 测试kerberos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bash复制代码# 列出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"

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%