用户认证
9.2 用户认证
平台用户认证体系通过 ldap + kerberos 实现对系统中访问用户的身份认证。
ldap介绍
Lightweight Directory Access Protocol,即“轻量级目录访问协议”。能够通过server + client(服务端+客户端)的方式,帮助我们进行集中的用户(账号)管理。
相关概念
schema 用于控制目录中各种条目所拥有的对象类以及各种属性的定义,可以理解成是一个数据模型
objectClass 对象类
person
posixAccount
posixGroup
shadowAccount
uidObject
organizationalRole
organizationalUnit
organizationalPerson
inetOrgPerson
属性
dn 唯一标志名
uid 通常指一个用户的登陆名称
sn 通常指一个人的姓氏
objectClass 特殊的属性
dc 通常指定一个域名
ou 指定一个组织单元的名称
LDIF文件 交换数据格式的简称,是存储LDAP配置信息及目录内容的标准文本文件格式,通常用来完成openldap数据的导入、导出、修改。
数据结构
kerberos介绍
Kerberos是一套安全的认证系统。通过Kerberos我们可以实现对系统中访问用户的身份的认证,防止用户伪造身份而得到不属于自己的权限。
相关概念
principal:认证的主体,简单来说就是用户名。
realm:realm有点像编程语言中的namespace。在编程语言中,变量名只有在某个namespace里才有意义。同样的,一个principal只有在某个realm下才有意义,所以realm可以看成是principal的一个容器或者空间。相对应的,principal的命名规则是what_name_you_like@realm。在Kerberos中大家都约定俗成用大写来命名realm, 例如EXAMPLE.COM。
password:某个用户的密码,对应于Kerberos中的master_key。password可以存在一个keytab文件中,所以kerberos中需要使用密码的场景都可以用一个keytab作为输入。
credential:是证明某个人确定是自己/某一种行为的确可以发生的凭据。 在不同的使用场景下, credential的具体含义也略有不同:
对于某个principal个体而言,credential就是principal的password。
在Kerberos认证的环节中,credential就意味着各种各样的ticket。
认证原理
Kerberos是一种基于对称密钥技术的身份认证协议,它作为一个独立的第三方的身份认证服务,可以为其它服务提供身份认证功能,且支持 SSO (即客户端身份认证后,可以访问多个服务如 HBase/HDFS 等)。
Kerberos协议过程主要有两个阶段,第一个阶段是KDC对Client身份认证,第二个阶段是Service对Client 身份认证。
KDC:Kerberos的服务端程序。
Client:需要访问服务的用户(principal),KDC和Service会对用户的身份进行认证。
Service:集成了Kerberos的服务,如HDFS/YARN/HBase等。
KDC对Client身份认证
当客户端用户(principal)访问一个集成了Kerberos的服务之前,需要先通过KDC的身份认证。
若身份认证通过,则客户端会获取到一个TGT(Ticket Granting Ticket),后续就可以使用该TGT去访问集成了Kerberos的服务。
Service对Client身份认证
当用户获取TGT后,就可以继续访问Service服务。它会使用TGT以及需要访问的服务名称(如 HDFS)去KDC获取SGT(Service Granting Ticket),然后使用SGT去访问 Service,Service会利用相关信息对Client进行身份认证,认证通过后就可以正常访问Service服务。
以上内容对您是否有帮助?