快速入门Kerberos认证

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速入门Kerberos认证

01 引言

Kerberos是一个计算机网络认证协议,用于实现网络中的身份验证和安全通信。它提供了一种安全的方式,允许用户在一个不可信任的网络环境中进行身份验证(关键点:Security-安全Authentication-认证)。

02 核心概念

在学习kerberos之前,先熟悉一下其核心概念,首先看看涉及到哪些对象概念:

概念 说明
KDC 密钥分发中心(Key Distribution Center,KDC)是ASTGS的组合,是Kerberos系统的核心组件,KDC负责颁发和管理凭据和票据,以及处理用户的身份验证请求
AS 认证服务器(Authentication Server,AS)Kerberos系统中的第一个组件,负责用户的身份验证,用户向AS发送凭据以请求服务票据(Ticket Granting Ticket,TGT)
TGS 服务票据授予服务器(Ticket Granting Server,TGS)Kerberos系统中的第二个组件,负责颁发服务票据,用户使用TGTTGS请求服务票据,该票据用于访问特定服务。
Client 客户端(Client) 是发起Kerberos身份验证过程的用户或应用程序,它请求TGT和服务票据,并使用它们访问受保护的资源。
Service 服务(Service) 是提供特定功能或资源的网络应用程序或服务器,服务通过验证和解析服务票据来验证客户端的身份,并授权客户端访问资源。

与票据相关的概念:

概念 说明
Ticket 凭据(ticket) 是客户端用于证明其身份的信息,在Kerberos中,通常使用用户名(Principal)和密码(Keytab)作为凭据进行身份验证(PrincipalKerberos中用于表示身份标识的字符串,通常采用"主体名称@REALM"的格式,Keytab文件是一个用于存储Principal和对应密钥的安全文件) 。
TGT TGT(Ticket Granting Ticket) 是由AS颁发给客户端的加密票据,用于请求服务票据,客户端在TGS请求过程中使用TGT进行身份验证。
Service Ticket 服务票据(Service Ticket) 是由TGS颁发给客户端的加密票据,用于访问特定服务,客户端将服务票据发送给服务以证明其身份
Session Key 会话密钥(Session Key) 是客户端和服务之间用于加密和解密通信的对称密钥,在Kerberos中,会话密钥在TGS颁发的服务票据中传递给客户端

其它概念:

概念 说明
Realm 安全领域(Realm)是Kerberos系统的逻辑边界,包含一组受信任的用户、服务和KDC ,安全领域通常对应于网络中的域或领域树
安全策略 安全策略是定义Kerberos系统中访问和授权规则的规则集合,它确定谁可以访问哪些服务和资源,并规定了密码策略和会话策略等安全设置。

03 流程图

流程图如下(图片来源:https://seevae.github.io

下面是各个步骤的说明:

  • step1:客户端向认证服务器(AS)发送凭据(通常是用户名Principal和密码keytab)以请求TGT;
  • step2:AS验证客户端的凭据,如果验证通过,生成一个TGT,并使用客户端的密码加密该TGT,发送回客户端,客户端收到TGT后,存储在本地;
  • step3:客户端向服务票据授予服务器(TGS)发送TGT以请求访问特定服务的服务票据,TGS验证客户端的TGT,并生成一个服务票据(Service Ticket);
  • step4:TGS使用服务的密钥(通常从服务的keytab文件中获取)加密服务票据,并发送回客户端。
  • step5:客户端收到服务票据后,可以使用它访问特定的服务,客户端向服务发送服务票据以证明其身份。
  • step6:服务使用服务票据中的会话密钥(Session Key)进行验证,如果验证通过,客户端被授权访问服务。

注意,关于票据的时效如下:

  • TGT(Ticket Granting Ticket) 通常是一次性票据:它用于获取服务票据,一旦TGT用于获取服务票据,TGT即失效,需要重新进行身份验证来获取新的TGT;
  • 服务票据(Service Ticket) 通常是临时票据:客户端使用TGT向TGS请求服务票据,服务票据会包含一个会话密钥,它在一段时间内有效用于与服务进行安全通信,一旦会话结束或过期,临时票据也会失效;
  • 服务的密钥(Service Key) 通常是永久票据:服务的密钥是在服务启动时从KDC获取的,并且在服务的生命周期内保持有效,客户端在访问服务时使用服务票据进行身份验证,而服务使用其永久票据(服务的密钥)进行验证。

ok,到了这里,相信大家也理解了kerberos的一些概念和流程了,为了更深入票据(ticket)在整个流程中是如何改变的,我在维基百科里找到了一张很不错的图片,大家可以过一下:

04 文末

Kerberos被广泛运用在大数据生态中,甚至可以说是大数据身份认证的事实标准了,本文只是一个快速入门讲解,实际的Kerberos协议中还有更多的细节和步骤,如票据的过期和续订等。此外,实际的Kerberos部署可能还涉及其他组件和步骤,例如密钥分发中心(KDC)的分布式部署和凭据缓存等,有机会再写kerberos in hadoop相关的文章😁。

希望能帮助到大家,谢谢大家的阅读,本文完!

目录
相关文章
|
存储 BI 数据安全/隐私保护
认证授权中的基本概念
认证授权中的基本概念
101 0
|
18天前
|
安全 API 数据安全/隐私保护
基于Keycloak的认证与授权
【10月更文挑战第27天】Keycloak 是一个开源的身份和访问管理解决方案,提供用户认证、授权、单点登录等功能,保护应用程序和服务的安全。其认证流程包括用户登录、凭证验证、身份验证令牌生成、令牌返回给应用、应用验证令牌、用户身份确认。Keycloak 支持资源定义、权限定义、角色创建与分配、用户角色分配、访问请求与授权决策等授权流程。其优势在于集中式管理、高安全性、良好扩展性和社区支持。适用于企业应用集成、微服务架构、移动应用及 API 安全等多种场景。
|
6月前
|
NoSQL 安全 MongoDB
MongoDB安全机制:认证、授权与加密
【4月更文挑战第30天】MongoDB提供全面的安全机制,包括认证(用户名/密码、LDAP、Kerberos、x.509证书)、授权(基于角色的访问控制,RBAC)和加密(TLS/SSL、透明数据加密TDE、字段级加密FLE),确保数据保密性、完整性和可用性。通过合理配置这些机制,企业可保障数据安全,应对不断变化的安全威胁。
|
存储 缓存 安全
Kerberos认证快速入门
快速入门kerberos认证
647 0
|
存储 缓存 安全
Kerberos 概述:介绍网络身份验证
Kerberos 概述:介绍网络身份验证
657 0
|
存储 开发框架 安全
快速理解 IdentityServer4 中的认证 & 授权
在实际的生产环境中,存在各种各样的应用程序相互访问,当用户访问 `app` 应用的时候,为了安全性考虑,通常都会要求搭配授权码或者安全令牌服务一并访问,这样可有效地对 `Server` 端的 `API` 资源起到一定程度的有效保护...
442 0
快速理解 IdentityServer4 中的认证 & 授权
|
XML 安全 数据格式
Jasny SSO是否支持SAML认证?底层原理是什么?
Jasny SSO是否支持SAML认证?底层原理是什么?
Jasny SSO是否支持OAuth认证?底层原理是什么?
Jasny SSO是否支持OAuth认证?底层原理是什么?
|
分布式计算 资源调度 安全
Kerberos 简介|学习笔记
快速学习 Kerberos 简介
Kerberos 简介|学习笔记
|
XML JSON 安全
开源认证和访问控制的利器keycloak使用简介
开源认证和访问控制的利器keycloak使用简介
开源认证和访问控制的利器keycloak使用简介