Kerberos 入门实战 (1)--Kerberos 基本原理
Kerberos 是一种由 MIT(麻省理工大学)提出的网络身份验证协议,它旨在通过使用密钥加密技术为客户端和服务器应用程序提供强身份验证,本文主要介绍 Kerberos 的基本原理。
1、Kerberos 是什么
Kerberos 一词取自于古希腊神话中的 Cerberus(刻耳柏洛斯),它是 Hades(哈迪斯)的一条凶猛的三头保卫神犬;
Kerberos 是一种基于加密 Ticket 的身份认证协议,主要由三个部分组成:Key Distribution Center (即KDC)、Client 和 Service:
客户端会先访问两次 KDC,然后再访问目标服务,如:HTTP 服务、Zookeeper 服务、Kafka 服务等。
2、Kerberos 基本概念
2.1、Principal
Principal 可以认为是 Kerberos 世界的用户名,用于标识身份。principal 主要由三部分构成:primary,instance(可选) 和 realm。包含 instance 的 principal,一般会作为 server 端的 principal,如:Zookeeper,NameNode,HiverServer 等;不含有 instance 的 principal,一般会作为客户端的 principal,用于身份认证。例子如下图所示:
2.2、Keytab
相当于“密码本”,包含了多个 principal 与密码的文件,用户可以利用该文件进行身份认证。
2.3、Ticket Cache
客户端与 KDC 交互完成后,包含身份认证信息的文件,短期有效,需要不断renew。
2.4、Realm
Kerberos 中的一个 namespace,不同 Kerberos 环境,可以通过 realm 进行区分。
2.5、KDC
Key Distribution Center,是 Kerberos 的核心组件,主要由三个部分组成:
Kerberos Database: 包含了一个 Realm 中所有的 principal、密码与其他信息;默认是 Berkeley DB。
Authentication Server(AS): 进行用户信息认证,为客户端提供 Ticket Granting Tickets(TGT)。
Ticket Granting Server(TGS): 验证 TGT 与 Authenticator,为客户端提供 Service Tickets。
3、Kerberos 基本原理
1.客户端与 AS 或 TGS 交互,都将获取到两条信息,其中一条可以解密,另外一条无法解密。
2.客户端想要访问目标服务不会直接与 KDC 交互。
3.KDC Database 包含有所有客户端和服务的密码。
4.密钥是密码加 salt 后经过哈希处理后得到的。密钥是由管理员生成的,并分发到客户端和服务。
5.KDC 本身使用主密钥进行加密,以增加从数据库中窃取密钥的难度。
6.Kerberos 中信息加密方式一般是对称加密,也可使用成非对称加密。
4、Kerberos 认证过程
这里以客户端访问 HTTP 服务为例,解释整个认证过程。
完整认证过程,请看如下文章:
Kerberos 入门实战(1)--Kerberos 基本原理
相关文章:
Kerberos 入门实战(1)--Kerberos 基本原理
Kerberos 入门实战(2)--Kerberos 安装及使用
Kafka系列(3)--Kafka开启Kerberos认证
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)