Azure 基于角色的访问控制(Azure RBAC) 是用于管理对 Azure 资源的访问的授权系统。 若要确定用户、组、服务主体或托管标识有权访问的资源,请列出其角色分配。 本文介绍如何使用 Azure CLI 列出角色分配。
注释
如果你的组织已将管理功能外包给使用 Azure Lighthouse 的服务提供商,则此处将不会显示该服务提供商授权的角色分配。 同样,无论已分配有什么角色,服务提供商租户中的用户都不会看到用户在客户租户中的角色分配。
先决条件
列出用户的角色分配
若要列出特定用户的角色分配,请使用 az role assignment list:
az role assignment list --assignee {assignee}
默认情况下,仅显示当前订阅的角色分配。 若要查看当前订阅和下面的角色分配,请添加 --all 参数。 若要在父范围内包括角色分配,请添加 --include-inherited 参数。 若要包括用户因传递性成为成员的组的角色分配,请添加 --include-groups 参数。
以下示例列出直接分配给 patlong@contoso.com 用户的角色:
az role assignment list --all --assignee patlong@contoso.com --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Backup Operator",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  },
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Virtual Machine Contributor",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  }
]
列出资源组的角色分配
若要列出资源组范围内存在的角色分配,请使用 az role assignment list:
az role assignment list --resource-group {resourceGroup}
以下示例列出了 制药销售 资源组的角色分配:
az role assignment list --resource-group pharma-sales --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Backup Operator",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  },
  {
    "principalName": "patlong@contoso.com",
    "roleDefinitionName": "Virtual Machine Contributor",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"
  },
  
  ...
]
列出订阅的角色分配
若要列出订阅范围内的所有角色分配,请使用 az role assignment list。 若要获取订阅 ID,可以在 Azure 门户中的 “订阅 ”边栏选项卡上找到它,也可以使用 az account list。
az role assignment list --scope "/subscriptions/{subscriptionId}"
示例:
az role assignment list --scope "/subscriptions/00000000-0000-0000-0000-000000000000" --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "admin@contoso.com",
    "roleDefinitionName": "Owner",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000"
  },
  {
    "principalName": "Subscription Admins",
    "roleDefinitionName": "Owner",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000"
  },
  {
    "principalName": "alain@contoso.com",
    "roleDefinitionName": "Reader",
    "scope": "/subscriptions/00000000-0000-0000-0000-000000000000"
  },
  ...
]
列出管理组的角色分配
若要列出管理组范围内的所有角色分配,请使用 az role assignment list。 若要获取管理组 ID,可以在 Azure 门户的 “管理组 ”边栏选项卡上找到它,也可以使用 az account management-group list。
az role assignment list --scope /providers/Microsoft.Management/managementGroups/{groupId}
示例:
az role assignment list --scope /providers/Microsoft.Management/managementGroups/sales-group --output json --query '[].{principalName:principalName, roleDefinitionName:roleDefinitionName, scope:scope}'
[
  {
    "principalName": "admin@contoso.com",
    "roleDefinitionName": "Owner",
    "scope": "/providers/Microsoft.Management/managementGroups/sales-group"
  },
  {
    "principalName": "alain@contoso.com",
    "roleDefinitionName": "Reader",
    "scope": "/providers/Microsoft.Management/managementGroups/sales-group"
  }
]
列出托管身份的角色分配
- 获取系统分配的或用户分配的托管标识的主体 ID。 - 若要获取用户分配的托管标识的主体 ID,可以使用 az ad sp list 或 az identity list。 - az ad sp list --display-name "{name}" --query [].id --output tsv- 若要获取系统分配的托管标识的主体 ID,可以使用 az ad sp list。 - az ad sp list --display-name "{vmname}" --query [].id --output tsv
- 若要列出角色分配,请使用 az role assignment list。 - 默认情况下,仅显示当前订阅的角色分配。 若要查看当前订阅和下面的角色分配,请添加 - --all参数。 若要查看继承的角色分配,请添加- --include-inherited参数。- az role assignment list --assignee {objectId}