来自 KeyVault 的 Azure Function BlobTrigger 连接

Tha*_*ole 5 azure-keyvault azure-functions

摘要:我可以使用 KeyVault 将连接字符串提供给 Blob 存储绑定吗?

我最近将所有连接字符串和机密从 Azure Function 应用程序设置移至 KeyVault。这包括我引用的各种存储帐户的连接字符串。我现在正在研究 Azure Blob 存储绑定,但似乎(根据文档)引用连接字符串的所有方法都解析为应用程序级别设置。

我不想把这个秘密放在两个不同的地方。有没有办法指定存储帐户连接字符串ala KeyVault?

kam*_*lod 1

如果您询问是否可以执行以下操作:

[FunctionName("ResizeImage")]
public static void Run(
   [BlobTrigger("sample-images/{name}", Connection = "StorageConnectionAppSetting")] Stream image, 
   [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageSmall)
{
   ....
}
Run Code Online (Sandbox Code Playgroud)

然后存储,StorageConnectionAppSetting使其指向 KeyVault 实例(并且不容易访问连接字符串),那么恐怕目前不可能。

当然,可以像这样手动获取连接字符串:

var azureServiceTokenProvider = new AzureServiceTokenProvider();
var kvClient = new KeyVaultClient(new  KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback), client);                
string blobConectionString = (await 
kvClient.GetSecretAsync("some"secret")).Value;
Run Code Online (Sandbox Code Playgroud)

然后“手动”连接到 Blob(因此不会使用绑定),但我想这对你来说可能是不行的。

另一个问题是 - 将连接字符串存储在 KV 中的原因是什么?是不是担心保存在功能应用的应用设置中会被人看到?或者是因为您不想将其存储在 CI/CD 管道中?