在生产环境中使用什么来代替 UserSecrets

问题描述 投票:0回答:2

我在 dotnet core 中有一个控制台应用程序。我将 appsettings.Development.josn 和 appsettings.Staging.json 用于开发和暂存环境,但对于生产环境,我使用 UserSecrets。当应用程序在生产环境中运行时,我遇到两个问题,它不会在 %Appdata%/Microsoft 中创建 UserSecrets,因此我必须手动创建它,然后它才能开始工作。

我的问题的另一部分是这样的: 今天我发现微软写了here

Secret Manager 工具仅在开发中使用。您可以使用 Microsoft Azure Key Vault 配置提供程序来保护 Azure 测试和生产机密。有关详细信息,请参阅 Azure Key Vault 配置提供程序。

我没有 Azure。如果我不应该使用 UserSecrets,我可以在生产中使用什么。

deployment asp.net-core .net-core
2个回答
4
投票

虽然环境变量是 Web 开发中最常用的选项之一,并且 十二因素应用程序文档声明:“在环境中存储配置”,但有一些原因表明这可能不是最佳方法:

  • 环境对进程隐式可用,并且很难跟踪访问。因此,例如,您可能会遇到错误报告中包含您的秘密的情况

  • 整个环境都会传递给子进程(如果没有显式过滤)。因此,您的密钥隐式可供任何可能使用的第三方工具使用。

这一切都是像Vault这样的产品如今流行的原因之一。


所以,是的,您可以使用环境变量,但要注意)


-1
投票

要在应用程序中存储安全密钥,如果您使用的是 Azure,那么 Azure KeyValut 就是您的答案,您可以看到 Azure Microsoft Azure Key Valut

如果您使用的是 K8S,您可以将其存储在 CSI 驱动程序中

或者系统操作系统环境变量

© www.soinside.com 2019 - 2024. All rights reserved.