背景:被测的项目是做登录权限管理(用户账密信息存在mysql中)及底层权限管控(在登录及界面操作时,比如创建一个项目,对应会在hdfs上创建对应的路径,及赋予用户所在组别的访问权限),其中底层权限的管控需要Ldap及kerberos,因此需要对权限管控的这一底层使用的组件进行了解。
(1)各组件简介及关联关系
1.1 LDAP
原文:https://blog.csdn.net/gotohbu/article/details/4251336
LDAP是一个轻量级的产品(LightWeight),是一个Directory(D),存取的协议(Access Protocol)。 LDAP是一个数据库,但是又不是一个数据库。说他是数据库,因为他是一个数据存储的东西。但是说他不是数据库,是因为他的作用没有数据库这么强大,而是一个目录。好比电话簿。我们用电话簿的目的是为了查找某个公司的电话,在这个电话簿中附带了一些这个公司的基本信息,比如地址,经营范围,联系方式等。电话簿由电话公司进行维护,因此写是由他们去写,去组织。写完了,组织好了,就完成了,以后再写,再组织的次数是有限的。而其作用是为了查找。LDAP也是类似,目的不是为了写,主要是为了查找。 LDAP作为一个统一认证的解决方案,主要的优点就在能够快速响应用户的查找需求。
账号解释:
从概念上说,LDAP分成了DN, OU等。OU就是一个树,DN就可以理解为是叶子,叶子还可以有更小的叶子。但是LDAP最大的分层按照IBM的文档是4层。
1.2 Kerberos
Kerberos主要是用来做网络通信时候的身份认证。
kerberos的两种认证方式。
(1)直接通过kinit命令认证
(2)通过keytab文件认证
kadmin -s kdcserver的ip -p kdc管理员 -kt /data/alltest/PORTAL/iam_1803/conf/server/管理员.keytab -q "执行命令"
执行以上命令需要执行的机器按章Kerberos客户端。
重点配置文件:/etc/krb5.conf,这里不做深入讲解。
Kerberos原理见:https://www.cnblogs.com/ulysses-you/p/8107862.html
1.3关联关系
当被测应用需要进行账号认证时,会请求KDC server即Kerberos的服务端(请求者需要安装客户端,客户端中存有KDC所在机器的域名),kdc拿到账号密码后,会向ldap中查询密码的请求,之前已经解释过了这个步骤是很快的,且大量并发时比mysql要快。如果密码匹配则通过认证。通过认证后,就可以在机器上进行其他操作。
引申介绍:为何需要做需要做底层账号权限管控呢?
如下所示是部署图,比如说我的需求是到大数据集群中的某一结点A建目录,首先认证该账号有没有权限,认证通过后,因为SSSD服务已经将租户账号映射成本地账号了,所以可以利用该账号登陆到机器A上完成目录创建过程。
可以看出在大数据平台机器太多、租户太多,需要进行linux层面及应用层面的统一,这也就是KERBEROS+LDAP这一组合的构建的原由。