.NetCore 2.0安全存储凭证在生产中"内部部署"服务器

时间:2018-02-07 14:05:01

标签: security deployment asp.net-core

当我读到存储Api密钥,配置中的连接字符串并将它们推送到git(即使在私有存储库中)时,我只是感到惊讶。我需要一个安全的网站。我已经谷歌了,并为此找到了一些解决方案,但这些解决方案都不够好。

1使用env vars。 问题以纯文本形式显示给用户

2然后保存在配置文件中,而不是推送到git(将文件夹/文件放在.gitignore。问题以纯文本显示

3配置应该在启动配置文件时加密和解密。 问题加密/解密密钥需要以明文形式保存在服务器上。 4.像3一样,但加密密钥存储在git half的一半硬盘上。 问题这结合了服务器上的git和纯文本

到目前为止,这些是我已经达成的版本,但它们似乎都有问题。 在使用.netCore 2.0时,您认为保留api密钥/连接字符串/秘密加密字符串的最佳选项是什么。

部署服务器是一个内部的7和34#"服务器使用.netCore 2.0和apache服务器作为反向代理。

1 个答案:

答案 0 :(得分:2)

主要关注的是将秘密泄露到源代码控制中,特别是如果它是像Github这样的公共存储库。为此,您根本不会在您的来源中保守秘密。在开发过程中,您可以利用用户秘密,在生产环境中,您可以使用环境变量或Azure KeyVault。

就以加密方式实际存储机密而言,Azure KeyVault是目前唯一可用的开箱即用解决方案。无论您的应用程序是否实际托管在Azure中,您都可以使用KeyVault,虽然它不是免费的,但它几乎和免费一样便宜。

除此之外,您最好的选择是环境变量。这些可以以受限制的方式设置,这样只有特定帐户才能访问它们,然后,您需要实际访问服务器才能达到目的。虽然它没有加密,但如果这些值泄漏,那么这种情况实际上会使您感到担忧最少。

最后,您始终可以编写自己的配置提供程序,并执行您需要执行的操作。例如,您实际上可以编写一个配置,处理加密的JSON,或者使用Web.config,然后加密Web.config。