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

Deployment 在生产环境中使用什么代替UserSecrets,deployment,asp.net-core,.net-core,Deployment,Asp.net Core,.net Core,我在dotnet core中有一个控制台应用程序。对于开发和登台环境,我使用appsettings.Development.josn和appsettings.Staging.json,但是对于生产环境,我使用UserSecrets。当应用程序在production env上运行时,我有两个问题:它没有在%Appdata%/Microsoft中创建用户机密,因此我必须手动创建它,然后它开始工作 我问题的另一部分是: 今天我发现微软写了 机密管理器工具仅用于开发。您可以使用Microsoft Azu

我在dotnet core中有一个控制台应用程序。对于开发和登台环境,我使用appsettings.Development.josn和appsettings.Staging.json,但是对于生产环境,我使用UserSecrets。当应用程序在production env上运行时,我有两个问题:它没有在%Appdata%/Microsoft中创建用户机密,因此我必须手动创建它,然后它开始工作

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

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


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

虽然环境变量是web开发和文档中最常用的选项之一:“在环境中存储配置”,但这可能不是最好的方法有一些原因:

  • 环境对流程是隐式可用的,很难跟踪访问。因此,例如,您可能面临错误报告将包含您的机密的情况

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

所有这些都是像这样的产品现在流行的原因之一



因此,是的,您可以使用环境变量,但请注意)

虽然环境变量是web开发和文档中最常用的选项之一:“在环境中存储配置”,但这可能不是最好的方法有一些原因:

  • 环境对流程是隐式可用的,很难跟踪访问。因此,例如,您可能面临错误报告将包含您的机密的情况

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

所有这些都是像这样的产品现在流行的原因之一



因此,是的,您可以使用环境变量,但请注意)

用于在应用程序中存储安全数据,如果您使用的是Azure,那么Azure KeyValut就是您的答案,您可以看到

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


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

用于在应用程序中存储安全数据,如果您使用的是Azure,那么Azure KeyValut就是您的答案,您可以看到

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


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

环境变量我认为你是对的,我必须使用环境变量。详细说明为什么环境变量是答案环境变量我认为你是对的我必须使用环境变量。详细说明为什么环境变量是答案如果我创建一个从计划任务运行的控制台应用程序。。。由于这是一个内部部署的环境密钥库,我可能不会首先想到这一点。如果我创建一个控制台应用程序,该应用程序将从一个计划任务运行。。。由于这是一个内部环境密钥库,我可能不会首先想到它。