堡垒跳板机实现——整体架构
背景介绍
最近,笔者接手公司的一项任务:建造服务器的堡垒跳板机。
关于跳板机的实现,其实简单版本网上一大堆,甚至更有开源堡垒机Jumpserver可供选择,方案很多。接下来会就我的实现方案,整理出几篇文章来做概要描述。
覆盖功能
正所谓兵马未动,粮草先行,在设计之前,先整理出我们一期中堡垒机要覆盖的基本功能点:
- 服务器统一账号权限管理,包括哪些用户可以对哪些服务器进行login,哪些用户有sudo权限;
- 用户行为记录,可在必要时回看审查;
- 用户登录校验审查;
现在初期的目标是将所有的linux服务器通过堡垒机进行管理把控,将来扩展下,同样可以通过ssh协议对 交换机、路由器、甚至是Windows进行管理(目前windows已经可以实现通过ssh登录,不过这种方式就没有图形界面了且只能通过powershell来进行管理)。
架构设计
基于以上几点功能点,设计架构如下:
下面对这个架构图做下说明:
整体分为三层,总体来说,
第一层 校验用户是否有登录堡垒机的权限;
第二层真正为用户分配权限,同时判断经过第一层的用户是否有对目标机器操作的权限;
第三层则是真正登录/操作服务器的方式,在这里我将服务器的auth+sudo权限通过ldap来进行分布式动态管理,稍后会有专门的说明;
第一层:
登录入口,凡是有堡垒机使用权限的均可以由此入口处登录成功。
涉及主要服务: 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验证。
未完待续
整体的架构说明就简单这样,接下来对就每一层的具体实现在分别和大家分享。
作者:刘阳龙Herman
来源:51CTO

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
堡垒跳板机实现——架构实现
总述 这是关于堡垒机实现的第二篇文章,主要阐述三层架构分别如何实现,包括第一层&第二层的设计与实现,即用户登录堡垒机的入口 & 授权验证, 第三层,如何通过ldap来统一管理服务器账号权限。 关于堡垒机三层架构可以参见前一篇blog:堡垒跳板机实现——整体架构 登录入口 先说第一层,这层的主要功能为检测用户是否有使用堡垒机的权限。这个很好理解,总不能来个匿名用户就可以让他随意使用堡垒机,虽说在二层授权验证这里可以有效的抵挡,但是,既然可以在第一层有效的对无效用户做快捷的拦截,为什么要放后呢? 验证的方式可以有很多种,比如,如果用linux用作第一层架构中的服务器,那么可以天然的使用linux的user auth作为检验机制,单纯为有使用权限的用户在服务器上adduser,单独创建一个唯一的32位的密码。 服务器定制 我们在这层的做法是 将用户验证与我们内部的动态Token服务相结合(类似google authenticator),同时还要提供友好的登录shell界面,这样的话单纯的使用user auth就不太能够达到我们的目的,这里,我们对一层服务器做了ssh登录all...
- 下一篇
零配置部署React
你想使用 React 来构建应用吗?“入门”是很容易的,可是接下来呢? React 是一个构建用户界面的库,而它只是组成一个应用的一部分。应用还有其他的部分——风格、路由器、npm 模块、ES6 代码、捆绑和更多——这就是为什么使用它们的开发者不断流失的原因。这被称为 JavaScript 疲劳。尽管存在这种复杂性,但是使用 React 的用户依旧继续增长。 社区应对这一挑战的方法是共享模版文件。这些模版文件展示出开发者们架构选择的多样性。官方的“开始入门”似乎离一个实际可用的应用程序相去甚远。 新的,零配置体验 受开发者来自 Ember.js 和 Elm 的经验启发,Facebook 的人们想要提供一个简单、直接的方式。他们发明了一个新的开发 React 应用的方法 :create-react-app。在初始的公开版发布的三个星期以来,它已经受到了极大的社区关注(超过 8000 个 GitHub 粉丝)和支持(许多的拉取请求)。 create-react-app 是不同于许多过去使用模板和开发启动工具包的尝试。它的目标是零配置的惯例-优于-配置,使开发者关注于他们的应用的不同之处。 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题