要保证第三方测试中软件及源代码不被泄露,需要一套结合法律、技术、物理和管理的体系。
法律和合同保障
全范围保密协议:
《保密和不披露协议》:除了和公司签署,必须和所有可能接触代码的测试工程师、项目经理等个人单独签署。协议需确定将“源代码”、“算法”、“业务思路”等定义为保密信息。
惩罚性违约条款:合同中需约定远高于合同金额的惩罚性违约金(如,合同金额的5-10倍,或设定一个很高的固定数额),并确定约定泄露方需承担所有法律费用和损失赔偿。
知识产权归属确定:在合同中明文规定,测试过程中接触到的所有客户知识产权(包括源代码)其所有权、使用权均100%归客户所有。
物理和网络隔离层
代码不出门原则:
现场派驻测试:测试团队携带设备到客户指定的安全办公区工作。所有代码和数据仅存是客户内网。
远程接入客户环境:通过虚拟桌面基础设施或虚拟专用网络+堡垒机的方式,让测试人员远程接入客户隔离的开发/测试环境。测试人员的本地设备仅作为显示终端,无法复制、下载任何数据。
受控的离线测试环境:
如果必须在测试机构内部进行,需建立物理隔绝的安全屋:独立的房间、无互联网接入、屏蔽所有无线信号、禁用所有USB等外设端口。
所有进出设备(包括测试机)需登记、检查。测试环境通过一次性加密硬盘交付,测试结束后硬盘连同测试机由客户监督进行物理销毁或安全擦除。
网络和数据流监控:
部署数据丢失防护系统,监控并阻止任何试图通过邮件、云存储、即时通讯工具外发代码的行为。
所有网络流量被记录和审计,异常外联会被实时阻断并告警。
流程和权限管理层
通过制度保证每个步骤可追溯、可审计。
最小权限和访问控制:
根据角色的访问控制:严格划分权限,测试人员只能访问其负责模块的代码,无法访问项目全部源代码。
多原因认证:访问重要仓库和系统必须通过动态令牌、生物识别等双重认证。
全周期审计追踪:
所有对代码库的访问、查看、下载操作均被完整日志记录,并和具体员工账号关联。
在安全屋内,可部署操作录像系统,记录测试人员的屏幕和物理操作(需在保密协议中确定约定)。
交付物管理:
测试报告等交付物在交付前需经过敏感信息过滤审查。
项目结束后,严格按合同执行数据销毁流程,并提供由管理层签署的数据销毁证明。
人员和组织管理
再好的技术也需要人来执行。
严格的员工挑选:对参和涉密项目的员工进行背景调查,并要求其签署竞业禁止协议。
不断的安全意识培训:定期进行保密案例培训,让员工充分理解泄露后果(法律责任、职业生涯终结)。
内部监督和制衡:项目组内部可实施双人原则,敏感操作需两人同时在场。建立独立的内部审计部门进行不定期检查。