Incorporación o eliminación de asignaciones de roles de Azure con Azure PowerShellAdd or remove Azure role assignments using Azure PowerShell

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 Azure PowerShell.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 PowerShell.

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

PrerrequisitosPrerequisites

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

Obtener los identificadores de objetoGet object IDs

Para agregar o quitar asignaciones de roles, es posible que tenga que especificar el identificador único de un objeto.To add or remove role assignments, you might need to specify the unique ID of an 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 Azure PowerShell.You can get the ID using the Azure portal or Azure PowerShell.

UsuarioUser

Para obtener el identificador del objeto de un usuario de Azure AD, puede usar Get-AzADUser.To get the object ID for an Azure AD user, you can use Get-AzADUser.

Get-AzADUser -StartsWith <string_in_quotes>
(Get-AzADUser -DisplayName <name_in_quotes>).id

GrupoGroup

Para obtener el identificador del objeto de un grupo de Azure AD, puede usar Get-AzADGroup.To get the object ID for an Azure AD group, you can use Get-AzADGroup.

Get-AzADGroup -SearchString <group_name_in_quotes>
(Get-AzADGroup -DisplayName <group_name_in_quotes>).id

ApplicationApplication

Para obtener el identificador de objeto de una entidad de servicio de Azure AD (identidad usada por una aplicación), puede usar Get-AzADServicePrincipal.To get the object ID for an Azure AD service principal (identity used by an application), you can use Get-AzADServicePrincipal. 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.

Get-AzADServicePrincipal -SearchString <service_name_in_quotes>
(Get-AzADServicePrincipal -DisplayName <service_name_in_quotes>).id

Adición de una asignación de rolesAdd 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.

Usuario en un ámbito del grupo de recursosUser at a resource group scope

Para agregar una asignación de roles para un usuario en el ámbito de un grupo de recursos, use New-AzRoleAssignment.To add a role assignment for a user at a resource group scope, use New-AzRoleAssignment.

New-AzRoleAssignment -SignInName <email_or_userprincipalname> -RoleDefinitionName <role_name> -ResourceGroupName <resource_group_name>
PS C:\> New-AzRoleAssignment -SignInName alain@example.com -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName pharma-sales


RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
                     oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Uso del identificador de rol únicoUsing the unique role ID

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.

Importante

Se ofrece una versión preliminar sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción.A preview version is provided without a service level agreement, and it's not recommended for production workloads. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.Certain features might not be supported or might have constrained capabilities. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

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.

Para agregar una asignación de roles con el identificador de rol único en lugar del nombre de rol, use New-AzRoleAssignment.To add a role assignment using the unique role ID instead of the role name, use New-AzRoleAssignment.

New-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionId <role_id> -Scope <resource_group_name/resource/management groups>

En el ejemplo siguiente, se asigna el rol Colaborador de la máquina virtual al usuario alain@example.com en el ámbito del grupo de recursos pharma-sales.The following example assigns the Virtual Machine Contributor role to alain@example.com user at the pharma-sales resource group scope. Para obtener el identificador de rol único, puede usar Get-AzRoleDefinition o consultar Roles integrados de Azure.To get the unique role ID, you can use Get-AzRoleDefinition or see Azure built-in roles.

PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 -RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c -Scope /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Grupo en el ámbito de un recursoGroup at a resource scope

Para agregar una asignación de roles para un grupo en un ámbito de recurso, use New-AzRoleAssignment.To add a role assignment for a group at a resource scope, use New-AzRoleAssignment. Para obtener información sobre cómo obtener el identificador de objeto del grupo, consulte Obtener identificadores de objeto.For information about how to get the object ID of the group, see Get object IDs.

New-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -ResourceName <resource_name> -ResourceType <resource_type> -ParentResource <parent resource> -ResourceGroupName <resource_group_name>
PS C:\> Get-AzADGroup -SearchString "Pharma"

SecurityEnabled DisplayName         Id                                   Type
--------------- -----------         --                                   ----
           True Pharma Sales Admins aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa Group

PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa -RoleDefinitionName "Virtual Machine Contributor" -ResourceName RobertVirtualNetwork -ResourceType Microsoft.Network/virtualNetworks -ResourceGroupName RobertVirtualNetworkResourceGroup

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/RobertVirtualNetwork/providers/Microsoft.Authorizat
                     ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/RobertVirtualNetwork
DisplayName        : Pharma Sales Admins
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType         : Group
CanDelegate        : False

Aplicación en el ámbito de una suscripciónApplication at a subscription scope

Para agregar una asignación de roles para una aplicación en un ámbito de suscripción, use New-AzRoleAssignment.To add a role assignment for an application at a subscription scope, use New-AzRoleAssignment. Para obtener información sobre cómo obtener el identificador de objeto de la aplicación, consulte Obtener identificadores de objeto.For information about how to get the object ID of the application, see Get object IDs.

New-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -Scope /subscriptions/<subscription_id>
PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 -RoleDefinitionName "Reader" -Scope /subscriptions/00000000-0000-0000-0000-000000000000

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName        : MyApp1
SignInName         :
RoleDefinitionName : Reader
RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

Usuario en el ámbito de un grupo de administraciónUser at a management group scope

Para agregar una asignación de roles para un usuario en el ámbito de un grupo de administración, use New-AzRoleAssignment.To add a role assignment for a user at a management group scope, use New-AzRoleAssignment. Para obtener el identificador del grupo de administración, puede encontrarlo en la hoja Grupos de administración de Azure Portal o usar Get-AzManagementGroup.To get the management group ID, you can find it on the Management groups blade in the Azure portal or you can use Get-AzManagementGroup.

New-AzRoleAssignment -SignInName <email_or_userprincipalname> -RoleDefinitionName <role_name> -Scope /providers/Microsoft.Management/managementGroups/<group_id>
PS C:\> New-AzRoleAssignment -SignInName alain@example.com -RoleDefinitionName "Billing Reader" -Scope /providers/Microsoft.Management/managementGroups/marketing-group

RoleAssignmentId   : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope              : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId   : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

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

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

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

PS C:\> Remove-AzRoleAssignment -SignInName alain@example.com -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName pharma-sales

En el ejemplo siguiente se quita el rol <nombre_del_rol> de <id_del_objeto> en un ámbito de suscripción.The following example removes the <role_name> role from <object_id> at a subscription scope.

Remove-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -Scope /subscriptions/<subscription_id>

En el ejemplo siguiente se quita el rol <nombre_del_rol> de <id_del_objeto> en el ámbito del grupo de administración.The following example removes the <role_name> role from <object_id> at the management group scope.

Remove-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName <role_name> -Scope /providers/Microsoft.Management/managementGroups/<group_id>

Si se obtiene un mensaje de error parecido al siguiente: "La información proporcionada no se asigna a una asignación de roles", asegúrese de especificar también los parámetros -Scope o -ResourceGroupName.If you get the error message: "The provided information does not map to a role assignment", make sure that you also specify the -Scope or -ResourceGroupName parameters. Para más información, consulte Solución de problemas de RBAC de Azure.For more information, see Troubleshoot Azure RBAC.

Pasos siguientesNext steps