美团数据平台Kerberos优化实战

针对美团数据平台KDC服务处理能力不足和监控不可靠的问题,本文通过压测实验,优化了KDC服务的多进程、RAID配置及PREAUTH属性,使单服务器处理性能提升10倍以上,并设计了KDC监控接口,提高了服务的可靠性。

背景

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户端、服务器端的应用程序提供强大的认证服务。

作为一种可信任的第三方认证服务,Kerberos是通过传统的密码技术(如:共享密钥)执行认证服务的,被Client和Server同时信任。KDC是对该协议中第三方认证服务的一种具体实现,一直以来都是美团数据平台的核心服务之一,在Hive、HDFS、YARN等开源组件的权限认证方面有着广泛的应用。该服务将认证的密钥事先部署在集群的节点上,集群或者新节点启动时,相应节点使用密钥得到认证。只有被认证过节点才能被集群所接纳。企图冒充的节点由于没有相关密钥信息,无法与集群内部的节点通信,从而有效的确保了数据的安全性、节点的可信赖性。

但随着平台业务的快速增长,当前线上KDC的处理能力不足和不能可靠监控的问题被凸显的日益严重:线上单台KDC服务器最大承受QPS是多少?哪台KDC的服务即将出现压力过大的问题?为什么机器的资源非常空闲,KDC的压力却会过大?如何优化?优化后瓶颈在哪儿?如何保证监控指标的全面性、可靠性和准确性?这都是本文需要回答的问题。从本次优化工作达成的最终结果上来看,单台服务器每秒的处理性能提升16倍左右,另外通过共享内存的方式设计了一个获取KDC各项核心指标的接口,使得服务的可用性进一步提升。

为方便大家,表1总结并解释了本文中后续会涉及到一些专业名词的简称:

表1 专业名词解释

图1为美团数据平台KDC当前服务架构,目前整个KDC服务部署在同一个IDC。

图1 KDC主体流程图

KDC原理介绍

Client、 KDC和Server在认证阶段主要有Client和KDC的AS、Client和KDC的TGS以及Client和Server的交互三个过程,下文将详细介绍三个过程的交互,其中图2中的步骤1和2、3和4、5和6分别对应下文的A、B、C三部分:

图2 KDC原理图

A. Client和AS的交互

  1. 用户以明文的形式发送自己的信息、以及想要申请的TGT Principal(默认为KDC的TGT:krbtgt/REALM@REALM)等信息给AS服务;
  2. AS服务验证该用户信息存在数据库中后,给客户端返回两大块信息:
    • 使用用户的密钥加密其申请的TGT和一个Session Key返回用户,用户得到加密信息后,使用自己密钥解密得到其申请的TGT和Session Key(后续都简称 SKCandK)。
    • 以KDC自身密钥加密用户申请的TGT、SKCandK、用户自己信息等;简称{TGT}Ktgs,该部分信息被Client保存在本地。

B. Client和TGS的交互

  1. Client访问TGS获取访问网路中某一Server的ticket请求。Client端会把第一部分中保存在本地的{TGT}Ktgs和用SKCandK加密的客户端信息发送KDC的TGS模块;
  2. TGS收到请求后,检查请求Server存在数据库中后,用自己的密钥解密得到TGT中的SKCandK,然后便可以解密得到用户的信息并验证其合法性;通过后,TGS会生成一个新的Session Key,简称SKCandS;同时返回两部分信息:
    • 用SKCandK加密的SKCandS、能够访问Ser
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值