我正在研究一个基于Docker和微服务的新ASP.NET Core Web项目,我想知道是否有办法避免在appsettings.json
中存储密码或敏感数据。
我的问题是如何在项目外部指定机密,以使它们不会意外地提交到源代码存储库(使用Azure Key Vault或其他方式)。
我的期望是在两个配置提供程序之间进行组合,例如用于某些外部密钥存储(如果没有其他解决方案或处理此类目的的方法)和应用程序配置。
答案 0 :(得分:2)
一种常见的方法是将机密存储在外部文件库中,例如Azure密钥保管库。 Microsoft文档here上有很好的文档说明了如何执行此操作。它确实需要本地配置,例如证书以向库提供凭据。
它将按照您自己选择的顺序(通过调用config.AddAzureKeyVault
)与您的其他配置参数合并。
为避免针对本地开发环境进行设置,您可以使用本地机密(dotnet user-secrets
命令并将其添加到配置中)。相同的URL上也有文档。请注意,它不是安全存储,实际上只是磁盘上纯文本格式的文件。
P.S。可能不涉及外部提供商的事情。在以前的.Net生态系统中,它称为web.config
加密。基本上,您对web.config的各个部分进行了加密,并且密钥仅与有权访问它的给定帐户一起存储在Windows中。那是一场噩梦般的经历,但是没有使用外部供应商。您可以执行与该方法类似的操作,但是我不知道.net核心是否为此提供了一些现成的方法。
答案 1 :(得分:2)
您可以使用环境变量存储凭据,然后将其放入配置文件中。
请参考此链接:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2