You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法删除custom role:提示存在role assignments但订阅级IAM显示0分配

我之前也遇到过一模一样的问题!控制台显示分配数为0但删不掉,提示有现有角色分配,核心原因通常是控制台的统计范围有限或者存在同步延迟,下面给你一步步排查和解决的方案:

为什么会出现这种矛盾?
  • 控制台统计范围局限:订阅级IAM控制台默认只展示当前订阅层级的角色分配,但如果你的自定义角色被分配到了资源组、单个资源(比如虚拟机、存储账户)甚至管理组层级,控制台底部的“分配数”是不会统计这些跨层级分配的,所以显示为0,但实际存在分配记录。
  • 数据同步延迟:Azure的IAM数据偶尔会有同步滞后,控制台显示的分配数可能不是实时状态,导致明明有分配却没显示出来。
如何彻底检查是否存在隐藏的角色分配?

控制台的视图有盲区,推荐用Azure CLI或PowerShell查询全层级的分配记录,这比控制台更准确:

方法1:Azure CLI查询

打开Azure Cloud Shell(或者本地安装的Azure CLI),替换<你的角色名称><订阅ID>后运行:

az role assignment list --role "<你的角色名称>" --subscription "<订阅ID>" --all

这个命令会遍历订阅下所有层级(订阅、资源组、单个资源),列出所有使用该角色的分配记录。

方法2:Azure PowerShell查询

在Cloud Shell或本地PowerShell中执行(同样替换占位符):

Get-AzRoleAssignment -RoleDefinitionName "<你的角色名称>" -Scope "/"

-Scope "/"表示查询整个租户范围内的所有层级,能找到任何角落的角色分配。

解决删除问题的步骤
  1. 用上面的命令找到所有角色分配记录,记下对应的PrincipalName(被分配的用户/组/服务主体)和Scope(分配的范围)。
  2. 逐个删除这些分配:
    • CLI删除命令:
      az role assignment delete --assignee "<PrincipalName>" --role "<你的角色名称>" --scope "<分配范围>"
      
    • PowerShell删除命令:
      Remove-AzRoleAssignment -PrincipalName "<PrincipalName>" -RoleDefinitionName "<你的角色名称>" -Scope "<分配范围>"
      
  3. 确认所有分配都删除后,回到控制台尝试删除自定义角色,应该就能成功了。

另外,你也可以试试在Azure门户的「角色分配」页面,切换到「所有范围」视图,手动搜索你的角色名称,有时候能找到控制台首页没显示的跨层级分配。

内容的提问来源于stack exchange,提问作者dushyantp

火山引擎 最新活动