簡體   English   中英

訪問在 nodejs 中引用 Key Vault 的 Azure 應用程序配置設置

[英]Access Azure App Configuration Settings that Reference Key Vault in nodejs

對於Azure function,在 Linux 上運行,使用 Z3B2819DD4C24EDA2FAF20152EE,
我想使用@azure/app-configuration讀取應用配置,
某些配置值是明文時,而其他配置值是 keyvault 的連接字符串。

我的同事寫在 C# 中,正在使用AzureAppConfigurationOptions上的ConfigureKeyVault方法來配置 Azure 應用程序配置 SDK 以自動從其連接中獲取、解碼和解析字符串。

我想在 nodejs 中做同樣的事情,但在API 文檔中沒有找到類似的方法

我必須做這樣的事情嗎?

async function getConfig(key: string): Promise<string> {
  const maybeConnectionString = await appConfigurationClient.getConfigurationSetting({ key });
  if (maybeConnectionString.startsWith('@Microsoft.KeyVault'))
    return await keyVaultClient.getSecret(maybeConnectionString);
  else
    return maybeConnectionString;
}

Benny Powers,是的,你是對的。 要在 Node.js 中使用 Key Vault 引用,您必須獲取鍵值,解析密鑰標識符的值,然后從 Key Vault 中檢索實際密鑰。 正如您提到的,這已作為 .NET 配置提供程序的一部分實現,但如果您使用的是 JS SDK,則必須這樣做。

在實現方面,首先要檢查 key-value 的content-type是否為application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8 如果是這樣,則表示此鍵值是 Key Vault 引用。 然后您可以解析該值。 該值采用 JSON 格式,類似於{"uri":"https://xxxxxx.vault.azure.net/secrets/....."} uri指向的是秘密標識符。 獲得機密標識符后,您可以像以前一樣使用 Key Valut 客戶端獲取實際機密。

下面的代碼可以工作:

導入模塊:

import { SecretClient } from "@azure/keyvault-secrets";
import { DefaultAzureCredential } from "@azure/identity";

獲取秘密的邏輯:

let vaultUrl = `https://yourkeyvaultname.vault.azure.net/`;
let credentials = new DefaultAzureCredential();

let client = new SecretClient(vaultUrl, credentials);
let secret_value = (await client.getSecret("yoursecretname")).value

而且我注意到您提到了標簽“azure-function”,因此無需使用密鑰庫 SDK。 您可以將此添加到 function 應用程序的配置設置中(僅在 function 應用程序部署到 azure 后才有效。):

@Microsoft.KeyVault(SecretUri=<secret identifier>)

然后創建一個 function app 身份,並讓 function 身份訪問對 keyvault 有相應的訪問策略。 之后,您只需訪問環境變量即可獲取秘密。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM