Incorporación o eliminación de asignaciones de roles de Azure mediante la CLI de AzureAdd or remove Azure role assignments using Azure CLI

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.Azure role-based access control (Azure RBAC) is the authorization system you use to manage access to Azure resources. Para conceder acceso, debe asignar roles a usuarios, grupos, entidades de servicio o identidades administradas en un ámbito determinado.To grant access, you assign roles to users, groups, service principals, or managed identities at a particular scope. En este artículo se describe cómo asignar roles con 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.Azure role-based access control (Azure RBAC) is the authorization system you use to manage access to Azure resources. Para conceder acceso, debe asignar roles a usuarios, grupos, entidades de servicio o identidades administradas en un ámbito determinado.To grant access, you assign roles to users, groups, service principals, or managed identities at a particular scope. This article describes how to assign roles using Azure CLI.

PrerrequisitosPrerequisites

Para agregar o quitar asignaciones de roles, debe tener:To add or remove role assignments, you must have:

Pasos para agregar una asignación de rolesSteps to add a role assignment

En Azure RBAC, para conceder acceso es preciso agregar una asignación de roles.In Azure RBAC, to grant access, you add a role assignment. Una asignación de roles consta de tres elementos: entidad de seguridad, definición de rol y ámbito.A role assignment consists of three elements: security principal, role definition, and scope. Para agregar una asignación de roles, siga estos pasos.To add a role assignment, follow these steps.

Paso 1: determinar quién necesita accesoStep 1: Determine who needs access

Puede asignar un rol a un usuario, grupo, entidad de servicio o identidad administrada.You can assign a role to a user, group, service principal, or managed identity. Para agregar una asignación de roles, es posible que tenga que especificar el id. único del objeto.To add a role assignment, you might need to specify the unique ID of the object. El identificador tiene el formato: 11111111-1111-1111-1111-111111111111.The ID has the format: 11111111-1111-1111-1111-111111111111. Puede obtener el identificador mediante Azure Portal o la CLI de Azure.You can get the ID using the Azure portal or Azure CLI.

UserUser

Para un usuario Azure AD, obtenga el nombre principal de usuario, como patlong@contoso.com o el id. de objeto del usuario.For an Azure AD user, get the user principal name, such as patlong@contoso.com or the user object ID. Para obtener el id. de objeto, puede usar az ad user show.To get the object ID, you can use az ad user show.

az ad user show --id "{principalName}" --query "objectId" --output tsv

GrupoGroup

Para un grupo de Azure AD, necesita el id. de objeto de grupo.For an Azure AD group, you need the group object ID. Para obtener el id. de objeto, puede usar az ad group show o az ad group list.To get the object ID, you can use az ad group show or az ad group list.

az ad group show --group "{groupName}" --query "objectId" --output tsv

Entidad de servicioService principal

Para una entidad de servicio de Azure AD (identidad que usa una aplicación), necesita el id. de objeto de la entidad de servicio.For an Azure AD service principal (identity used by an application), you need the service principal object ID. Para obtener el id. de objeto, puede usar az ad sp list.To get the object ID, you can use az ad sp list. Para una entidad de servicio, use el id. de objeto y no el de aplicación.For a service principal, use the object ID and not the application ID.

az ad sp list --all --query "[].{displayName:displayName, objectId:objectId}" --output tsv
az ad sp list --display-name "{displayName}"

Identidad administradaManaged identity

Para una identidad administrada que haya asignado el sistema o el usuario, es necesario el id. de objeto.For a system-assigned or a user-assigned managed identity, you need the object ID. Para obtener el id. de objeto, puede usar az ad sp list.To get the object ID, you can use az ad sp list.

az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"

Para enumerar las identidades administradas asignadas por el usuario, puede usar az identity list.To just list user-assigned managed identities, you can use az identity list.

az identity list

Paso 2: buscar el rol adecuadoStep 2: Find the appropriate role

Los permisos se agrupan en roles.Permissions are grouped together into roles. Puede seleccionarlos de una lista de varios roles integrados de Azure o puede utilizar sus propios roles personalizados.You can select from a list of several Azure built-in roles or you can use your own custom roles. Es recomendable conceder acceso con el menor privilegio necesario, así que evite asignar un rol más amplio.It's a best practice to grant access with the least privilege that is needed, so avoid assigning a broader role.

Para enumerar los roles y obtener el id. de rol único, puede usar az role definition list.To list roles and get the unique role ID, you can use az role definition list.

az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv

Aquí verá cómo mostrar los detalles de un rol determinado.Here's how to list the details of a particular role.

az role definition list --name "{roleName}"

Para obtener más información, consulte la Lista de definiciones de roles de Azure.For more information, see List Azure role definitions.

Paso 3: identificar el ámbito necesarioStep 3: Identify the needed scope

Azure proporciona cuatro niveles de ámbito: recursos, grupo de recursos, suscripción y grupo de administración.Azure provides four levels of scope: resource, resource group, subscription, and management group. Es recomendable conceder acceso con el menor privilegio necesario, así que evite asignar un rol a un ámbito más amplio.It's a best practice to grant access with the least privilege that is needed, so avoid assigning a role at a broader scope. Para obtener más información sobre el ámbito, vea Comprensión del ámbito.For more information about scope, see Understand scope.

Ámbito de recursosResource scope

Para el ámbito de recursos, necesitará el id. de recurso.For resource scope, you need the resource ID for the resource. Puede buscar el id. de recurso examinando las propiedades del recurso en Azure Portal.You can find the resource ID by looking at the properties of the resource in the Azure portal. El id. de recurso tiene el formato siguiente.A resource ID has the following format.

/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}

Ámbito de grupo de recursosResource group scope

Para el ámbito del grupo de recursos, necesita el nombre del grupo de recursos.For resource group scope, you need the name of the resource group. Puede encontrar el nombre en la página Grupos de recursos de Azure Portal o puede usar az group list.You can find the name on the Resource groups page in the Azure portal or you can use az group list.

az group list --query "[].{name:name}" --output tsv

Ámbito de suscripciónSubscription scope

Para el ámbito de la suscripción, necesitará el id. de la suscripción.For subscription scope, you need the subscription ID. Puede encontrar el id. en la página Suscripciones de Azure Portal o puede usar az account list.You can find the ID on the Subscriptions page in the Azure portal or you can use az account list.

az account list --query "[].{name:name, id:id}" --output tsv

Ámbito del grupo de administraciónManagement group scope

Para el ámbito del grupo de administración, necesita el nombre del grupo de administración.For management group scope, you need the management group name. Puede encontrar el nombre en la página de Grupos de administración de Azure Portal o puede usar az account management-group list.You can find the name on the Management groups page in the Azure portal or you can use az account management-group list.

az account management-group list --query "[].{name:name, id:id}" --output tsv

Paso 4: Agregar asignación de rolesStep 4: Add role assignment

Para agregar una asignación de roles, use el comando az role assignment create.To add a role assignment, use the az role assignment create command. Dependiendo del ámbito, el comando normalmente tiene uno de los siguientes formatos.Depending on the scope, the command typically has one of the following formats.

Ámbito de recursosResource scope

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"

Ámbito de grupo de recursosResource group scope

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--resource-group "{resourceGroupName}"

Ámbito de suscripciónSubscription scope

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--subscription "{subscriptionNameOrId}"

Ámbito del grupo de administraciónManagement group scope

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"

A continuación se muestra un ejemplo de la salida cuando se asigna el rol de Colaborador de la máquina virtual a un usuario en un ámbito de grupos de recursos.The following shows an example of the output when you assign the Virtual Machine Contributor role to a user at a resource group scope.

{
  "canDelegate": null,
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
  "name": "{roleAssignmentId}",
  "principalId": "{principalId}",
  "principalType": "User",
  "resourceGroup": "{resourceGroupName}",
  "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
  "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "type": "Microsoft.Authorization/roleAssignments"
}

Ejemplos para agregar asignaciones de rolesAdd role assignment examples

Agregar la asignación de roles a todos los contenedores de blobs en un ámbito de recursos de la cuenta de almacenamientoAdd role assignment for all blob containers in a storage account resource scope

Asigna el rol de Colaborador de datos de Blob Storage a una entidad de servicio con el id. de objeto 55555555-5555-5555-5555-555555555555 en el ámbito de recursos de una cuenta de almacenamiento denominada storage12345.Assigns the Storage Blob Data Contributor role to a service principal with object ID 55555555-5555-5555-5555-555555555555 at a resource scope for a storage account named storage12345.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"

