Azure Function App通过应用程序设置使用最新版本的Key Vault Secret

时间:2020-06-21 09:51:09

标签: azure azure-functions azure-keyvault

我有一个在消费计划上运行的Linux功能应用程序,该应用程序使用“应用程序设置”中的“密钥库参考”来检索和使用存储在Azure密钥库中的机密。

到目前为止,效果很好。

但是,我们每天都必须更改该秘密(即,在Key Vault中创建该秘密的新版本并为该秘密设置激活日期),并且希望Function App自动检索并使用新版本激活后,无需手动将Kev Vault引用更改为新版本的机密。

这目前可行吗?如何实现?

2 个答案:

答案 0 :(得分:2)

目前无法执行此操作。

https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references

当前需要版本。旋转机密时,您将需要在应用程序配置中更新版本。

重新启动功能对您没有任何帮助,因为旋转机密意味着您还需要创建该机密的新版本。这也可能是为什么目前不支持它的原因。当新版本可用时,AppService不会收到通知,并且您可能不希望在KeyVault中更新机密时自动重新启动AppService。

您要么需要在功能代码中手动获取最新的活动密码,要么通过其他方法更新引用。我可能更喜欢第一种方法,因为它可以工作而不必重新启动AppService。

https://docs.microsoft.com/en-us/samples/azure-samples/app-service-msi-keyvault-dotnet/keyvault-msi-appservice-sample/


    AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

    try
    {
        var keyVaultClient = new KeyVaultClient(
            new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

        var secret = await keyVaultClient.GetSecretAsync("https://keyvaultname.vault.azure.net/secrets/secret")
            .ConfigureAwait(false);

        ViewBag.Secret = $"Secret: {secret.Value}";
        
    }
    //...
}

答案 1 :(得分:1)

现在支持。

https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references#rotation

<块引用>

如果参考中未指定版本,则应用将使用 Key Vault 中存在的最新版本。当更新版本可用时,例如轮换事件,应用程序将自动更新并在一天内开始使用最新版本。对应用所做的任何配置更改都会导致所有引用机密的最新版本立即更新。