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. Consulte Instalación de Azure PowerShell para empezar. 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:

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

Para un usuario de Microsoft Entra, obtenga el nombre principal de usuario, como patlong@contoso.com o el identificador de objeto de usuario. Para obtener el identificador de objeto, puede usar Get-AzADUser.

Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id

Grupo

Para un grupo de Microsoft Entra, necesita el identificador de objeto de grupo. Para obtener el identificador de objeto, puede usar Get-AzADGroup.

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

Entidad de servicio

Para una entidad de servicio de Microsoft Entra (identidad usada por una aplicación), necesita el identificador de objeto de la 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: Seleccionar el rol adecuado

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: Identificar el á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: Asignación de roles

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 Colaborador de datos de Storage Blob a una entidad de servicio con el identificador de objeto 55555555-5555-5555-5555-55555555555555555555 Identificador 666666666-6666-6666-6666-6666666666666666 en un ámbito de recurso para 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 Colaborador de datos de Storage Blob a una entidad de servicio con el identificador de objeto 55555555-5555-5555-5555-555555555555555 y el identificador de aplicación 55555566666666-6666-6666-6666-6666666666666666 en un ámbito de recurso para 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

Pasos siguientes