我正在开发一个使用Amazon Web Services的Web应用程序。我正在使用ASP.NET MVC。我还使用了几个Amazon Web服务,包括S3,EC2和SQS。我打算聘请自由职业者来帮助发展。现在,我将Amazon Web Service密钥和密码放在web.config文件中,并将其连接到我的信用卡。我使用托管的SVN源代码控制和TeamCity进行自动构建和测试。
问题是,自由职业者有没有办法检查代码并进行测试,而不知道像AWS密钥和秘密这样的敏感信息?我应该把它放在另一个文件中吗?我应该把它放在数据库中加密吗?
答案 0 :(得分:4)
答案 1 :(得分:2)
自由职业者的问题在于他们通常可以访问王国的钥匙。在.net中,你可以将你想保密的所有内容扔进一个单独的程序集......但是可以反转并打开它。您可以将数据保存为加密格式,但在某个时间点,您必须授予他们访问解密算法的权限,以便他们在与这些服务通话时可以使用解密数据。如果您有开发人员的商店,您可以随时创建一个包装器,在自由职业者代码和服务层之间进行交互,从而在某种程度上保护您的代码和敏感数据免受不信任的自由职业者的影响。
最简单的方法是使用传统的抽象层。不要让你的自由职业者深入访问你的代码库,你应该很好。在您的陈述中,您说您使用的是公共SVN,这意味着您可能需要多个存储库。
答案 2 :(得分:1)
不要轻易解决这个问题的销售 - 你不能在没有更长的时间内从开发人员那里隐藏你的密钥。如果它存储在DLL中,则可以使用Reflector等工具对DLL进行反编译。如果它在web.config中加密,但在需要使用的其他地方解密,则可以使用代理工具监视网络流量,或者附加调试器。尽管所建议的方法对于防止密钥的随意盗窃是有用的,例如由典型的用户,但是确定能够找到它并且有权运行代码的技术人员通常可以找到获得他们想要的东西的方法。 p>
尝试雇用你可以信赖的人。如果必须,请进行背景检查。
如果您确实需要隐藏密钥,请将开发人员无法访问的代码保存在单独的系统上,除非通过精心设计的安全界面。基本上,您最终将通过其他Web服务代理访问AWS。
答案 3 :(得分:1)
法律保护是你的朋友。请律师为您起草合同,包括保护条款和违规处罚。此外,如果您需要足够的自由职业帮助,那么看一家公司提供比自由角度更安全的服务可能是有意义的。
如果做不到这一点,Rony的第一点就是好 - 获得第二个非生产账户。老实说,无论如何都应该有一个用于分段和测试,因为您可能不希望未经测试的代码与生产数据一起使用。 AWS的实际费用是带宽而不是纯粹的存储空间,所以它不应该花费太多。
另一个角度,取决于您使用的服务API的多少以及您作为编码器的技能,将抽象出您自己的存储接口背后的S3位。为开发人员提供非S3支持的实现,同时将s3支持的实现保留在他们无权访问的单独存储库中,然后在适当时切换到s3支持的选项。这具有长期优势,例如在需要时可以轻松切换存储提供商。