Azure Web App 在添加新的秘密版本时失去对 keyvault 秘密的权限

问题描述 投票:0回答:1

我的 .NET6 网络应用程序在其配置中使用密钥库秘密引用。 引用设置如下:

@Microsoft.KeyVault(SecretUri=https://myapp.vault.azure.net/secrets/My--Secret)

应用程序正在使用发布管道部署。部署还允许应用程序使用应用程序的 AD 身份访问密钥库(目前使用旧版 RM):

$servicePrincipalId = $(Get-AzureRmADServicePrincipal -DisplayName $servicePrincipalName).Id

Set-AzureRmKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $servicePrincipalId

应用程序部署后一切正常。它也可以在没有问题的情况下重新启动。

但是,当我将新版本添加到引用的机密并重新启动 Web 应用程序时,它会显示该特定密钥的访问错误:

Key Vault reference was not able to be resolved because site was denied access to Key Vault reference's vault.

我尝试了很多东西:

  • 重启应用程序几次 - 没有帮助
  • 重新运行 Powershell 脚本 - 没有帮助
  • 从 keyvault 访问策略中手动删除应用程序,重新启动(确定 - 所有引用显示红色),手动将应用程序添加回 keyvault 访问策略 - 所有引用再次变为绿色,除了我修改的那个
  • 重新部署应用程序的文件 - 没有帮助
  • 通过 Azure 资源组部署任务重新部署应用程序 - 它有效!

总而言之,为应用程序授予修改后的 keyvault 机密权限的唯一方法是重新部署应用程序。

我可以使用同一应用程序的两个实例在两个 Azure 订阅中可靠地重现该问题。

这是设计使然的正常行为还是我的应用程序以某种奇怪的方式损坏?授予应用程序所有秘密版本(包括未来版本)权限的可靠程序应该是什么?

azure azure-keyvault azure-webapps
1个回答
0
投票

我尝试了以下方法从 Azure 密钥保管库中检索机密,它对我有用。

第 1 步: 使用 .net 6 运行时创建 azure 应用程序服务。

第 2 步: 启用系统分配托管身份并记下对象(主体)ID

enter image description here

第 3 步: 在 Azure 密钥保管库中添加 访问策略。 导航到访问策略并单击 create 按钮。

enter image description here

选择所需的权限并单击下一步。

enter image description here

粘贴在步骤 2 中复制的对象 ID。

enter image description here 点击 Review + create.

第 4 步: 创建秘密并在 azure web 应用程序中引用它。

enter image description here

接下来,导航到 Web 应用 > 配置添加密钥。

enter image description here

解密需要1-2分钟

enter image description here

我已经通过多次更改秘密值来验证它。我没有发现任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.