在构建主机之前从KeyVault获取Azure WebJobs连接字符串

问题描述 投票:0回答:1

我正在按照https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references的指示进行操作>>

基本上,我试图在Azure Key保管库密钥后面保护用于AzureWebJobsDashboard和AzureWebJobsStorage的存储连接字符串。我无法使用注入的KeyVault服务来获取它,因为尚未构建我的服务容器。因此,我发现(通过上面的链接)我可以在配置中使用“ @ Microsoft.KeyVault()”表达式来表达此意图。这是一个示例,其中我将配置移至内联代码以使其简洁:

.ConfigureHostConfiguration(configurationBuilder =>
{
    configurationBuilder
        .AddConfiguration(configuration)
        .AddInMemoryCollection(new Dictionary<string, string>
        {
            ["ConnectionStrings:AzureWebJobsDashboard"] = "@Microsoft.KeyVault(SecretUri=https://host.vault.azure.net/secrets/secret-name/ec545689445a40b199c0e0a956f16fca)",
            ["ConnectionStrings:AzureWebJobsStorage"] = "@Microsoft.KeyVault(SecretUri=https://host.vault.azure.net/secrets/secret-name/ec545689445a40b199c0e0a956f16fca)",
        });
})

如果运行此命令,我会得到:

FormatException:未找到有效的帐户信息组合。

如果我将配置值从特殊注释更改为从Key Vault复制的机密值(“显示机密值”按钮下的蓝色复制按钮),则一切正常。这向我确认了我使用的连接字符串是正确的。

[此外,即使在构建主机之前,我还是手动使用KeyVaultClient w / AzureServiceTokenProvider来验证该过程在Visual Studio中本地运行时是否可以正常工作。我能够弄清楚这个秘密。这告诉我,我有足够的特权来获取秘密。

所以现在我想知道是否还支持此功能。有些页面暗示了这是可能的,例如https://medium.com/statuscode/getting-key-vault-secrets-in-azure-functions-37620fd20a0b。至少对于Azure Functions。我正在使用Azure Web Jobs,它通过ASP.NET Core服务作为控制台应用程序部署,但找不到具有该配置的示例。

任何人都可以澄清我在做什么吗?如果不是,在构建Azure Web Jobs主机之前获取存储在Azure Key Vault中的连接字符串的建议过程是什么?

谢谢

我正在遵循https://docs.microsoft.com/zh-cn/azure/app-service/app-service-key-vault-references上的指示,本质上,我正在尝试保护用于以下用途的存储连接字符串...

azure-webjobs azure-keyvault
1个回答
0
投票

我已经浏览了很多联机资源,并且似乎都表明装饰特殊的@ Microsoft.KeyVault设置仅在该值位于Azure门户的AppSettings中而不在本地配置中时才起作用。有人请让我知道这是否是错误的评估。

© www.soinside.com 2019 - 2024. All rights reserved.