我在dotnet核心中有一个控制台应用程序。我使用appsettings.Development.josn和appsettings.Staging.json进行开发和暂存环境,但对于生产环境,我使用UserSecrets。我有两个问题,当应用程序在生产环境中运行时,它不会在%Appdata%/ Microsoft中创建UserSecrets,所以我必须手动创建它,然后它才开始工作。
我的另一部分问题是: 今天我发现微软写了here
Secret Manager工具仅用于开发。您可以使用Microsoft Azure Key Vault配置提供程序保护Azure测试和生产机密。有关详细信息,请参阅Azure Key Vault配置提供程序。
我没有Azure。如果我不应该使用UserSecrets,我可以在生产中使用什么。
答案 0 :(得分:1)
虽然环境变量是Web开发中最常用的选项之一,The Twelve Factor App文档states:"在环境中存储配置"有一些原因可能不是最佳方法:
流程隐含地可以使用该环境,并且很难跟踪访问。因此,例如,当您的错误报告包含您的秘密时,您可能会遇到这种情况
整个环境传递给子进程(如果没有显式过滤)。因此,您的密钥可隐式地提供给可能使用的任何第三方工具。
所有这些都是Vault等产品如今变得流行的原因之一。
所以,是的,你可以使用环境变量,但要注意)
答案 1 :(得分:0)
要在应用中存储安全数据,如果您使用的是Azure,那么Azure KeyValut是您的答案,您可以看到Azure Microsoft Azure Key Valut,
如果您使用的是K8S,则可以将其存储在CSI驱动程序中
或系统OS环境变量