我们如何保护我们的源代码?

我们的源代码是我们最珍贵的资产。 我想拥有它:

  • 由内部开发人员进行扩散,但是他们也需要无限制地访问代码来完成他们的工作。 所以我不确定这是可能的。
  • 定期备份以确保位置安全 ,但将其上传到云端存储(如box.net)是否安全?

任何有关策略的build议? 还是我偏执狂?

从人们的行为中获得保护是比人类更为人性化的问题,所以我会留给别人去回答(人类不是我的机器,是的,猫,有时候,人类:不!)。

如果您要将代码发送到任何外部服务,您必须确保在发送之前对其进行了安全encryption,或者您已经完全审核了外部服务,最好是两者。 运行你自己的备份服务器会更安全(你有更直接的控制),但更复杂(你必须自己做所有事情)。 由于您的备份服务器可能在colo空间中运行,而您没有物理控制,因此可能需要将数据设置为在启动时不自动挂载的encryption文件系统 (需要手动干预,通过密钥进行发送(如果服务器需要重新启动) – 在服务器上安装密钥,以便它可以自动安装encryption的卷,就像有一个昂贵的安全组合,并在附近的便签纸上写下来。

无论哪种方式,你应该有离线备份以及在线备份 – 即光盘/磁带异地和不连接。 这样,如果彻底入侵,并且所有核心服务器,本地备份和托pipe在线备份都被破坏,则应该仍然有脱机备份回滚到。

一种方法可以缓解黑客攻入主服务器的问题,并使用它们闯入备份服务器(几个月前,这种情况发生在一个比较高调的Web服务上),我build议有一个中间服务,即实时和备份服务器连接到。 这样您就可以安排实时服务器或备份服务器互相访问,中间服务器不需要login到实时或备份。 活动网站将login到中间服务器以推送最新的数据,并在备份服务器login后将其拉到自己的一段时间。 这并不会取消build议进行离线异地备份,尽pipe这会减less您需要愤怒使用它们的机会。

一个额外的选项来托pipe您的外部备份:如果您与另一个本地非竞争业务的条件非常好,则可以托pipe对方的备份。 尽pipe如此,您仍然可以encryption您的备份以达到真正的偏执狂(不过,如果其他业务不好,尽pipe可能会发生,但要掩盖他们自己被黑客入侵的可能性)。

另外还有一点经常被忽视: 确保你有一个testing备份的过程 。 几周前,您不希望发现他们因某种原因停止工作,因为您需要从中恢复某些内容。 有很多方法来testing备份,最好的取决于你存储的数据的性质和大小以及存储的格式。例如,我有一个运行在我的邮件服务器的副本虚拟机认为它是活的服务器,但从外部世界看不到。 脚本每周三次停止脚本,恢复最近的备份,然后重新启动,任何错误都会邮寄给我。 然后,作为我经常住家的一部分,我login到这个备份虚拟机,检查一切看起来确定(它正在运行,最近的变化是存在的,随机样本的旧数据看起来也OK,…)。 您应该偶尔手动testing备份,但是自动化testing有时是天赐之物 – 它们可能会在小问题成为主要问题之前发出一个小问题。

在照顾你的源代码时很难过于偏执。 这是你的核心资产,如果没有它,你的企业可能是没有价值的,所以你需要非常小心地防范外部的恶意力量(包括自然力量)。

不,你不偏执。 一些事情发生在我身上

  • 你所有的开发者都签署了保密协议吗? 它是否明确表示源代码是公司资产?
  • 你有没有明确限制开发者围绕源代码的政策?
  • 您的开发人员的笔记本电脑的硬盘驱动器和USB密钥是否已encryption?

  • 备份到“云”是可以的。 您应该考虑备份并将备份存储在异地。

\\格雷格

你的源代码和你想保持私有的任何其他文件(如财务)绝对没有区别。 人性方面是你必须要处理的,如果你认为合适的话。 文件的安全性和完整性可以通过多种方式进行pipe理。 我更喜欢将自己的备份执行到磁带上。 这些磁带被存储在异地,以便在发生灾难的情况下(例如,build筑物再次烧毁!)不会丢失超过一天的数据。

当考虑使用“云”时,只要牢记这是因为没有硬性的边缘或定义。 简而言之,您无法知道您的数据在任何时间点的位置,或者有权访问的位置。 如果你觉得你的数据需要被保护,那么你需要直接控制它。

只是想法:

首先,使用版本控制系统。 至less保持文件历史的方式。 如果文件发生什么事情,您可以随时恢复更改。

其次,我可能会考虑使用像git或bazaar这样的DVCS。 使用DVCS允许开发人员可以分支完整存储库的工作stream程。 他们可以检查文件,提交文件,标记,合并等所有在他们自己的分支,独立于其他人。 然后保持一个安全的服务器上,只有一个看门人有权访问的主干线回购。 开发人员可能会合并来自中继的更改,但是只有less数人可以访问中继。 看门人也可以是自动服务,如PQM或其他补丁pipe理工具。

第三,备份可能是一个棘手的问题。 像“你想要物理备份存储吗?” “你想要一台镜像服务器吗?” “你的存储库有多大?” “我需要多less安全?” 我不认为我可以为你解答这些问题,但是在制定备份计划时应该考虑到这些问题。

不,你不是偏执狂……这些都是每个软件公司应该处理的事情……它的IP,你需要保护它。

  1. 在工作签订的工作合同中应该有非常明确的陈述,说明一切都是公司的财产,技术/代码不能在公司以外使用等等。你不能阻止他们打破这个,但是如果它发生,你可以采取法律行动,赢得… … –

    另一个要做的就是确保员工喜欢他们的工作,这样就可以增加对公司的忠诚度,降低他们想要利用他们的代码的风险。

  2. 我们在可移动磁盘上进行备份。 我们有3个备份磁盘可以轮换:一个插入计算机进行日常备份,一个locking在办公室的防火墙中,另一个在系统pipe理员的家里。 3个磁盘旋转。 这样可以确保我们总是在办公室外面有一个备份副本,以防发生火灾。

首先是一个政治/社会问题(除非你会search他们来自build筑物,除了防止大多数出境交通,任何电子locking是错误的安全窗口敷料)。

第二,在本地encryption文件(在您的端),然后发送encryption的副本到您的存储提供商。 我喜欢“丛林磁盘”(Jungle Disk)的想法,您可以在其中创build并保留您的Amazon S3帐户,然后使用Jungle Disk软件将这些文件复制到Amazon。 你将有你的密钥。 对于企业网站,您可以自己复制丛林磁盘的function,然后完全控制。