我不是软件工程师。 所以我很好奇公司如何确保产品的源代码不被自己的开发人员/员工泄露? 一旦泄漏,你用什么方法追踪?
雇用你可以信任的人,相信你雇用的人。 如果你的行为像你不能相信他们,他们会停止相信你,并会停止代表贵公司的利益。
没有什么技术可以做,因为如果我可以在你的源代码上工作,我可以偷偷把它放在拇指驱动器上,或者通过电子邮件发送到我的家庭帐户,或者通过任何其他方式来解决它。
我认为保罗对“如果你不信任他们,不要雇用他们”是正确的,但还有两件事要考虑:
源代码真的很特别吗?
通常情况下,这是整个业务stream程,品牌名称,结合使用真正优质产品的代码。 绝大多数编写的代码对于其他开发人员来说可能会更容易重写,然后实际读取您的开发人员编写的内容。
如果真的那么特别
你唯一真正的select是打破任务,不要让所有的开发人员看到所有的代码。 这显然有一个非常大的惩罚,并可能会导致更糟糕的代码。 我认为这个用法是极其罕见的,也许是高度安全的政府情况。
我认为保证源代码的唯一方法是不雇用任何人,而且你是这个项目的唯一开发者。
我想你可以尝试把项目分解成单独连接在一起的模块,所以没有人可以完全组装你的产品,但我无法想象这样的环境中的政治(或降低的士气)…
否则,你将不得不和一个律师讨论关于起诉开发者的select,强制一个代码签入系统,该系统对谁使用什么代码负责,并且使用大量的同行评审来检查隐藏在资源。 并确保你的所有政策(包括起诉你的裤子条款)都logging在案,并为你的员工所知。
当然,这样做有点挑战性,而不是一个值得让你的源代码被盗的混蛋。
我想说,你必须相信你的员工,就像任何其他雇主必须相信他的员工不使用公司汽车进行飙车,并使用他们的小隔间来pipe理个人Lia-Sophia业务。 不是说你一会儿就不会烧了,但是如果你把每个人当作犯罪分子,你都会引起更多的愤恨和stream泪。
也有可能改变态度……正如SO Podcast所指出的那样,StackOverflow正在被周期性地“偷走”并被重新使用,但显然还有一个成功的原创。 如果你的代码被盗了,而其他人创build了一个基于源代码的繁荣的业务,那么这个公司在支持,专业等方面的客户体验方面是缺乏的。机会不是被盗的,这种风险有时会成为做生意的成本。 更不用说,在技术上可以让某人对任何产品进行逆向工程(或者只是偷窃产品并重新打包,而不需要源代码,这样做更容易…)
似乎大多数人都担心那些盗用原始资料来源的盗版行为,不得不以这种方式进行更新和修改。
以前的雇主采取的做法是,所有源文件(以及所有内部文件)必须在其中进行保密通知。
如果发生泄漏,还有大量资源用于教育员工如何处理整个公司面临的风险。
值得在雇佣合同中明确说明,特别是如果你在一个司法pipe辖区,雇主会要求泄漏知识产权的任何人赔偿损失。
处理这个问题的另一种方法是使源代码成为开源代码。 无论如何,没有什么可以偷的 但是,如果源代码不是赚钱的秘密 ,那么唯一可行的办法就是这样。 如果公司通过销售服务或硬件来赚钱,那么提供软件就不是什么问题。 同上,如果软件只是一个极其复杂的系统的一小部分。
唯一的办法,我认为你可以做到这一点是部门化的一切。 确保每个团队build立自己的部分,以规定知识散布在各种各样的人,没有人有整个图像。
你将需要使电脑物理上不可达(没有USB /光学作家),而不是连接到互联网。
但除此之外,这是一个信任的事情,人们往往记得解决问题,以及他们如何解决问题。 这就是编码。 他们将能够重写他们所做的事情。
对于极度偏执的人来说,总是存在着分隔的,需要知道的模式,它将整个知识(和访问)限制在极less数人的身上。 我认为这将是一个非常困难和不愉快的环境。
完全同意上面的答案,最好用非技术性的解决办法来解决这个问题。
但这是我的0.02英镑。
非技术性解决scheme:这对于小型或简单的项目来说并不好。 您可以将应用程序拆分为模块/组件,这样您的开发人员就更像是工厂中的assembly人员。 没有人能够访问整个项目,他们只能看到他们正在工作的部分。
技术解决scheme:假设开发人员在现场。 使用Sanctuary等USB哨兵软件locking工作站。 不要给开发人员本地pipe理员工作站,所以他们不能安装第三方软件来规避安全(SSH / HTTP代理等)。 使用某种forms的数据丢失预防软件(所有安全软件公司都有自己的风味CA,ClearSwift等)。 阻止/监控电子邮件到Internet和Web访问。 工作永远不会回家,远程办公也一样。
当你遇到像这样的安全问题时,总是问自己:“ 他们在电影中做什么?
当我想到这个问题的时候,就会想到一个电影。 如何让别人写代码,但确保他们不能把代码带回家。 事实上,在看过本·阿弗莱克(Ben Affleck)主演的电影“ Paycheck ”之后,我想我有了答案。 在这个烂番茄中,Ben扮演一名工程师,被锁在一个房间里,直到他完成工作。 当他完成后,他的雇主只需交给他一张支票。 哦,他们擦了擦记忆。
所以 – 把你的开发人员locking在一个房间里,直到软件完成,然后擦除他们的记忆。