介绍

JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。

 

产品特色

  • 开源:零门槛,线上快速获取和安装;
  • 分布式:轻松支持大规模并发访问;
  • 无插件:仅需浏览器,极致的 Web Terminal 使用体验;
  • 多云支持:一套系统,同时管理不同云上面的资产;
  • 云端存储:审计录像云端存储,永不丢失;
  • 多租户:一套系统,多个子公司和部门同时使用;
  • 多应用支持:数据库,Windows 远程应用,Kubernetes。

背景

  • 我们公司的windows资产,以前都是让大家连接8年前的一个商用的跳板机奇治。老旧,数据混乱
  • 并且存在一个1.4.10的jumpserver。然后权限也非常的混乱。
  • 大家连接数据库查询数据,都是用一台共用的一台windows,然后从这台windows用数据库客户端链接。并且每一个人还拥有很多的数据库账号。数据库侧 那边开通了各种账号。
  • 反正就是特别的混乱
  • 并且没有任何的审计,然后上次出现了一个事故,线上的数据被删除清空了。最后是从备份恢复了数据。但是也缺少了点数据。幸好数据不是特别的重要
  • 之后领导就想整理这一块的东西

计划

  • 重新搭建新版jumpserver,替换老的jumpserver,以及商用的奇治跳板机
  • 以后windows linux资产都要通过新版的jumpserver登陆
  • 数据库需要从jumpserver登陆,权限细分到单库上面

设计

  • 无非就是在新版的jumpserver给用户新建各种服务器以及数据库的权限
  • 并且数据库,需要去数据库里面新建各种人的账号,但是这样的话跟之前一样了。不方便管理
  • 所谓有了规矩,规则的话。那么整个事情就变的 好维护,以及好管理了

服务器权限设计

  • 服务器权限的话 就分两种,app和root。
  • 一个普通用户的一个超级用户的
  • 每一个用户从jumpserver创建一个 资产授权。后期这个用户也好管理

数据库权限设计

问题反思

  • 如果都是人工操作的话,不免麻烦,服务器还好。但是数据库就比较麻烦,因为涉及到给数据库账号授权。那么你就得登陆数据库,然后授权。
  • 那么能不能直接弄一个自动化的形式,不需要人工干预。
  • 我在网上搜了,jumpserver确实有工单系统。但是这个是企业版的,我就是一个小打小闹的,企业版的要1年小几万。那肯定是不可能的,除非你们公司是大公司,对于jumpserver工单系统比较依赖
  • 而且很多公司 都是自己的工单系统
  • 最后我就准备自己写一个工单管理系统

展示

开源代码介绍

  1. 是在jumpserver(v3.10.9)上面二次开发出了一个简单的工单申请
  2. 用户可以申请服务器和mysql库的权限
  3. mysql 权限可以细分到库表
  4. 自动创建授权,不用人为干预

软件架构

jumpserver core代码
jumpserver lina代码

  1. 我这个是基于jumpserver v3.10.9 开发的。
  2. 大家可以试试别的版本,基本上只涉及到几个接口
  3. 只要这几个接口不变,我这个简单版的工单申请 就可以运行的
  4. 只需要在你的版本代码上面 新增几个接口就行
  5. 然后前端新增页面就行

代码接口介绍

# 我新增的接口主要有以下几个

# 都是在这个文件里面
jumpserver-ticket/jumpserver-v3.10.9/apps/perms/urls/user_permission.py # 具体接口 # 自己新增的 工单申请
# 这个接口是获取全部的资产的
path('mytickets/getassets/', api.mytickets.get_all_node), # 这个是创建申请服务器的工单接口
path('mytickets/apply/', api.perm_apply.perm_application), # 这个是创建申请mysql数据库权限的接口
path('mytickets/applydb/', api.perm_apply.perm_application_db), # 这个是查看自己的工单申请接口
path('mytickets/myapplication/', api.mytickets.my_application), # 这个是管理员查看并审批 用户申请的接口
path('mytickets/myapproval/', api.mytickets.my_myapproval), # 对接工单系统 # 这两个接口是因为 我们本身就有工单系统平台。
# 然后我给我们的开发专门写的两个接口 # 这个是创建服务器权限的接口
path('mytickets/createauthnodes/', api.mytickets.create_auth_nodes),
# 这个是创建mysql数据库权限的接口
path('mytickets/createauthmysql/', api.mytickets.create_auth_mysqls),

安装教程

安装的话 就按照官网的安装就行
大概步骤的话:
  1. 从官网下载代码,修改代码(下载我的代码)
  2. 先编译core代码,docker build -f Dockerfile-ce -t jumpserver/mycore-ce-v3-2:v3.10.9 .    最终会编译出一个镜像
  3. 编译lina前端代码,yarn build。 最终会编译出一个lina目录
部署core:
# 进入docker compose文件夹
cd /opt/jumpserver-installer-v3.10.8/compose # 批量替换core镜像
sed -i "s/mycore-ce-v3-1/mycore-ce-v3-2/g" *
cd .. # 停止服务
./jmsctl.sh stop # 启动服务
./jmsctl.sh start
部署lina:
# 因为前端打包出来的是一个lina文件夹
# 所以你可以再写一个dockerfile,以原始的lina镜像为基础,把这个文件给编译进去 # 我采用了一种比较最简单的方式 直接把文件复制进去,然后重启nginx
# 但是缺点就是容器重启了 那么你修改的lina代码就没有了,得再复制一遍
# 方式有很多种,看你采用哪种都行 docker cp lina 7309df137aff:/tmp/lina
docker exec -it 7309df137aff bash
rm -rf lina
mv /tmp/lina . nginx -t
nginx -s reload
这样就部署好了

