Enumeración de asignaciones de roles de Azure mediante la CLI de Azure

El control de acceso basado en rol (RBAC) de Azure es el sistema de autorización que puede utilizar para administrar el acceso a los recursos de Azure. Para determinar a qué recursos tienen acceso los usuarios, grupos, entidades de servicio o identidades administradas, se muestran sus asignaciones de roles. En este artículo se describe cómo enumerar las asignaciones de roles mediante la CLI de Azure.

Nota:

Si su organización ha externalizado las funciones de administración a un proveedor de servicios que usa Azure Lighthouse, las asignaciones de roles autorizadas por ese proveedor de servicios no se mostrarán aquí. Del mismo modo, los usuarios del inquilino del proveedor de servicios no verán asignaciones de roles para los usuarios en el inquilino de un cliente, independientemente del rol que se les haya asignado.

Requisitos previos

Lista de las asignaciones de rol de un usuario

Para mostrar las asignaciones de roles de un usuario específico use az role assignment list:

az role assignment list --assignee {assignee}

By default, only role assignments for the current subscription will be displayed. To view role assignments for the current subscription and below, add the --all parameter. To include role assignments at parent scopes, add the --include-inherited parameter. To include role assignments for groups of which the user is a member transitively, add the --include-groups parameter.

The following example lists the role assignments that are assigned directly to the patlong@contoso.com user:

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"
  }
]

Lista de las asignaciones de roles de un grupo de recursos

Para mostrar las asignaciones de roles de un ámbito de grupo de recursos, utilice az role assignment list:

az role assignment list --resource-group {resourceGroup}

The following example lists the role assignments for the pharma-sales resource group:

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"
  },
  
  ...

]

Enumeración de asignaciones de roles de una subscripción

Para enumerar todas las asignaciones de roles en un ámbito de suscripción, use az role assignment list. El identificador de suscripción lo puede encontrar en la hoja Suscripciones de Azure Portal, o bien, puede usar az account list.

az role assignment list --scope "/subscriptions/{subscriptionId}"

Example:

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"
  },

  ...

]

Lista de asignaciones de rol para un grupo de administración

Para enumerar todas las asignaciones de roles de un ámbito de grupo de administración, use az role assignment list. El identificador del grupo de administración lo puede encontrar en la hoja Grupos de administración de Azure Portal, o bien, puede usar az account management-group list.

az role assignment list --scope /providers/Microsoft.Management/managementGroups/{groupId}

Example:

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"
  }
]

Lista de asignaciones de roles para una identidad administrada

Siga estos pasos:

  1. Obtenga el identificador de entidad de seguridad de la identidad administrada asignada por el usuario o el sistema.

    Para obtener el identificador de entidad de seguridad de una identidad administrada asignada por el usuario, puede usar az ad sp list o az identity list.

    az ad sp list --display-name "{name}" --query [].id --output tsv
    

    Para obtener el identificador de entidad de seguridad de una identidad administrada asignada por el sistema, puede usar az ad sp list.

    az ad sp list --display-name "{vmname}" --query [].id --output tsv
    
  2. Para mostrar las asignaciones de roles use az role assignment list.

    De forma predeterminada, se mostrarán únicamente las asignaciones de roles para la suscripción actual. Para ver las asignaciones de roles de la suscripción actual y anteriores, agregue el parámetro --all. Para ver las asignaciones de roles heredadas, agregue el parámetro --include-inherited.

    az role assignment list --assignee {objectId}
    

Paso siguiente