ES Xpack Kerberos认证流程优化

2024-06-17 03:48

本文主要是介绍ES Xpack Kerberos认证流程优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小序

ES官方Xpack在服务端已经实现了Kerberos认证,会玩的小伙伴配置成功后,可以使用curl命令成功的发起认证请求;然而,由于RestClient客户端并没有默认集成Kerberos认证的能力,如果要使用Kerberos认证功能,必然要自己实现客户端传递认证token到服务端的逻辑,也可以把这段逻辑固化到RestClient.java或者RestClientBuilder.java中(笔者之前的文章中关于这块有大概的介绍)。

然而,还有一个问题,经过系统的测试,笔者发现Kerberos开启之后的性能几乎只有非安全模式的20%-50%(实测,如果测试用例不一样,可能结果和我这个也不一致),其实这个问题原因很简单,经过验证,发现每一次请求在ES的服务端都会验证Kerberos token的有效性,这样做固然安全,但是也就是这么个几乎不到ms级别的逻辑,导致了压测数据令人非常不满意。虽然我拥有了安全,但是性能也太低了吧,好吧,怪不得很多做过Kerberos认证的小伙伴那么讨厌它。

其实这个可以优化,其中一个优化逻辑就是使用Cookie机制,这也不是什么新玩意儿,如果有人接触过HW或者其他厂家的大数据平台,假如你使用过安全模式,又恰好注意到他们的请求Header的话,也许都会发现Cookie的蛛丝马迹。

说白了就是:既然你Kerberos认证慢,那我用Cookie打辅助,Kerberos认证通过的客户端可以不再验证Kerberos token,而是使用Cookie来简单的验证即可。

思路

  • 客户端
  1. 客户端向服务端发送请求,假如是第一次认证(没有收到过服务端Response),那么采用Kerberos认证的方式发送Kerberos ticket到服务端去认证
  2. 假如不是第一次认证(服务端Response消息中有不能伪造的Set-Cookie),那么解析并判断Cookie的有效性,判断是否过期,是否符合格式等,如果一切正常,那么将Set-Cookie的信息转化为Cookie发送给服务端
  • 服务端
  1. 判断请求中是否有Authorization的Header,是的话路由给Kerberos realm处理,再判断是否有Cookie,有的话走Cookie判断流程(仿伪验证),验证通过直接处理请求
  2. 假如没有Cookie,验证Kerberos token的有效性,如果验证成功,生成Set-Cookie的Header,并返回给客户端
  • 注意:
  1. 为了防止伪造Cookie,服务端需要利用一定的方式对Cookie验证,最大可能降低非安全性(其实如果对业务逻辑完全了解,笔者认为也许Cookie就像一张白纸一样透明。。。)
  2. Cookie中最好必须携带认证通过的user信息,认证域信息,以及timestamp信息
  3. 设计良好的验证算法,保证Cookie验证的速度

实践

笔者阅读了源码后尝试的抛砖引玉的方案,注意,Kerberos不是ES官方的免费特性,小伙伴们在使用的时候注意不要引起不必要误会哦~~

  1. AuthenticationService类是ES官方所有认证域的入口类,在这个类中RestRequest以及ThreadContent会师,方便我们把请求中的Cookie信息传递给ThreadContent,即如果Header中存在Cookie Header,我们就put到ThreadContent的后续Header中,如果是Kerberos的请求,就会路由到KerberosRealm类去处理
  2. KerberosRealm类是Kerberos认证的入口类,关键的Kerberos认证逻辑都在这个类里面进行,必要的功能会分解到其他辅助类,在token方法中,负责解析ThreadContent,这个时候如果收到携带Cookie Header的请求,那么解析Cookie Header的内容作为认证Token,否则仍然解析Kerberos ticket作为认证的token;另外,authenticate方法负责在Kerberos认证成功的前提下生成Set-Cookie,假如不是第一次认证,每次都转发Set-Cookie给Response消息
  3. KerberosAuthenticationToken类负责真正的解析token,把token的本质面目揭示出来,发送给KerberosTicketValidator去验证
  4. KerberosTicketValidator类验证token是不是cookie格式的请求以及正确性,是的话直接认证,否则继续走Kerberos ticket的认证
  5. RestClient以及RestClientBuilder负责处理客户端Cookie响应逻辑,并且在Cookie即将超时、Kerberos subject即将超时、或者意外导致Cookie清空的情况下,刷新认证信息

经过笔者尝试,新的认证逻辑仍然比非安全模式(开箱即用的ES)性能上慢了10%左右,毕竟有所进步吧,记录以留念。

这篇关于ES Xpack Kerberos认证流程优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068399

相关文章

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如:

服务器雪崩的应对策略之----SQL优化

SQL语句的优化是数据库性能优化的重要方面,特别是在处理大规模数据或高频访问时。作为一个C++程序员,理解SQL优化不仅有助于编写高效的数据库操作代码,还能增强对系统性能瓶颈的整体把握。以下是详细的SQL语句优化技巧和策略: SQL优化 1. 选择合适的数据类型2. 使用索引3. 优化查询4. 范式化和反范式化5. 查询重写6. 使用缓存7. 优化数据库设计8. 分析和监控9. 调整配置1、

Java中如何优化数据库查询性能?

Java中如何优化数据库查询性能? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java中如何优化数据库查询性能,这是提升应用程序响应速度和用户体验的关键技术。 优化数据库查询性能的重要性 在现代应用开发中,数据库查询是最常见的操作之一。随着数据量的增加和业务复杂度的提升,数据库查询的性能优化显得尤为重

打包体积分析和优化

webpack分析工具:webpack-bundle-analyzer 1. 通过<script src="./vue.js"></script>方式引入vue、vuex、vue-router等包(CDN) // webpack.config.jsif(process.env.NODE_ENV==='production') {module.exports = {devtool: 'none

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)  标签: 编码邓白氏编码申请流程苹果开发者账号申请 2016-07-08 16:13  2274人阅读  评论(2)  收藏  举报   分类: 技术  苹果开发  邓白氏编码申请 版权声明:本文为博主原创文章,未经博主允许不得转载。     申请公司的苹果开发者账号和企业级的苹

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求,包括注册资本、人员配置、技术条件等。 专业技术人员配置: 雇佣或签约符合资质要求的专业技术人员,包括但不限于:一级注册结构工程师2名、一级注册建筑师2名、注册暖通工程师1名、注册供配电工

黑龙江等保测评的具体流程是怎样的

黑龙江等保测评的具体流程 黑龙江等保测评是根据《中华人民共和国网络安全法》及相关法律法规,对信息系统安全保护能力进行评估和验证的过程。以下是黑龙江等保测评的具体流程: 系统定级:根据业务、资产、安全技术、安全管理等方面的情况,对企业的安全防护水平进行评估,编制定级报告,为客户提供技术支持,协助客户编制定级报告,并组织相关专家对定级报告进行评估。 系统备案:持定级报告及登记表到当地的公安网监

Clickhouse 的性能优化实践总结

文章目录 前言性能优化的原则数据结构优化内存优化磁盘优化网络优化CPU优化查询优化数据迁移优化 前言 ClickHouse是一个性能很强的OLAP数据库,性能强是建立在专业运维之上的,需要专业运维人员依据不同的业务需求对ClickHouse进行有针对性的优化。同一批数据,在不同的业务下,查询性能可能出现两极分化。 性能优化的原则 在进行ClickHouse性能优化时,有几条