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

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

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

设计目标

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

  • 安全认证
    支持双因子认证机制,经过二维码、动态令牌等技术,控制帐号密码泄露风险,防止运维人员身份冒用和复用。
  • 高效运维
    自研SSH交互界面,简洁易用,方便管理大量主机,简化运维和安全操做,提高运维效率;门神登陆成功后支持资源机之间的无密码穿梭。
  • 操做审计
    全程记录运维人员的操做行为,操做内容支持各类维度信息查询,支持操做记录回放,将全程审计运维操做做为事件追溯的保障和事故分析的依据。
  • 职权管控
    将京东云服务树做为帐号和资源机受权信息的来源,统一运维入口,统一天然人与主机账号间的权限关系,统一运维操做审计管控点。
  • 高可用
    门神各模块实现分布式设计和部署,单节点问题不会影响整个系统正常提供服务;支持上万级别的并发会话运维能力。

Alt

设计细节

一、核心技术点

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

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

二、设计详情

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

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

门神用户操做界面通过开发团队反复打磨,简单易用,人机交互天然流畅,主界面为受权给用户的资源机信息,右边部分展现快捷键信息和登陆历史信息,下方是用户输入区,用户能够经过以下方式登陆资源机:安全

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

b、直接输入ip登陆;架构

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

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

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

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

Alt

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

Alt

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

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

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

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

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

相关文章
相关标签/搜索