Azure Web 应用程序配置设置中的“Key Vault 引用错误”

J K*_*ing 15 azure ssl-certificate azure-keyvault identityserver4 azure-webapps

我有一个由 azure 为 Linux 容器的 Web 应用程序生成的私有证书。我想通过 azure 门户中的 Web 应用程序配置设置将此值传递给我的 .net core 应用程序。这是管道 CI-CD 流程的一部分,在应用程序配置中指定 Identity Server 键值的能力有助于将这些值排除在源代码之外。

\n

问题

\n

我通过设置不断收到以下错误

\n
\n

\xe2\x9d\x8c密钥保管库参考

\n
\n

还显示在这里:\n在此输入图像描述

\n

我正在尝试使用此处微软文档建议的格式的秘密值\n我尝试了以下格式:

\n
@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)\n\n@Microsoft.KeyVault(VaultName=myvault;SecretName=myCertName;SecretVersion=versionGUID)\n
Run Code Online (Sandbox Code Playgroud)\n

另外,我已将 Web 应用程序添加到 azure Key Vault 的访问策略中

\n

编辑1:

\n

存在格式错误,并且我的秘密名称错误,因此以下格式有效:

\n
@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)\n
Run Code Online (Sandbox Code Playgroud)\n

但是我遇到了一个新错误:

\n
\n

无法解析密钥保管库引用,因为站点托管\n未启用身份 MSINotEnabled

\n
\n

因此,我转到 Web 应用程序的“身份”选项卡,并打开该应用程序的托管身份。

\n

我现在遇到以下错误:

\n
\n

无法解析 Key Vault 引用,因为\n站点被拒绝访问 Key Vault 引用的保管库。

\n
\n

我发现多个网站表示,如果您刚刚删除设置并保存,然后将设置添加回来,它应该可以解决。这对我不起作用。

\n

我还尝试在 Azure Key Vault 访问策略中授予对 Web 应用程序的“完全访问权限”。

\n

Joy*_*ang 26

首先,参考文献格式@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)错误,应该是@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/myCertName/versionGUID)

其次,我认为您没有正确授予网络应用程序的 MSI 权限。

根据您原始帖子中的描述:

另外,我已将 Web 应用程序添加到 azure Key Vault 的访问策略中

然后在你的EDIT 1中:

因此,我转到 Web 应用程序的“身份”选项卡,并打开该应用程序的托管身份。

显然顺序是错误的,如果你之前没有启用应用程序的MSI,你如何将其添加到访问策略中?我想你可能加错了。

因此,就您的情况而言,请确保您已将 Web 应用程序的 MSI 正确添加到访问策略中。

1.导航到 Web 应用程序 -> Identity-> 复制Object ID(另请确保您使用的是系统分配的 MSI,keyvault 参考功能不支持用户分配的 MSI)

在此输入图像描述

2.然后在Access policieskeyvault 的 -> Add Access Policy-> searchrh 中查找步骤 1 并使用SecretObject ID权限添加它,如下所示 -> 选择并保存。Get

在此输入图像描述

3.导航到应用程序并检查它,它工作正常。

在此输入图像描述


小智 8

您的应用程序应该能够访问 Key Vault 以成功解析引用。如果其他所有内容(例如访问策略和语法)似乎都正常,但您的引用无法解析,请尝试检查您的 Key Vault 是否有任何网络限制。

\n

如果您在保管库的访问策略设置页面上看到与“网络访问控制”相关的警告,则需要允许应用的 IP 通过 Key Vault 防火墙。

\n

Azure Key Vault:网络限制警告

\n

将您的 app\xe2\x80\x99s IP(在“自定义域”下可用)添加到您的 Key Vault\xe2\x80\x99s 防火墙(在“网络”下)。

\n

Azure Key Vault:允许 IP 通过防火墙

\n

参考:https://medium.com/geekculture/troubleshooting-azure-key-vault-references-in-azure-function-apps-b228c1216f63

\n

  • “例外”部分中有一个名为“允许受信任的 Microsoft 服务绕过此防火墙”的选项,可以自动对 Azure 的已知 IP 地址执行此操作。但有时此设置不会立即应用。 (2认同)