什么是 Kerberos
Kerberos 是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。
Kerberos 术语
KDC(Key Distribute Center)密钥分发中心
kdc负责存储用户信息,管理发放票据,所谓认证也就是用户的登录需要用户名和密码,这也是最基本的认证方式;那么KDC负责存储用户信息,也就是KDC内置的Database会存储用户的用户名和密码;那么kdc发放的票据是什么票据呢?这个票据是指某个用户访问服务时所需要的票据,相当于门票。
Realm
erberos所管理的一个领域或范围,称之为一个 Realm。Realme域又指的是什么呢?他指代的是Kerberos 所管理的一个领域或范围,所谓的领域也就是一系列的服务和用户。
Principal
Kerberos 所管理的一个用户或者一个服务,可以理解为 Kerberos 中保存的一个账号, 一个用户要想通过kerberos认证得需要一个账号和密码,同样的一个服务要想通过kerberos 认证也需要账号和密码。
其格式通常为primary/instance@realm。三个部分,用户名or服务名 / 实例(服务主机名)@域名;例如:root/admin@EXAMPLE.COM 如下图
keytab 秘钥文件
Kerberos 中的用户认证,可通过密码或者密钥文件证明身份,keytab 指密钥文件。kerberos有俩种认证方式:
Kerberos 认证原理
- 请求首先到AS认证服务器,进行身份认证,kinit命令进行认证,然后输入密码;
- 认证服务器会根据用户输入的账号和密码到数据库Database中查询对应的Principal,看是否正确,如果正确颁发临时的票据,这个票据就是TGT。
- 用户拿到这个用来申请服务票据的票据后,然后携带该票据TGT去访问票据授权服务器,
- 票据授权服务器TGS去数据库Database中查询服务是否为合法的服务;
- 票据授权服务器TGS查询到相关服务名和秘钥后,颁发票证给用户。
- 用户拿到这个TGT票证后然后才能访问我们的服务,比如上图拿到票证访问hdfs服务。