运维守护神——数十万线上机器的守护【门神】

随着京东云业务的飞速发展,其需要管理的物理机、虚机以及各类容器已经达到了数十万之巨,在如此数量如此庞大资源机如何管理的课题面前,京东云意识到必须开发自己的高效、安全、稳定的资源机管理系统,为京东云乃至整个京东集团各项业务的发展提供坚实可靠的后盾,“门神”系统在这种情况下应运而生,并在经过多次京东618、11.11等诸多重大活动的检验后,变得愈发成熟稳定。

“门神”顾名思义,就是守护整个京东资源机云安全的守护神,是京东云平台自主研发的一套基于服务树角色授权的线上机器运维平台,该平台支持认证登录、系统运维和安全审计,可以对京东云平台所有的主机进行统一的访问控制、操作历史记录等,是符合4A的专业运维审计系统,构建统一、高效、安全运维通道,保障云端运维工作遵循法律法规要求、降低人为安全风险,提高运维效率。

设计目标

为了适应京东云业务快速发展、所需管理的物理机、虚机和容器数量指数级增加的现状,满足公司安全认证、高效运维、操作审计、职权管控的要求,门神设计初期就制定了如下目标:

  • 安全认证

支持双因子认证机制,通过二维码、动态令牌等技术,控制账号密码泄露风险,防止运维人员身份冒用和复用。

  • 高效运维

自研SSH交互界面,简洁易用,方便管理大量主机,简化运维和安全操作,提升运维效率;门神登录成功后支持资源机之间的无密码穿梭。

  • 操作审计

全程记录运维人员的操作行为,操作内容支持各种维度信息查询,支持操作记录回放,将全程审计运维操作作为事件追溯的保障和事故分析的依据。

  • 职权管控

将京东云服务树作为账号和资源机授权信息的来源,统一运维入口,统一自然人与主机帐号间的权限关系,统一运维操作审计管控点。

  • 高可用

门神各模块实现分布式设计和部署,单节点问题不会影响整个系统正常提供服务;支持上万级别的并发会话运维能力。

设计细节

1、核心技术点

门神系统涉及诸多技术,其中核心技术点包括:

  • 多因子认证

用户登录relay采用密码+验证码方式,其中验证码可以选择基于云翼的6位数字验证码或者基于京东内部工作客户端(京me)的二维码扫描验证。

  • kerberos认证

门神用户身份认证是基于kerberos协议,保证在非安全网络环境下的安全认证登录,并且实现一次登录relay后,在授权资源机之间可以免密穿梭。

  • nsswitch扩展

使用nsswitch替代/etc/passwd实现用户信息的获取,该扩展部署到每台资源机,从doorgod-api模块获取登录账号的uid、gid信息。

  • sudoers

基于sudoers实现基于角色的用户权限控制,运维角色可以sudo到root账号下操作,开发角色只能使用自己的账号操作,无法sudo。

  • 安全性

内部模块交互白名单机制,密码只签名、不传输;非对称加密保存密码;自动加黑机制防止被爆破;定时过期机制。

2、设计详情

从门神总体架构图可以看出,门神的数据源是京东云自研的核心数据模块(服务树模块),所有用户和资源机信息都是从服务树模块获取并保存到数据库和kerberos中的,并通过脚本实时同步服务树中变化的数据,从而保证数据会实时的同步到门神系统。门神主要模块包括relay、kerberos、relay-server、doorgod-api和需要安装到资源机的客户端dg-client,下文介绍结合核心模块的设计和实现。

  • relay模块

该模块是用户登录门神的“前端”,以独立容器方式启动,其sshd开启kerberos认证。用户使用ssh协议登录时需要输入用户名和密码,kerberos验证通过后登录容器;login-shell二次验证还需要用户输入从云翼获取的验证码,或者使用京me扫码验证,二次校验无误方可进入用户操作界面。


门神用户操作界面经过开发团队反复打磨,简单易用,人机交互自然流畅,主界面为授权给用户的资源机信息,右边部分展示快捷键信息和登录历史信息,下方是用户输入区,用户可以通过如下方式登录资源机:

a、输入主界面index number选择资源机登录;

b、直接输入ip登录;

c、输入应用名称或者ip进行模糊匹配,选择具体资源机登录;

d、输入右侧历史记录的index number登录(以“!”开始)。


recorder进行tty劫持,从而实现录屏功能,用户所有的操作都会被记录下来,通过syslog发送到kafka集群,最终被ES集群消费和存储,作为用户提供操作审计查询的数据源。

  • kerberos模块

作为门神系统的安全认证模块,是保证京东云数十万线上机器安全运维的关键。
该模块通过脚本实现从服务树获取资源机信息和从门神数据库(MySQL)获取用户信息,注册到其kerberos自己的数据库中,并且每分钟同步一次数据,保证数据的时效性。

  • dg-client客户端

dg-client是c语言实现的so文件,所有门神管控的资源机都需要安装该文件,并对资源机的nsswitch.conf文件追加该so文件的扩展信息,使得所有门神用户信息都通过该so文件获取。另外,kerberos配置文件也需要下载到资源机的etc目录下。

  • 日志存储

门神日志是由syslog服务来进行监控和发送到kafka集群的,日志解析服务会消费kafka中的数据,并进行解析,解析后数据发送到ES集群;
解析前的数据转存到京东云OSS中。

