繁体   English   中英

.NET 不在 Azure 上托管时,生产服务器上的核心机密

[英].NET Core secrets on a production server when not hosting on Azure

我一直在尝试了解 .NET Core 如何处理敏感信息,并且我正在努力研究如何在托管在 Azure 上的生产环境中进行部署。

据我了解,我可以在本地开发环境中使用“秘密存储”来存储敏感信息,但这仅适用于开发环境。

如果我想在生产环境中访问秘密变量,Azure Key Vault 似乎是推荐的方法? 但是,从我正在阅读的内容来看,除非我也在 Azure 上托管,否则我无法访问这些秘密。

在我的情况下,我们已经与第 3 方托管公司建立了托管,所以我想知道当不在 Azure 上托管时,是否有可能以某种方式仍然使用 Azure 的 Key Vault。 做不到这一点,有什么替代方案?

谢谢

在我的情况下,我们已经与第 3 方托管公司建立了托管,所以我想知道当不在 Azure 上托管时,是否有可能以某种方式仍然使用 Azure 的 Key Vault。 做不到这一点,有什么替代方案?

您仍然可以完全使用 On Premise 替代方案来安全地托管您的秘密,而无需将它们放入设置文件中。

您首先需要了解的是如何将设置加载到 ASP.Net Core 应用程序中。 在编写此答案时,这是在Program.cs文件上调用CreateDefaultBuilder时用于加载配置的顺序:

CreateDefaultBuilder按以下顺序为应用程序提供默认配置:

  1. ChainedConfigurationProvider :将现有的IConfiguration添加为源。 在默认配置情况下,添加主机配置并将其设置为应用配置的第一个来源。

  2. appsettings.json使用 JSON 配置提供程序。

  3. appsettings.Environment.json使用 JSON 配置提供程序。 例如, appsettings.Production.json和 appsettings.Development.json。

  4. 应用程序在开发环境中运行时的应用程序机密。

  5. 使用环境变量配置提供程序的环境变量。

  6. 使用命令行配置提供程序的命令行 arguments。

在您的情况下,您需要查看的步骤是第 5 步。 在Windows中,环境变量的配置方式有两种:

  • 全局:机器环境变量。 所以这意味着所有用户都可以看到环境变量
  • 每个用户:用户只能看到属于他们的环境变量。 用户在使用她/他的登录名和密码以该用户身份连接之前,无法看到其他环境变量。

因此,在您的情况下,您需要执行以下步骤:

1.创建一个特定的用户帐户

您需要创建一个特定的用户帐户来运行您的应用程序。

它只能是本地用户帐户。

2. 为该用户帐户创建环境变量

使用新创建的用户帐户连接到服务器,设置环境变量并确保它将保留在该用户的 scope 中(这是下面 PowerShell 命令中的第三个参数的目的)。 例如,要设置连接字符串,您将运行如下内容:

[Environment]::SetEnvironmentVariable("ConnectionStrings:MySuperDatabse", "my super database connection string", "User")

3. 配置运行 ASP.Net Core 应用程序的进程

您需要配置 IIS 应用程序池以使用该新帐户来运行应用程序。 因此,您需要 go 到专用于您的应用程序的应用程序池的高级设置,并设置新帐户,如下所示:

在此处输入图像描述

4.配置加载用户配置文件的流程

最后一个想法是再次配置 IIS 应用程序池以加载用户配置文件 在某些 IIS 配置中,默认设置为false 您需要将其设置为true ,以便在加载用户配置文件时,还将加载该特定用户的环境变量。 可以在专用于 ASP.Net Core 应用程序的应用程序池的高级设置中进行配置,如下所示:

在此处输入图像描述

它已经完成了。 您将能够访问运行 ASP.Net Core 应用程序的用户帐户的机密,而无需修改代码库中的任何内容,但只能在该用户范围内的环境变量上的配置以及在 IIS 上完成的配置,除了用户帐户创建。 所有剩余的步骤都可以毫无困难地自动集成到您的 CD 管道中。

由于机密设置为创建帐户的环境变量,因此请确保没有多少人知道其密码(威胁该帐户为管理员帐户)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM