![](/img/trans.png)
[英]NodeJS use client certificate from Azure Key Vault in request
[英]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.