簡體   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