处理azure功能应用程序中的密钥旋转,该应用程序从密钥库中提取最新的密钥版本



我通过在Configuration中设置属性来获取Azure函数中的密钥库中的秘密:

@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)

我没有在上面的设置中使用秘密版本,这样每当键旋转发生时,它就会拉出最新的秘密版本。

根据Azure文档-If a version is not specified in the reference, then the app will use the latest version that exists in Key Vault. When newer versions become available, such as with a rotation event, **the app will automatically update and begin using the latest version within one day**. Any configuration changes made to the app will cause an immediate update to the latest versions of all referenced secrets.

在生产环境中,这一天的延迟将造成影响。有没有其他的方法来获得最新的秘密版本没有延迟,也没有手动更新配置设置与最新的秘密版本?我也不想停止和启动功能应用程序来同步秘密。

我试着使用下面的代码,但似乎它拉相同的结果与上面的&;@ microsoft . keyvault &;,这意味着旧的秘密版本。是因为缓存吗?

string kvUri = $"https://{keyVaultName}.vault.azure.net";
SecretClient client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Azure.Response<KeyVaultSecret> secret = await client.GetSecretAsync(secretName);

我们已经在我们的环境中基于reppro进行了测试,以下是观察结果。

在生产环境中,这一天的延迟将造成影响。有没有其他的方法来获得最新的秘密版本没有延迟,也没有手动更新配置设置与最新的秘密版本?我也不想停止和启动功能应用程序来同步秘密。

如果你想在秘密过期时立即使用功能应用程序旋转秘密,你需要执行(更新,启用&禁用功能,重新启动功能应用程序)如果没有,你需要等待,如azure文档中所述。

我尝试使用下面的代码,但似乎它拉相同的结果如上面的"@Microsoft.KeyVault",意思是旧的秘密的版本。是因为缓存吗?

我们可以使用powershell cmdlet从密钥库中提取最新版本的密钥,而不考虑密钥的有效期下面是命令:

$secret= (Get-AzKeyVaultSecret -VaultName <keyvaultname> -Name <secretName> -AsPlainText) 

这是使用powershell自动旋转azure密钥库秘密的参考线程;runbook

最新更新