
随着京东云业务的飞速发展,其需要管理的物理机、虚机以及各类容器已经达到了数十万之巨,在如此数量如此庞大资源机如何管理的课题面前,京东云意识到必须开发自己的高效、安全、稳定的资源机管理系统,为京东云乃至整个京东集团各项业务的发展提供坚实可靠的后盾,“门神”系统在这种情况下应运而生,并在经过多次京东618、11.11等诸多重大活动的检验后,变得愈发成熟稳定。
设计目标
安全认证
支持双因子认证机制,通过二维码、动态令牌等技术,控制账号密码泄露风险,防止运维人员身份冒用和复用。高效运维
自研SSH交互界面,简洁易用,方便管理大量主机,简化运维和安全操作,提升运维效率;门神登录成功后支持资源机之间的无密码穿梭。操作审计
全程记录运维人员的操作行为,操作内容支持各种维度信息查询,支持操作记录回放,将全程审计运维操作作为事件追溯的保障和事故分析的依据。职权管控
将京东云服务树作为账号和资源机授权信息的来源,统一运维入口,统一自然人与主机帐号间的权限关系,统一运维操作审计管控点。高可用
门神各模块实现分布式设计和部署,单节点问题不会影响整个系统正常提供服务;支持上万级别的并发会话运维能力。

设计细节
1、核心技术点
多因子认证
用户登录relay采用密码+验证码方式,其中验证码可以选择基于云翼的6位数字验证码或者基于京东内部工作客户端(京me)的二维码扫描验证。kerberos认证
门神用户身份认证是基于kerberos协议,保证在非安全网络环境下的安全认证登录,并且实现一次登录relay后,在授权资源机之间可以免密穿梭。nsswitch扩展
使用nsswitch替代/etc/passwd实现用户信息的获取,该扩展部署到每台资源机,从doorgod-api模块获取登录账号的uid、gid信息。sudoers
基于sudoers实现基于角色的用户权限控制,运维角色可以sudo到root账号下操作,开发角色只能使用自己的账号操作,无法sudo。安全性
内部模块交互白名单机制,密码只签名、不传输;非对称加密保存密码;自动加黑机制防止被爆破;定时过期机制。
2、设计详情

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

b、直接输入ip登录;
c、输入应用名称或者ip进行模糊匹配,选择具体资源机登录;
d、输入右侧历史记录的index number登录(以“!”开始)。

kerberos模块
作为门神系统的安全认证模块,是保证京东云数十万线上机器安全运维的关键。该模块通过脚本实现从服务树获取资源机信息和从门神数据库(MySQL)获取用户信息,注册到其kerberos自己的数据库中,并且每分钟同步一次数据,保证数据的时效性。
dg-client客户端
dg-client是c语言实现的so文件,所有门神管控的资源机都需要安装该文件,并对资源机的nsswitch.conf文件追加该so文件的扩展信息,使得所有门神用户信息都通过该so文件获取。另外,kerberos配置文件也需要下载到资源机的etc目录下。

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


DevOps专题 | 大型企业级监控系统设计
DevOps专题 | 监控,可观测性与数据存储
在线公开课 | 京东云监控系统设计及落地之路



