随着京东云业务的飞速发展,其需要管理的物理机、虚机以及各类容器已经达到了数十万之巨,在如此数量如此庞大资源机如何管理的课题面前,京东云意识到必须开发自己的高效、安全、稳定的资源机管理系统,为京东云乃至整个京东集团各项业务的发展提供坚实可靠的后盾,“门神”系统在这种情况下应运而生,并在经过多次京东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等诸多重大活动提供运维支持保障,成为助力京东云快速、高质量发展的重要力量之一。门神团队正在开发门神系统的控制台产品-堡垒机,该产品将以开源版本和商业版本两种方式发布,请各位读者朋友多提宝贵意见。
点击“阅读”了解京东云翼产品!
欢迎点击“京东云”了解更多精彩内容