背景
公司期望通过堡垒机纳管MySQL资产,并让开发通过堡垒机登录生产数据库执行SQL查看相关数据,但是需要限制其不能复制和导出生产数据。
堡垒机现状
我司目前使用堡垒机版本为V3.10.7企业版,当前对于数据库有以下几种方式进行连接:
- Web CLI:浏览器直接连接,用户可以随意复制,且Linux资产也使用该方式进行连接,所以无法通过企业版<资产管理->连接方式>功能进行限制
- Web GUI:同上,Windows资产使用该连接方式
- 数据库客户端和DB连接向导:数据库专用连接方式,通过代理的形式在用户本地打开对应的应用程序进行连接,这种方式更加的不可控,可以通过连接方式功能进行限制(这两种连接方式应该也是企业版才有)
- 远程应用:以Windows为载体,堡垒机通过临时用户登录Windows并打开相应的应用程序。可以控制用户的复制粘贴,上传下载等。
综上所述,只有远程应用能符合我们的场景。
堡垒机连接方式限制
经过一系列的研究和测试,我们最终修改了“Luna”的部分代码达到了相应的目的,具体修改如下:
代码相关信息:Luna:src/app/services/http.ts
在我们测试过程中,发现每次在浏览器上连接资产都会发送一个“connection-token”的请求,经过测试该请求里面的"connectData"对象有每个连接的类型以及连接方式还有其他等多的信息等,所以我们就此下手,最终我们通过Web CLI和Web GUI连接MySQL效果如下:
关于打包:如何打包Github上面都有,docker方式在v3版本我们只需要将打包后的代码替换jms_web容器工作目录下面的luna目录即可,由于是静态资源,是动态生效的。
总结
首先我们的方式可能确实有点抽象,但是没办法,找了售后进行友好交流,没有结论,出此下策。但我相信,应该不限于我司有该需求,所以期望堡垒机能够提供资产类型级别的连接方式管理,当你真正有需求的时候,当前基于连接方式的管理确实不太灵活。