Agregar asignación de roles para un ámbito de recursos de un contenedor de blobs específicoAdd role assignment for a specific blob container resource scope

Asigna el rol de Colaborador de datos de Blob Storage a una entidad de servicio con el id. de objeto 55555555-5555-5555-5555-555555555555 en el ámbito de recursos de un contenedor de blobs denominado blob-container-01.Assigns the Storage Blob Data Contributor role to a service principal with object ID 55555555-5555-5555-5555-555555555555 at a resource scope for a blob container named blob-container-01.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"

Agregar asignación de roles para un grupo en un ámbito de recursos de red virtual específicoAdd role assignment for a group in a specific virtual network resource scope

Asigna el rol Colaborador de la máquina virtual al grupo Ann Mack Team con el id. 22222222-2222-2222-2222-222222222222 en un ámbito de recurso de una red virtual denominada pharma-sales-project-network.Assigns the Virtual Machine Contributor role to the Ann Mack Team group with ID 22222222-2222-2222-2222-222222222222 at a resource scope for a virtual network named pharma-sales-project-network.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"

Agregar una asignación de roles para un usuario en el ámbito de un grupo de recursosAdd role assignment for a user at a resource group scope

Asigna el rol Colaborador de la máquina virtual al usuario patlong@contoso.com en el ámbito del grupo de recursos pharma-sales.Assigns the Virtual Machine Contributor role to patlong@contoso.com user at the pharma-sales resource group scope.

az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Agregar una asignación de roles para un usuario con el id. de rol único en el ámbito de un grupo de recursosAdd role assignment for a user using the unique role ID at a resource group scope

Hay un par de veces en las que el nombre de un rol puede cambiar, por ejemplo:There are a couple of times when a role name might change, for example:

  • Utiliza su propio rol personalizado y decide cambiar el nombre.You are using your own custom role and you decide to change the name.
  • Utiliza una rol de versión preliminar que tiene (Versión preliminar) en el nombre.You are using a preview role that has (Preview) in the name. Cuando se libera el rol, se cambia su nombre.When the role is released, the role is renamed.

Incluso si se cambia el nombre de un rol, su identificador no cambia.Even if a role is renamed, the role ID does not change. Si utiliza scripts o automatización para crear las asignaciones de roles, se recomienda utilizar el identificador de rol único en lugar del nombre del rol.If you are using scripts or automation to create your role assignments, it's a best practice to use the unique role ID instead of the role name. Por tanto, si se cambia el nombre de un rol, es más probable que los scripts funcionen.Therefore, if a role is renamed, your scripts are more likely to work.

En el ejemplo siguiente, se asigna el rol Colaborador de la máquina virtual al usuario patlong@contoso.com en el ámbito del grupo de recursos pharma-sales.The following example assigns the Virtual Machine Contributor role to the patlong@contoso.com user at the pharma-sales resource group scope.

az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--resource-group "pharma-sales"

Agregar la asignación de roles en todos los contenedores de blobs en un ámbito de grupo de recursosAdd role assignment for all blob containers at a resource group scope

Asigna el rol de Colaborador de datos de Blob Storage a una entidad de servicio con el id. de objeto 55555555-5555-5555-5555-555555555555 en el ámbito del grupo de recursos Example-Storage-rg.Assigns the Storage Blob Data Contributor role to a service principal with object ID 55555555-5555-5555-5555-555555555555 at the Example-Storage-rg resource group scope.

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--resource-group "Example-Storage-rg"

Como alternativa, puede especificar el grupo de recursos completo con el parámetro --scope:Alternately, you can specify the fully qualified resource group with the --scope parameter:

az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg"

Agregar una asignación de roles para una aplicación en un ámbito de grupo de recursosAdd role assignment for an application at a resource group scope

Asigna el rol Colaborador de la máquina virtual a una aplicación con el id. de objeto de entidad de servicio 44444444-4444-4444-4444-444444444444 en el ámbito del grupo de recursos pharma-sales.Assigns the Virtual Machine Contributor role to an application with service principal object ID 44444444-4444-4444-4444-444444444444 at the pharma-sales resource group scope.

az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Agregar la asignación de roles de una nueva entidad de servicio en un ámbito de grupo de recursosAdd role assignment for a new service principal at a resource group scope

