如何为MSI启用功能应用程序访问Key Vault?

时间:2017-12-18 16:18:51

标签: azure azure-active-directory azure-functions azure-keyvault azure-msi

我有一个启用了Managed service identity(MSI)的功能应用程序。

我正在尝试使用此功能应用程序从我的密钥库中访问密码。

我已将代码添加到我的功能应用程序中以检索秘密。

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();

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

var secret = await keyVaultClient.GetSecretAsync("https://test-prototype-vault.vault.azure.net/secrets/batman/guidhere").ConfigureAwait(false);

我收到以下错误:

Microsoft.Azure.WebJobs.Script: One or more errors occurred. Microsoft.Azure.KeyVault: Access denied.

我认为这是因为我需要(如上面的链接所述)。

  

您可能需要配置目标资源以允许来自   你的申请。例如,如果您向Key Vault请求令牌,   您需要确保添加了包含的访问策略   你的申请的身份。

我不知道该怎么做。我已经去了我的Key Vault并试图添加一个访问策略 - 我找不到选择原则选项的应用程序。

Azure功能的设置。

enter image description here

当我尝试添加主体时会发生什么。

enter image description here

1 个答案:

答案 0 :(得分:4)

此博客有详细信息,但您需要进入密钥保险库并让功能应用程序访问新访问策略中的机密

https://medium.com/@jeffhollan/getting-key-vault-secrets-in-azure-functions-37620fd20a0b

功能应用的名称应显示在用户列表中