如何更新Azure托管应用现有客户托管资源组的拒绝分配
解决Azure托管应用现有客户拒绝分配权限更新问题
核心结论
无需销毁重部署,可通过Azure管理工具直接修改现有托管资源组对应的拒绝分配,把目标权限加入排除列表。
操作步骤
1. 找到托管资源组关联的拒绝分配ID
托管资源组的拒绝分配是系统自动生成的,先定位目标项:
- 用Azure CLI执行:
az role assignment list --scope /subscriptions/<订阅ID>/resourceGroups/<托管资源组名称> --all --query "[?type=='DenyAssignment']" - 用Azure PowerShell执行:
从输出里找到和托管应用绑定的拒绝分配,记下它的Get-AzDenyAssignment -ResourceGroupName <托管资源组名称>Id以及当前的ExcludedActions字段内容。
2. 更新拒绝分配的排除权限
把Microsoft.KeyVault/vaults/secrets/readMetadata/action添加到现有排除列表中:
- Azure CLI命令:
az role assignment update --id <拒绝分配ID> --add excludedActions "Microsoft.KeyVault/vaults/secrets/readMetadata/action" - Azure PowerShell命令:
$denyAssignment = Get-AzDenyAssignment -Id <拒绝分配ID> $denyAssignment.ExcludedActions += "Microsoft.KeyVault/vaults/secrets/readMetadata/action" Set-AzDenyAssignment -InputObject $denyAssignment
3. 验证权限是否生效
可以通过两种方式确认:
- 直接测试函数应用的代码,调用密钥保管库API读取机密元数据
- 用Azure CLI验证权限:
az keyvault secret list --vault-name <密钥保管库名称> --query "[].id" --auth-type login --identity <函数应用系统身份ID>
注意事项
- 执行操作需要拥有Microsoft.Authorization/denyAssignments/write权限,一般只有订阅所有者或托管应用发布者能操作
- 修改后权限会在几分钟内自动生效,不用重启函数应用
- 新客户的问题还是要靠调整市场托管应用的技术配置来解决,现有客户必须单独执行上述步骤
内容的提问来源于stack exchange,提问作者renrutsirhc
相关产品推荐
相关产品推荐