Si crea una entidad de servicio e inmediatamente intenta asignarle un rol, esa asignación de roles puede producir un error en algunos casos.If you create a new service principal and immediately try to assign a role to that service principal, that role assignment can fail in some cases. Por ejemplo, si usa un script para crear una identidad administrada y luego intenta asignarle un rol a esa entidad de servicio, la asignación de roles podría producir un error.For example, if you use a script to create a new managed identity and then try to assign a role to that service principal, the role assignment might fail. Es probable que el motivo de este error sea un retraso en la replicación.The reason for this failure is likely a replication delay. La entidad de servicio se crea en una región; sin embargo, la asignación de roles puede tener lugar en una región distinta que todavía no haya replicado la entidad de servicio.The service principal is created in one region; however, the role assignment might occur in a different region that hasn't replicated the service principal yet. Para abordar este escenario, debe especificar el tipo de entidad de seguridad al crear la asignación de roles.To address this scenario, you should specify the principal type when creating the role assignment.

Para agregar una asignación de roles, use az role assignment create, especifique un valor para --assignee-object-id y establezca --assignee-principal-type en ServicePrincipal.To add a role assignment, use az role assignment create, specify a value for --assignee-object-id, and then set --assignee-principal-type to ServicePrincipal.

az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--resource-group "{resourceGroupName}" \
--scope "/subscriptions/{subscriptionId}"

En el ejemplo siguiente, se asigna el rol Colaborador de la máquina virtual a la identidad administrada msi-test en el ámbito del grupo de recursos pharma-sales:The following example assigns the Virtual Machine Contributor role to the msi-test managed identity at the pharma-sales resource group scope:

az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Agregar una asignación de roles para un usuario en un ámbito de suscripciónAdd role assignment for a user at a subscription scope

Asigna el rol de Lector al usuario annm@example.com en el ámbito de una suscripción.Assigns the Reader role to the annm@example.com user at a subscription scope.

az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--subscription "00000000-0000-0000-0000-000000000000"

Agregar una asignación de roles para un grupo en el ámbito de una suscripciónAdd role assignment for a group at a subscription scope

Asigna el rol Lector al grupo Ann Mack Team con el id. 22222222-2222-2222-2222-222222222222 en el ámbito de suscripción.Assigns the Reader role to the Ann Mack Team group with ID 22222222-2222-2222-2222-222222222222 at a subscription scope.

az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--subscription "00000000-0000-0000-0000-000000000000"

Agregar asignación de roles para todos los contenedores de blobs en un ámbito de suscripciónAdd role assignment for all blob containers at a subscription scope

Asigna el rol de Lector de datos de Blob Storage al usuario alain@example.com en el ámbito de una suscripción.Assigns the Storage Blob Data Reader role to the alain@example.com user at a subscription scope.

az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"

Agregar una asignación de roles para un usuario en el ámbito de un grupo de administraciónAdd role assignment for a user at a management group scope

Asigna el rol Lector de facturación al usuario alain@example.com en un ámbito de grupo de administración.Assigns the Billing Reader role to the alain@example.com user at a management group scope.

az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"

Eliminación de una asignación de rolRemove a role assignment

En Azure RBAC, para quitar el acceso es preciso quitar una asignación de roles mediante az role assignment delete.In Azure RBAC, to remove access, you remove a role assignment by using az role assignment delete.

En el ejemplo siguiente, se quita la asignación de roles Colaborador de la máquina virtual del usuario patlong@contoso.com en el grupo de recursos pharma-sales:The following example removes the Virtual Machine Contributor role assignment from the patlong@contoso.com user on the pharma-sales resource group:

az role assignment delete --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--resource-group "pharma-sales"

Quita el rol Lector del grupo Ann Mack Team con el id. 22222222-2222-2222-2222-222222222222 en el ámbito de suscripción.Removes the Reader role from the Ann Mack Team group with ID 22222222-2222-2222-2222-222222222222 at a subscription scope.

az role assignment delete --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--subscription "00000000-0000-0000-0000-000000000000"

Quita el rol Lector de facturación al usuario alain@example.com en el ámbito de grupo de administración.Removes the Billing Reader role from the alain@example.com user at the management group scope.

az role assignment delete --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"

Pasos siguientesNext steps