在生产环境中使用什么而不是UserSecrets

时间:2017-07-25 14:30:11

标签: deployment asp.net-core .net-core

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

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

  

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

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

2 个答案:

答案 0 :(得分:1)

虽然环境变量是Web开发中最常用的选项之一,The Twelve Factor App文档states:"在环境中存储配置"有一些原因可能不是最佳方法:

  • 流程隐含地可以使用该环境,并且很难跟踪访问。因此,例如,当您的错误报告包含您的秘密时,您可能会遇到这种情况

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

所有这些都是Vault等产品如今变得流行的原因之一。

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

答案 1 :(得分:0)

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

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

或系统OS环境变量