使用 Visual Studio 已連線的服務將 Key Vault 新增至 Web 應用程式

在本教學課程中,您將了解如何輕鬆新增一切所需,以便開始使用 Azure Key Vault 來管理 Visual Studio 中 Web 專案的秘密,無論是使用 ASP.NET Core 或任何類型的 ASP.NET 專案皆可適用。 藉由在 Visual Studio 中使用已連線的服務功能,您可以讓 Visual Studio 自動新增連線到 Azure 中 Key Vault 所需的各項 NuGet 套件和設定。

關於已連線的服務在專案中針對啟用 Key Vault 所做的變更詳細資訊,請參閱 Key Vault 已連線的服務 - 我的 ASP.NET 專案變更情況或是 Key Vault 已連線的服務 - 我的 ASP.NET Core 專案變更情況

必要條件

將 Key Vault 支援新增至您的專案

開始之前,請先確定您已登入 Visual Studio。 請使用您 Azure 訂閱的相同帳戶登入。 接著開啟 ASP.NET 4.7.1 或更新版本,或 ASP.NET Core Web 專案,然後執行下列步驟。 顯示的步驟適用於 Visual Studio 2022 17.4 版。 其他 Visual Studio 版本的流程可能稍有不同。

  1. 在 [方案總管] 中,以滑鼠右鍵按一下您要新增 Key Vault 支援的專案,然後選擇 [加入]>[已連線的服務]。 在 [服務相依性] 底下,選擇 + 圖示。 [已連線的服務] 頁面隨即出現,其中包含您可以新增至專案的服務。

  2. 在可用服務的功能表中,選擇 [Azure Key Vault],然後按 [下一步]

    選擇 [Azure Key Vault]

  3. 選取您要使用的訂閱,若已建立要使用的 Key Vault,請進行選取,然後按一下 [下一步]

    螢幕擷取畫面:選取您的訂閱

  4. 如果目前沒有 Key Vault,請按一下 [建立新的 Key Vault]。 系統會要求您提供資源群組、位置和 SKU。

    螢幕擷取畫面:[建立 Azure Key Vault] 畫面

  5. 在 [設定金鑰保存庫] 畫面中,您可以變更參考金鑰保存庫 URI 之環境變數的名稱。 連接字串不會儲存在這裡,而是儲存在金鑰保存庫中。

    螢幕擷取畫面:[連線到 Azure Key Vault] 畫面。

  6. 按 [下一步] 以檢閱變更的摘要,然後按一下 [完成]

現在已建立與 Key Vault 的連線,並且您可以在程式碼中存取秘密。 如果這是您新建立的金鑰保存庫,請建立可在程式碼中參考的秘密來進行測試。 您可以使用 Azure 入口網站PowerShellAzure CLI 來建立秘密。

請參閱適用於 .NET 的 Azure Key Vault 秘密用戶端程式庫 - 程式碼範例的秘密使用範例。

設定金鑰保存庫存取權

如果您執行金鑰保存庫使用的 Microsoft 帳戶,與登入 Visual Studio 使用的帳戶不同 (例如金鑰保存庫使用您的公司帳戶執行,但 Visual Studio 使用的是您的私人帳戶),您會在 Program.cs 檔案收到 Visual Studio 無法存取金鑰保存庫的錯誤。 若要修正這個問題,請移至 Azure 入口網站、開啟金鑰保存庫,然後選擇 [存取控制](IAM)來設定權限。 請參閱使用 Azure 角色型存取控制來提供 Key Vault 金鑰、憑證和秘密的存取權

注意

較舊的金鑰保存庫可能會使用舊版存取原則模型。 若要使用 Azure RBAC,建議移轉較舊的金鑰保存庫。 請參閱 Azure 角色型存取控制 (RBAC) 與存取原則

您的 ASP.NET Core 專案修改內容

本節會指出使用 Visual Studio 新增 Key Vault 連線服務時,對 ASP.NET 專案所做的具體變更。

新增 ASP.NET Core 的參考

影響專案檔 .NET 參考和 NuGet 套件參考。

類型 參考
NuGet (英文) Microsoft.AspNetCore.AzureKeyVault.HostingStartup

新增 ASP.NET Core 的檔案

  • 新增 ConnectedService.json,其中會記錄已連線的服務提供者、版本和文件連結的部分資訊。

ASP.NET Core 的專案檔變更

  • 新增已連線的服務 ItemGroup 和 ConnectedServices.json 檔案。

ASP.NET Core 的 launchsettings.json 變更

  • 下列環境變數項目已新增至 IIS Express 設定檔以及符合 Web 專案名稱的設定檔:

      "environmentVariables": {
        "ASPNETCORE_HOSTINGSTARTUP__KEYVAULT__CONFIGURATIONENABLED": "true",
        "ASPNETCORE_HOSTINGSTARTUP__KEYVAULT__CONFIGURATIONVAULT": "<your keyvault URL>"
      }
    

適用於 ASP.NET Core 的 Azure 變更

  • 建立資源群組 (或使用現有的資源群組)。
  • 在指定的資源群組中建立 Key Vault。

您的 ASP.NET Framework 專案修改內容

本節會指出使用 Visual Studio 新增 Key Vault 連線服務時,對 ASP.NET 專案所做的具體變更。

新增 ASP.NET Framework 的參考

影響專案檔 .NET 參考和 packages.config (NuGet 參考)。

類型 參考
.NET; NuGet Azure.Identity
.NET; NuGet Azure.Security.KeyVault.Keys
.NET; NuGet Azure.Security.key vault.Secrets

重要

預設會安裝 Azure.Identity 1.1.1,該版本不支援 Visual Studio 認證。 您可以將套件參考手動更新為 1.2+ 以使用 Visual Studio 認證。

新增 ASP.NET Framework 的檔案

  • 新增 ConnectedService.json,其中會記錄已連線的服務提供者、版本和文件連結的部分資訊。

ASP.NET Framework 的專案檔變更

  • 新增已連線的服務 ItemGroup 和 ConnectedServices.json 檔案。
  • 針對新增參考一節中所述 .NET 元件的參考。

下一步

如果遵循本教學課程,您的 Key Vault 權限會設定為使用您自己的 Azure 訂閱執行,但這可能不適合實際執行情境。 您可以建立受控識別來管理應用程式的 Key Vault 存取權。 請參閱如何驗證 Key Vault 和指派 Key Vault 存取原則

若要深入了解 Key Vault 開發,請參閱 Key Vault 開發人員指南

如果您的目標是將 ASP.NET Core 應用程式的設定儲存在 Azure Key Vault 中,請參閱 ASP.NET Core 中的 Azure Key Vault 設定提供者