如何授予启用 MSI 的 Function App 访问 Key Vault 的权限?

How to give MSI enabled Function App access to Key Vault?

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

我正在尝试使用此功能应用访问我的 Key Vault 中的机密。

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

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.

我认为这是因为我需要(如上文 link 所述)。

You may need to configure the target resource to allow access from your application. For example, if you request a token to Key Vault, you need to make sure you have added an access policy that includes your application's identity.

我不知道该怎么做。我已转到我的 Key Vault 并尝试添加访问策略 - 我找不到 Select Principle 选项的应用程序。


Azure 函数的设置。

当我尝试添加委托人时会发生什么。

此博客有详细信息,但您需要进入 Key Vault 并在新的访问策略中授予函数应用访问机密的权限

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

您的函数应用程序的名称应显示在用户列表中