[Azure] ASP.Net Core Web API 如何使用 App Register 取得 Azure Key Vault 的 Secret

專案開發有時需要使用 Key 或 Token

假如流出這些資訊,將會造成資安上的疑慮

故我們可以使用 Azure Key Vault 進行保存

文章將會使用 ASP.Net Core Web API (.Net 5) 進行實作

概述

專案開發有時需要使用 Key 或 Token

假如流出這些資訊,將會造成資安上的疑慮

故我們可以使用 Azure Key Vault 進行保存

文章將會使用 ASP.NET Core Web API (.Net 5) 進行實作

正文

使用 Virtual Studio 建立一個 ASP.Net Core Web API (.Net 5) 的專案

然後安裝 Microsoft Extensions Configuration Azure Key Vault 的 NuGet

install-package microsoft.extensions.configuration.azurekeyvault

完成後, 在 Program.cs 內加入執行 Azure Key Vault 方法以授權專案可以取得 Azure Key Vault 內的 Secret,並且需要知道 Azure Key Vault 的連線, App Register 註冊後的 Client Id 與 Client Secret

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((context, config) =>
                {
                    var root = config.Build();
                    config.AddAzureKeyVault($"https://{root["KeyVault:Vault"]}.vault.azure.net/", root["KeyVault:ClientId"], root["KeyVault:ClientSecret"]);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

完成後, 在 AppSettings.json 假如

"KeyVault": {
    "Vault": "Azure Key Vault Name",
    "ClientId": "Client Id (Application Id)",
    "ClientSecret": "Client Secret"
  },

Vault : Azure Key Vault 的名稱

Client Id : App Register 登記應用程式後的 Client Id (Application Id)

Client Secret : App Register 登記應用程式後建立的 Client Secret

之後建立一個 Controller 並使用以下資訊

private readonly IConfiguration _configuration;

        public ValuesController(IConfiguration configuration)
        {
            _configuration = configuration;
        }

        [HttpGet]
        public string Get()
        {
        	// test 為 Secret 名稱
            var value = _configuration["test"];
            return $"Value for secret [test] is : {value}";
        }

完成後,我們僅需填入相關資訊即可取得 Secret。

資訊取得

註冊 App Register,並取得 Client Id

然後建立一個 Client Secret

然後建立 Azure Key Vault 取得 Key Vault

建立完後建立一個測試 Secret

授權 App 可以讀取 Azure Key Vault 資訊, 需要有 Get 與 List 權限

以上即需要的相關資訊

參考鏈接

原始碼 - Link

分級: 入門是認識, 基本是運用, 進階是混合結合
範本是已可下載或可使用的範例, 至於教程當然是學習的結晶