堡垒跳板机实现——总体架构

背景介绍

最近,笔者接手公司的一项任务:建造服务器的堡垒跳板机。linux

关于跳板机的实现,其实简单版本网上一大堆,甚至更有开源堡垒机Jumpserver可供选择,方案不少。接下来会就个人实现方案,整理出几篇文章来作概要描述。shell

覆盖功能

正所谓兵马未动,粮草先行,在设计以前,先整理出咱们一期中堡垒机要覆盖的基本功能点:windows

  • 服务器统一帐号权限管理,包括哪些用户能够对哪些服务器进行login,哪些用户有sudo权限;api

  • 用户行为记录,可在必要时回看审查;服务器

  • 用户登陆校验审查;架构

如今初期的目标是将全部的linux服务器经过堡垒机进行管理把控,未来扩展下,一样能够经过ssh协议对 交换机路由器、甚至是 Windows进行管理(目前windows已经能够实现经过ssh登陆,不过这种方式就没有图形界面了且只能经过powershell来进行管理)。ssh

架构设计

基于以上几点功能点,设计架构以下:
图片描述分布式

下面对这个架构图作下说明:google

总体分为三层,整体来讲,
第一层 校验用户是否有登陆堡垒机的权限;
第二层真正为用户分配权限,同时判断通过第一层的用户是否有对目标机器操做的权限;
第三层则是真正登陆/操做服务器的方式,在这里我将服务器的auth+sudo权限经过ldap来进行分布式动态管理,稍后会有专门的说明;spa

第一层:
登陆入口,凡有堡垒机使用权限的都可以由此入口处登陆成功。
涉及主要服务: user login shell
服务主要功能:

  • 读取用户信息,判断是否有登陆权限;

  • 调用动态Token服务,验证用户passwd;

  • 调用动态token服务,实现二维码扫码快速登陆;

  • 调用第二层中的受权服务api,获取&判断用户的login权限;

  • 记录用户操做日志;

关联服务:

  • 动态Token服务,相似于google auth,每一个人的动态码均不同,每分钟update一次,以此作登陆堡垒机的校验,固然若是想简单,单独分配一个静态密码也能够;

第二层:
受权服务管理,获取登陆用户当前的权限ip列表,判断用户的操做是否符合预受权。
涉及主要服务:受权管理服务

服务主要功能:

  • 设置用户/team的 权限列表;

  • 将权限数据下发至第三层的ldap集群;

  • 提供api获取用户的权限list;

关联服务:

  • CMDB,以cmdb中的服务树为基本单位作受权,同时在cmdb中判断受权的服务器对象是否有效;

  • OA,以oa中的用户组为基本单位作权限授予,同时基于oa来判断用户是否有效;

第三层:
登陆实体服务器&执行命令;
将全部目标服务器的ssh登陆体系对接ldap集群,经过在ldap中设置用户的publickey & sudo等信息,来统一控制用户的登陆权限&sudo权限。

目标规模:
使用两台服务器作ldap主从集群,全部实体服务器对接此集群,从而统一进行auth验证。

未完待续

总体的架构说明就简单这样,接下来对就每一层的具体实如今分别和你们分享。

相关文章
相关标签/搜索