背景介绍
目前大环境下,研发人员流动性很强,这就要求企业建立一套机制,对企业自己的知识库和项目源代码,技术文档等进行安全控制,不但要对在职人员的主动泄密行为进行管控,更要杜绝离职人员拿走公司的核心资料,避免因泄密给企业造成损失。但现实情况是,这些研发人员在研发过程中,基本上都自己备份一份源代码以及技术文档,甚至还在家中备份一份。这些源代码极容易造成泄密。
方案策略
-
代码层面
1. 将微服务分隔至不同git项目,按需分配权限
控制访问权限。根据员工的等级和权限,只能访问他们工作所需的数据,这样普通开发人员就接触不到涉密信息了。
2. 数据库账号密码加密
基于alibaba连接池druid可以对配置文件中的数据库用户名、密码进行加解密。在一定程度上加强代码的安全性。
3. 将启动服务所依赖的公共服务模块,独立部署在线上
运行A服务,必须依赖common服务(依赖其接口,或依赖读取其配置),这个common服务在服务器上独立运行,不开放源码,并注册到线上eureka或nacos。这样A服务就无法在本地独立运行,必须使用线上的注册中心。即便拿到了A服务的源代码,也需要一定的破解成本。
4. 使用内网maven仓库
项目依赖的一些内部jar包,必须通过公司内部搭建的maven仓库下载。这样即便拿到源代码,也会因为缺少依赖无法正常编译运行。
-
非代码层面
1. 使用公司电脑办公,且不允许接入外网
大多数企业采取的是将企业内网与互联网进行隔离,将内部数据“困在”内网,同时也能够有效屏蔽外部网络攻击的风险。较大规模的企业还可能对内部网络实施进一步的隔离,比如划分为办公网、研发网、生产网、测试网等,主要用来屏蔽不同部门、不同业务之间的违规数据交换。通过网络隔离的方式,可以有效防止内部核心代码数据泄露。
2. 禁用电脑USB接口
这种方法可以防止开发人员恶意拷贝代码等数据,也可以防止U盘或硬盘的病毒扩散。
3. 签署保密协议
在员工入职的时候,签署保密协议,尤其是开发人员这样的涉密人员,通过这种方式,可以一定程度上的防止员工主动泄密。
4. 采用沙盒方式开发
员工的电脑作为终端,连接远程服务器,在服务器上进行开发。服务器上的数据在使用过程中不落地或落地即加密。所有开发的成果都必须存放到服务器上。
5. 通过无代码或低代码的方式开发
用这种方式进行开发,员工在开发中不直接接触代码,也就避免了代码泄露。
6. 日志审计功能
平台上所有的操作都有操作日志记录,对于可能的越权访问能及时发现,并能够追溯。