通过云翼可以按照目的ip、操作类型、关键字(支持精确匹配和模糊匹配)、时间进行查询操作日志,从而实现用户操作全程审计;门神还支持用户操作回放功能,能更加清楚的对用户操作进行审计。


门神系统为京东云软件开发、测试、运维人员提供了统一的运维入口,只需要记住一个密码就能登录所有授权主机,并自由的在授权主机之间穿梭,这极大的减轻了软件工程师们的工作负担,提升了工作效率。同时,又为运维安全提供了技术实现方面的保障,将审计工作贯彻到整个运维流程全过程中,切实保证了线上机器的运维安全。

当前,门神已经成为京东云线上机器运维的主要平台,成功为京东618、11.11等诸多重大活动提供运维支持保障,成为助力京东云快速、高质量发展的重要力量之一。门神团队正在开发门神系统的控制台产品-堡垒机,该产品将以开源版本和商业版本两种方式发布,请各位读者朋友多提宝贵意见。

点击“阅读”了解京东云翼产品!

欢迎点击“京东云”了解更多精彩内容

原文地址:https://www.cnblogs.com/jdclouddeveloper/p/11993985.html

时间: 2024-10-06 18:28:15

运维守护神——数十万线上机器的守护【门神】的相关文章

expect结合ssh遍历线上机器

有个需求,有个文件删除了,但是不确定线上机器还都存不存在 #!/home/work/.jumbo/bin/expect -f set timeout -1 set mac [lindex $argv 0] set password "***" spawn ssh [email protected]$mac expect { "(yes/no)?" { send "yes\r" expect "*password:" { sen

线上机器JVM参数配置

记录一下线上机器的JVM参数配置: CATALINA_OPTS="$CATALINA_OPTS -server -Djava.awt.headless=true -Xms2560m [JVM初始分配的堆内存 2.5G]-Xmx2560m [JVM最大可用堆内存 2.5G]-Xss256k [每个线程的堆栈大小]-XX:PermSize=128m [永久代大小]-XX:MaxPermSize=384m [永久代最大值]-XX:NewSize=1024m [新生代初始内存大小]-XX:MaxNewS

[自动运维]ant脚本打包,上传文件到指定服务器,并部署

1.根节点使用,表示根目录为当前目录,默认启动的target为build,项目名称为othersysm, <project basedir="." default="build" name="othersysm"> </project> 2.每一个target为一个执行命令,如果有依赖关系,则写为: <target depends="build-project" name="build&

python运维开发(二十一)----文件上传和验证码+session

内容目录: 文件上传 HTML Form表单提交 ajax提交 原生ajax提交 jQuery Ajax提交 验证码+session 文件和图片的上传功能

python运维开发(七)----面向对象(上)

内容目录: 面向对象应用场景 类和对象的创建 类中的__init__构造方法 self理解 面向对象的三大特性:封装.继承.多态 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处. 面向对象应用场景 当某一些函数具有相同参数时,可以

运维——在一台主机上创建多个网站

假设有很多个网站,那么如果每个网站都配一个服务器的话显然是很浪费的,其实一个服务器是能放很多个网站,具体实现步骤如下: 1.创建目录用来存放各个网站的信息,路径可以使用默认的也可以自己创建,此处使用默认的路径 创建了三个目录用来存放三个网站,如果想打开IP就能开到内容则可以直接在/var/www/html/下创建文件 2.编辑网站内容 3.修改配置文件vim /etc/httpd/conf.d/test.conf 一般情况下能不在主配置文件中修改就不在主配置文件中修改,大部分情况下可以在某个服务

运维架构

1.运维团队配置 运维团队分为:应用运维.系统运维.运维开发.监控运维.DBA团队和安全团队 团队分工: 应用运维:负责支持线上业务,各自会负责对应的业务线,主要职能是保证线上业务稳定性和同开发共同支撑对应业务,以及线上服务管理和持续优化. 运维开发:帮助运维提升工作效率,开发方便快捷的工具,实现运维平台化自动化. 系统运维:负责操作系统定制和优化,IDC管理和机器交付,以及跳板机和账号信息管理. 监控运维:负责发现故障,并第一时间通知相关人员,及时处理简单故障和启动降级方案等. 2.整体架构

[转载]系统运维秘诀大分享专题

系统运维秘诀大分享专题 本专题整合收录了有关系统运维/系统管理员工作和个人成长方面的各种心得分享.经验总结.以及必须牢记的一些准则,适合所有在运维领域有追求的技术人阅读.有些分享的层次比较深,有些则是运维的基础课,但通过翻看他人的心得,相信你总能有所收获. 1 Dormando的系统运维秘诀三部曲... 4 1.1 技术篇... 4 1.1.1 为变化而设计.... 4 1.1.2 使用自动的,可重复的构建过程.... 4 1.1.3 使用冗余.... 4 1.1.4 使用备份.... 5 1.

运维各类工作时间占比

按时间跨度的纬度把工作分为三大类:战略性.阶段性.日常性 一般战略性工作的时间跨度从半年到数年,阶段性工作一般跨度为一个季度左右,日常性工作跨度为一周到一个月 战略性工作 15%~25% 依据业务制定技术发展战略 发现业界新的技术 为业务发展.提高提供技术建议 阶段性工作 20%~30% 参与项目的部署运维 制定周期的运维工作计划 开展运维内部培训与向外学习 研究竞品技术与参考 参与定期更新业务版本 降低运维成本 重新规划线上架构与技术栈 日常性工作 40%~50% 处理各种突发业务故障 协助开