Asignación de roles de Azure mediante 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. Para conceder acceso, debe asignar roles a usuarios, grupos, entidades de servicio o identidades administradas en un ámbito determinado. En este artículo se describe cómo asignar roles mediante Azure PowerShell.
Nota:
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Requisitos previos
Para asignar roles, debe tener:
Microsoft.Authorization/roleAssignments/write
permisos, como Administrador de control de acceso basado en roles- PowerShell en Azure Cloud Shell o Azure PowerShell.
- La cuenta que use para ejecutar el comando de PowerShell debe tener el permiso
Directory.Read.All
de Microsoft Graph.
Pasos para asignar un rol de Azure
Para asignar un rol, se necesitan tres elementos: entidad de seguridad, definición de rol y ámbito.
Paso 1: determinar quién necesita acceso
Puede asignar un rol a un usuario, grupo, entidad de servicio o identidad administrada. Para asignar un rol, es posible que tenga que especificar el identificador único del objeto. El identificador tiene el formato: 11111111-1111-1111-1111-111111111111
. Puede obtener el identificador mediante Azure Portal o Azure PowerShell.
User
En el caso de los usuarios de Microsoft Entra, debe obtener el nombre principal de usuario, como patlong@contoso.com o el id. de objeto del usuario. Para obtener el identificador de objeto, puede usar Get-AzADUser.
Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id
Grupo
En el caso de los grupos de Microsoft Entra, necesita el identificador del objeto grupo. Para obtener el identificador de objeto, puede usar Get-AzADGroup.
Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id
Entidad de servicio
En el caso de las entidades de servicio de Microsoft Entra (identidad que usa una aplicación), necesita el id. del objeto entidad de servicio. Para obtener el identificador de objeto, puede usar Get-AzADServicePrincipal. Para una entidad de servicio, use el id. de objeto y no el de aplicación.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
Identidad administrada
Para una identidad administrada que haya asignado el sistema o el usuario, es necesario el id. de objeto. Para obtener el identificador de objeto, puede usar Get-AzADServicePrincipal.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
Paso 2: Selecciona el rol apropiado
Los permisos se agrupan en roles. Puede seleccionarlos de una lista de varios roles integrados de Azure o puede utilizar sus propios roles personalizados. Es recomendable conceder acceso con el menor privilegio necesario, así que evite asignar un rol más amplio.
Para enumerar los roles y obtener el identificador de rol único, puede usar Get-AzRoleDefinition.
Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id
Aquí verá cómo mostrar los detalles de un rol determinado.
Get-AzRoleDefinition -Name <roleName>
Para obtener más información, consulte la Lista de definiciones de roles de Azure.
Paso 3: Identificación del ámbito necesario
Azure proporciona cuatro niveles de ámbito: recursos, grupo de recursos, suscripción y grupo de administración. Es recomendable conceder acceso con el menor privilegio necesario, así que evite asignar un rol a un ámbito más amplio. Para obtener más información sobre el ámbito, vea Comprensión del ámbito.
Ámbito del recurso
Para el ámbito de recursos, necesitará el id. de recurso. Puede buscar el id. de recurso examinando las propiedades del recurso en Azure Portal. El id. de recurso tiene el formato siguiente.
/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
Ámbito del grupo de recursos
Para el ámbito del grupo de recursos, necesita el nombre del grupo de recursos. Puede encontrar el nombre en la página Grupos de recursos de Azure Portal o puede usar Get-AzResourceGroup.
Get-AzResourceGroup
Ámbito de la suscripción
Para el ámbito de la suscripción, necesitará el id. de la suscripción. Puede encontrar el identificador en la página Suscripciones de Azure Portal o puede usar Get-AzSubscription.
Get-AzSubscription
Ámbito del grupo de administración
Para el ámbito del grupo de administración, necesita el nombre del grupo de administración. Puede encontrar el nombre en la página Grupos de administración de Azure Portal o puede usar Get-AzManagementGroup.
Get-AzManagementGroup
Paso 4: Asignar un rol
Para asignar un rol, use el comando New-AzRoleAssignment. Dependiendo del ámbito, el comando normalmente tiene uno de los siguientes formatos.
Ámbito del recurso
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionId <roleId> `
-ResourceName <resourceName> `
-ResourceType <resourceType> `
-ResourceGroupName <resourceGroupName>
Ámbito del grupo de recursos
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
Ámbito de la suscripción
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
Ámbito del grupo de administración
New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
Ejemplos de asignación de roles
Asignación de un rol a todos los contenedores de blobs en un ámbito de recursos de la cuenta de almacenamiento
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 y el id. de aplicación 66666666-6666-6666-6666-666666666666 en el ámbito de recursos de una cuenta de almacenamiento denominada storage12345.
PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/providers/Microsoft.Authorization/roleAssignments/cccccccc-cccc-cccc-cccc-cccccccccccc
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345
DisplayName : example-identity
SignInName :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId : 55555555-5555-5555-5555-555555555555
ObjectType : ServicePrincipal
CanDelegate : False
Asignación de un rol para un ámbito de recursos de un contenedor de blobs específico
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 y el id. de aplicación 66666666-6666-6666-6666-666666666666 en el ámbito de recursos de un contenedor de blobs denominado blob-container-01.
PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "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"
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignm
ents/dddddddd-dddd-dddd-dddd-dddddddddddd
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01
DisplayName : example-identity
SignInName :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId : 55555555-5555-5555-5555-555555555555
ObjectType : ServicePrincipal
CanDelegate : False
Asignación de un rol para un grupo en un ámbito de recursos de red virtual específico
Asigna el rol Colaborador de la máquina virtual al grupo Pharma Sales Admins con el identificador aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa en el ámbito del recurso de una red virtual denominada pharma-sales-project-network.
PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceName pharma-sales-project-network `
-ResourceType Microsoft.Network/virtualNetworks `
-ResourceGroupName MyVirtualNetworkResourceGroup
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network/providers/Microsoft.Authorizat
ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network
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
Asignación de un rol a un usuario en el ámbito de un grupo de recursos
Asigna el rol Colaborador de la máquina virtual al usuario patlong@contoso.com en el ámbito del grupo de recursos pharma-sales.
PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.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 : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
Como alternativa, puede especificar el grupo de recursos completo con el parámetro -Scope
:
PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-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 : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
Asignación de un rol a un usuario con el identificador de rol único en el ámbito de un grupo de recursos
Hay un par de veces en las que el nombre de un rol puede cambiar, por ejemplo:
- Utiliza su propio rol personalizado y decide cambiar el nombre.
- Utiliza una rol de versión preliminar que tiene (Versión preliminar) en el nombre. Cuando se libera el rol, se cambia su nombre.
Incluso si se cambia el nombre de un rol, su identificador no cambia. 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. Por tanto, si se cambia el nombre de un rol, es más probable que los scripts funcionen.
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.
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 : Pat Long
SignInName : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
Asignación de un rol a una aplicación en el ámbito de un grupo de recursos
Asigna el rol Colaborador de la máquina virtual a una aplicación con el identificador de objeto de la entidad de servicio 77777777-7777-7777-7777-777777777777 en el ámbito del grupo de recursos pharma-sales.
PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales
RoleAssignmentId : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName : MyApp1
SignInName :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
Asignación de un rol a un usuario en el ámbito de una suscripción
Asigna el rol Lector al usuario annm@example.com en el ámbito de una suscripción.
PS C:\> New-AzRoleAssignment -SignInName annm@example.com `
-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 : Ann M
SignInName : annm@example.com
RoleDefinitionName : Reader
RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
Asignación de un rol a un usuario en el ámbito de un grupo de administración
Asigna el rol Lector de facturación al usuario alain@example.com en el ámbito de un grupo de administración.
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