【问题标题】:What to use in Production environment instead of UserSecrets在生产环境中使用什么而不是 UserSecrets
【发布时间】:2020-05-21 17:11:52
【问题描述】:

我在 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,我可以在生产中使用什么。

【问题讨论】:

  • 环境变量
  • 我认为你是对的我必须使用环境变量。
  • 12factor.net/config 详细阐述了为什么环境变量是答案

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


【解决方案1】:

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

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

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

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


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

【讨论】:

    【解决方案2】:

    为了在你的应用程序中存储安全数据,如果你使用 Azure,那么 Azure KeyValut 就是你的答案,你可以看到Azure Microsoft Azure Key Valut

    如果你使用的是 K8S,你可以将它存储在 CSI 驱动中

    或系统操作系统环境变量

    【讨论】:

    • 如果我创建一个从计划任务运行的控制台应用程序会怎样......因为这是一个本地环境 Key Vault 可能不是我想到的第一件事。
    猜你喜欢
    • 2017-02-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多