在 Blob 连接上的 Azure Functions 中将 Key Vault Secret 与 Binder 结合使用
Using Key Vault Secret with Binder in Azure Function on Blob connection
我发现此代码示例用于添加到 Blob 存储的连接并将一些文本写入文件,但连接信息取决于包含连接字符串的环境变量名称。我不知道如何提供包含连接字符串的密钥保管库秘密引用,而不必将环境变量名称与连接字符串一起使用。
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host.Bindings.Runtime;
public static async Task Run(string input, Binder binder)
{
var attributes = new Attribute[]
{
new BlobAttribute("samples-output/path"),
new StorageAccountAttribute("MyStorageAccount")
};
using (var writer = await binder.BindAsync<TextWriter>(attributes))
{
writer.Write("Hello World!");
}
}
我可以使用如下代码从我的密钥库中获取连接字符串,但我不知道如何将其提供给 Binder 使用。
string StorageConnectionString = GetSecrets(Environment.GetEnvironmentVariable("StorageAccountSecretUrl")).Result.Value;
调用的函数如下:
private static async Task<SecretBundle> GetSecrets(string Url)
{
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
return await keyVaultClient.GetSecretAsync(Url).ConfigureAwait(false);
}
objective 仅将我的密钥保管库机密用于连接字符串的更改,并将连接字符串保留在配置文件之外。
看看这个名为“为 App Service 和 Azure Functions 使用 Key Vault 引用”的 MS 文档 (https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references)。
这种技术基本上允许您使用 Key Vault 而无需实质性地更改您的函数代码。您在函数中保留对应用程序设置变量的引用(供绑定使用),但该应用程序设置又是指向 Key Vault 机密的指针。系统负责在运行时“翻译”指向秘密的指针。该过程确实涉及为应用程序创建托管标识 service/function 以获得访问 Vault 的权限。
我发现此代码示例用于添加到 Blob 存储的连接并将一些文本写入文件,但连接信息取决于包含连接字符串的环境变量名称。我不知道如何提供包含连接字符串的密钥保管库秘密引用,而不必将环境变量名称与连接字符串一起使用。
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host.Bindings.Runtime;
public static async Task Run(string input, Binder binder)
{
var attributes = new Attribute[]
{
new BlobAttribute("samples-output/path"),
new StorageAccountAttribute("MyStorageAccount")
};
using (var writer = await binder.BindAsync<TextWriter>(attributes))
{
writer.Write("Hello World!");
}
}
我可以使用如下代码从我的密钥库中获取连接字符串,但我不知道如何将其提供给 Binder 使用。
string StorageConnectionString = GetSecrets(Environment.GetEnvironmentVariable("StorageAccountSecretUrl")).Result.Value;
调用的函数如下:
private static async Task<SecretBundle> GetSecrets(string Url)
{
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
return await keyVaultClient.GetSecretAsync(Url).ConfigureAwait(false);
}
objective 仅将我的密钥保管库机密用于连接字符串的更改,并将连接字符串保留在配置文件之外。
看看这个名为“为 App Service 和 Azure Functions 使用 Key Vault 引用”的 MS 文档 (https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references)。
这种技术基本上允许您使用 Key Vault 而无需实质性地更改您的函数代码。您在函数中保留对应用程序设置变量的引用(供绑定使用),但该应用程序设置又是指向 Key Vault 机密的指针。系统负责在运行时“翻译”指向秘密的指针。该过程确实涉及为应用程序创建托管标识 service/function 以获得访问 Vault 的权限。