Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El control de acceso basado en rol de Azure (Azure RBAC) es el sistema de autorización que se usa 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 de PowerShell de Azure Az para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para obtener información sobre cómo migrar al módulo Az PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Prerrequisitos
Para asignar roles, debe tener:
-
Microsoft.Authorization/roleAssignments/writepermisos, como Administrador de control de acceso basado en roles - PowerShell en Azure Cloud Shell o Azure PowerShell
- La cuenta que usa para ejecutar el comando de PowerShell debe tener el permiso de Microsoft Graph
Directory.Read.All.
Pasos para asignar un rol de Azure
Asignar un rol consiste en 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.
Usuario
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
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
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 un principal del servicio, emplee el identificador de objeto y no el identificador de aplicación.
Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id
Identidad administrada
Para una identidad administrada, ya sea asignada por el sistema o por el usuario, necesita el ID del 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 seleccionar en una lista de varios roles integrados de Azure o puede usar sus propios roles personalizados. Es un procedimiento recomendado conceder acceso con el privilegio mínimo necesario, por lo 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í se muestra cómo enumerar los detalles de un rol determinado.
Get-AzRoleDefinition -Name <roleName>
Para más información, consulte Enumeración de definiciones de roles de Azure.
Paso 3: Identificar el ámbito necesario
Azure proporciona cuatro niveles de ámbito: recurso, grupo de recursos, suscripción y grupo de administración. Se recomienda conceder acceso con el privilegio mínimo necesario, por lo que evite asignar un rol en un ámbito más amplio. Para obtener más información sobre el ámbito, consulte Descripción del ámbito.
Ámbito del recurso
Para el ámbito de recursos, necesitará el id. de recurso. Puede encontrar el identificador de recurso examinando las propiedades del recurso en Azure Portal. Un identificador 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 en Azure Portal o puede usar Get-AzManagementGroup.
Get-AzManagementGroup
Paso 4: Asignación de roles
Para asignar un rol, use el comando New-AzRoleAssignment . Según el á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>
Asignar ejemplos de roles
Asignación de un rol para 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-555555555555 y el identificador de aplicación 66666666-6666-6666-6666-666666666666 en el á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-555555555555 y el identificador de aplicación 66666666-6666-6666-6666-666666666666 en un ámbito de recurso para un contenedor de blobs llamado 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 recurso 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 para un usuario en un ámbito de grupo de recursos
Asigna el rol Colaborador de 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
Alternativamente, puede especificar el grupo de recursos completamente calificado 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 para un usuario mediante el identificador de rol único en un ámbito de grupo de recursos
Hay un par de veces que un nombre de rol puede cambiar, por ejemplo:
- Está usando su propio rol personalizado y decide cambiar el nombre.
- Usa un rol de vista previa que tiene (versión preliminar) en el nombre. Cuando se libera el rol, se cambia el nombre del rol.
Incluso si se cambia el nombre de un rol, el identificador de rol no cambia. Si usa scripts o automatización para crear las asignaciones de roles, se recomienda usar el identificador de rol único en lugar del nombre del rol. Por lo 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 máquina virtual al patlong@contoso.com usuario 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 para una aplicación en un ámbito de 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 para un usuario en un ámbito de suscripción
Asigna el rol Lector al annm@example.com usuario 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 para un usuario en un ámbito de grupo de administración
Asigna el rol Lector de facturación al usuario alain@example.com en un ámbito de 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