在开发networking上保护源代码的最佳实践是什么?

在我的公司,我们非常保护我们的源代码。 我们已经满足了我们的偏执,build立了一个与互联网和公司其他networking密切相关的发展局域网。 在开发networking中,我们有一些安全的机器(源控制服务器,构build服务器,域控制器),并且所有的源都需要保持encryption或者在一个locking的房间中。 能够向我们的客户解释这样一个简单的安全策略对我们来说是一个竞争优势,但随着我们公司的发展,维护这个networking的成本也变得更大。 为了应对去年的痛苦,我们通过允许双因素authentication的仅限RDP的VPN接入networking,摆脱了严格的气隙政策。

但是,我们的开发networking与我们其他企业networking之间缺乏连通性仍然是networking内部团队与networking外部团队合作的严重障碍。 我们希望考虑对我们的networking架构进行重大改革,但是我们不确定哪些行业最佳实践是保护源代码。 我们可能会考虑的是:

  • 将我们的开发networking连接到公司networking的其余部分,并允许此networking中任何两台主机之间的无限制通信。 还允许相对不受限制的出站连接到Internet。
  • 允许远程员工对公司networking进行完全VPN访问。
  • 开发一个单独的“testing沙箱”networking,不会保存源代码,不会打补丁,只允许来自企业networking其余部分的入站连接。
  • 要求开发机器在恶意networkingstream量的前提下进行pipe理:需要最新的补丁级别,不允许未经身份validation的远程debugging,设置强密码等。
  • 继续要求所有静止的代码要么停留在一个locking的房间(对于没有令人满意的encryption解决scheme的旧平台),要么被encryption
  • 继续要求所有有权访问代码的开发人员签署相应的文档,声明他们不会从networking中删除任何代码

在您曾经工作过的主要软件开发组织中,这是否会被认为是令人满意的安全策略? 软件开发组织还采取了哪些其他的做法来保护源代码? 例如,入侵检测系统是源安全的一个共同部分?

“我们如何确保我们的源代码?” 问题与我们密切相关,但是我们比networking架构更关心员工策略或备份策略。

对于这些事情,公司政策通常比技术解决scheme更有效。 这并不是说技术不能起到帮助执行政策的作用。

我build议你看一下Fortinet的Fortigate 。 他们有几件事情可以帮助你。 他们有能力隔离任何不符合策略的计算机,也就是补丁级别,A / V等等。它还能够同时执行应用程序保护和数据泄露防护。 所以你只需要设置一个数据泄漏防护规则来阻止类似代码的任何东西。 所以,如果你的公司有一个标准的头文件放在文件的顶部,你可以查找并阻止并报告。 如果您将FortiClient添加到混音中,您可以locking本地机器上的USB端口,并在每个客户端强制实施防火墙,A / V,数据泄露防护和入侵防御策略。

所以要谈谈你的观点。

  • 具有VLAN的防火墙应该能够照顾到你的第一点。
  • Fortigate也是一个VPN,所以这点也非常简单。
  • 某种types的VLAN可能是您的沙箱。
  • ForitClient结合组策略和Fortigate你应该能够控制你需要的一切。
  • 这个有点难对付。 但公司的政策指出,不遵循这些政策将导致终止是最好的办法。 然而FortiClient可以lockingUSB端口,只要你充分lockingnetworking,这应该给你你需要的控制。
  • 这最后一个更是一个政策的事情。

那么,这更多的是关于devise理念的回答,而不是实际的结构,但是你似乎对你想要完成的东西有一个相当好的想法。 我觉得最好的做法不仅是有书面的政策,而且要devise制度来使违反政策的人很难(如果不是不可能的话)。 例如,如果只允许某些计算机直接连接到关键服务器,那么使用ACL或服务器本地防火墙来环绕关键服务器,以仅允许来自这些计算机的连接。

关于你的要点:

  • 我build议不允许无限制的互联网访问。 至less使用防火墙强制代理要求或WCCP。 默认拒绝白名单是最好的。
  • 如果你真的想允许(或想要pipe理)从你的networking外部不受约束的访问,VPN是非常好的; 如果你真的只想要允许特定types的连接,那么我认为VPN过度杀伤并且不必要的危险
  • 我是开发者玩沙箱的粉丝,我们连接到一个单独的互联网接入,并在networking的其余部分生产级防火墙的另一端
  • 修补和安全的密码应该是任何和所有环境中的最低限度
  • encryption是好的,但你需要pipe理encryption方法,注意失败; 即当你绝对需要访问代码时会发生什么,但是有密码的人正在度假? 如果您在这里需要build议,请告诉我,我会加上我如何pipe理这个…这是有点复杂,但有效。
  • 您可能会对NACtypes的解决scheme感兴趣,作为强制authentication的方法,并允许您审核谁在哪里复制。 你也可以做一些事情,例如不允许使用USB设备,这些设备被certificate是对私人数据的真正威胁

我有点困惑。 您已经拥有连接到安全networking的VPN连接,这表明了以下几点

  1. 为需要访问两个networking的人员获取两套计算机。 不一定在同一张桌子上。
  2. 要求VPN连接进入安全networking,适用于任何开发types的工作。

源代码和所有开发工作可以在安全networking上继续,通过RDP执行,而terminal在外部networking上,并且可以并行运行其他工具。