【问题标题】:How to give MSI enabled Function App access to Key Vault?如何让启用 MSI 的功能应用程序访问 Key Vault?
【发布时间】:2018-06-01 00:41:03
【问题描述】:

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

我正在尝试使用此 Function App 访问我的 Key Vault 中的机密。

我已将代码添加到我的 Function App 中以检索密钥。

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 函数的设置。

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

【问题讨论】:

    标签: azure azure-active-directory azure-functions azure-keyvault azure-managed-identity


    【解决方案1】:

    此博客包含详细信息,但您需要进入密钥保管库并在新的访问策略中授予函数应用访问机密的权限

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

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

    【讨论】:

    • 我认为这就是我正在努力解决的问题。我在我的问题中添加了一些图片,以便您查看。
    • 嗯,未知错误很奇怪,但它是正确的位置。你能在隐身模式下试试看是否是本地缓存问题?
    • 相同的结果,不同的错误; “发生错误。请稍后再试”
    • 嗯也可以通过 CLI 授予权限,但您需要先浏览 Azure 活动目录并获取函数应用程序的应用程序 ID 以在命令中使用。不知道为什么您会看到该错误。 docs.microsoft.com/en-us/azure/key-vault/…
    • @JamesWood 它应该显示在企业应用程序(AKA 服务主体)下
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 2018-02-28
    • 1970-01-01
    • 2020-05-23
    • 2018-05-22
    • 2018-09-26
    • 2019-03-13
    • 2022-11-10
    相关资源
    最近更新 更多