修改配置

  1. 下载我的代码
  2. 修改连接数据库的账号密码,你得有数据库账号,并且权限是。或者你用root账号也行
  3. 你在全局文件里搜 db_user 的行,然后把用户名密码 改成你有权限的用户
  4. 然后需要修改调用你本身jumpserver接口的 token。因为我没有完全去读和jumpserver的 代码,所以我这就是取巧。直接在代码里面调用接口全局文件搜索 admin_token 的行。然后把token替换成的你token。
  5. 具体怎么获取token,查看jumpserver官方文档,要选择private_token的方式。jumpserver官方文档创建token
  6. 然后再按照我上面的安装步骤 就可以了

开源地址

jumpserver-Ticket

https://gitee.com/ccsang/jumpserver-ticket

结语

如果有大佬感兴趣的,咱们可以一起交流。
或者有什么问题的,请留言。
就是平时写的一个小功能,愿对大家有用。
一起进步,一起成长!

jumpserver 工单系统 二次开发工单管理并开源代码的更多相关文章

  1. Epicor系统二次开发

    Epicor系统二次开发 一.获取或修改界面EpiDataView的字段数据(Get EpiDataView data) C# EpiDataView edv = (EpiDataView)oTran ...

  2. (dede)织梦系统二次开发笔记

    (dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...

  3. EasyNVR网页H5无插件播放摄像机视频功能二次开发之直播通道接口保活示例代码

    背景需求 随着雪亮工程.明厨亮灶.手机看店.智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网.微信直播,我们知道摄像头直播的春天了.将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP.HT ...

  4. 2017.2.28 activiti实战--第六章--任务表单(二)外置表单

    学习资料:<Activiti实战> 第六章 任务表单(二)外置表单 6.3 外置表单 考虑到动态表单的缺点(见上节),外置表单使用的更多. 外置表单的特点: 页面的原样显示 字段值的自动填 ...

  5. 最新升级优化 shopee|美客多 Mercadolibre|shopfiy|lazada|独立货代贴单系统 可规模化的贴单打单系统 源码下载独立部署

    七想网络 跨境猴 最新优化改进版本的 虾皮代打包-虾皮代贴单 独立部署源码版本货代贴单系统 介绍: 台湾海外仓_shopee货代_虾皮物流–虾皮代贴单 虾皮代打包-虾皮代贴单-虾皮货代平台 shope ...

  6. Ecshop系统二次开发教程及流程演示

      来源:互联网 作者:佚名 时间:03-01 16:05:31 [大 中 小] Ecshop想必大家不会觉得陌生吧,大部分的B2C独立网店系统都用的是Ecshop系统,很受用户的喜爱,但是由于Ecs ...

  7. IBOS云办公系统二次开发之功能介绍(PHP技术)

    IBOS自动化办公系统是我见到的功能.架构最好的开源自动化办公系统,功能与企业需求吻合度之高.架构之灵活,让我不得不将之介绍给大家,让跟多需要学习PHP开发的朋友来了解她,拥抱她! 如果您还没有很好的 ...

  8. EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码

    随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统.电信行业.工业监控.工地.城市交通.水利系统.社区安防等领域得到越来越广泛的应用.摄像头直播视频监控通过网络直接连接,可达到的世界任何角 ...

  9. python-Django监控系统二次开发Nagios

    1.Nagios安装 yum install -y nagios.i686 yum install -y nagios-plugins-all.i686 安装完后会在apache的配置文件目录下/et ...

  10. NX二次开发-UFUN单按钮模态对话框窗口打印uc1601用法

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> UF_initialize(); //方法1(uc1601) uc1601();// ...

随机推荐

  1. CSS & JS Effect – Dialog Modal

    效果 参考: Youtube – Create a Simple Popup Modal Youtube – Create a Modal (Popup) with HTML/CSS and Java ...

  2. 升讯威在线客服系统如何高性能同时支持 MySQL 和 SQL Server

    升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放.开源.共享.努力打造 .net 社区的一款优秀开源产品. 前段时间我发表了一系列文章,开始介绍基 ...

  3. map的线程安全,boost库读写锁的实现

       *************** map的线程安全 ********************  *  * 参考1  * map要实现线程安全必须要加锁,如果使用mutex会产生大量的线程等待,可以 ...

  4. Docker基本概念(LXC?镜像、容器、仓库是什么?容器和虚拟机又是什么?)(一)

    学习Docker前,我们有必要了解下Docker的前生LXC(Linux Container). 一.LXC介绍 LXC 可以提供轻量级的虚拟化,用来隔离进程和资源,和我们传统观念中的全虚拟化完全不一 ...

  5. Windows系统无法打开‘’网络发现‘’功能

    Windows10无法开启网络发现 解决办法: 1. services.msc 2. 开启 SSDP Discovery ,设置 启动类型为 自动 ,服务状态为 启动 Windows7 无法开启网络发 ...

  6. SpringBoot创建微服务项目

    下载安装并配置git 为自己的git设置名字 git config --global user.name "XXX" 配置自己注册码云的邮箱 git config --global ...

  7. select框多选(利用Bootstrap-select)

    前端HTML: <select id="usertype" multiple class="selectpicker" style="width ...

  8. iOSwkwebView 打开 TXT/PDF 文件乱码的问题

    最近做资料文件下载下来并查看的时候,用 WKWebView 打开office 类型的文件的时候是没问题的,但是打开测试人员上传的一个 TXT/PDF 文件就出现了乱码问题,经过查看,应该是文件的编码问 ...

  9. 默认nginx.conf

    user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid ...

  10. 如何解决使用 router.push 跳转路由第二次之后页面就不会刷新了

    router.push({ name:"monitor", query:{ deviceid:"1676156672197922816", // 设备 ID i ...