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