Tutorial: Concesión de acceso de usuario a recursos de Azure mediante Azure PowerShell
El control de acceso basado en rol (RBAC) es la forma en la que se administra el acceso a los recursos de Azure. En este tutorial se concede a un usuario acceso para ver todos los elementos de una suscripción y administrar todo el contenido de un grupo de recursos mediante Azure PowerShell.
En este tutorial, aprenderá a:
- Conceder acceso a un usuario a distintos ámbitos
- Lista de acceso
- Quitar acceso
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para empezar, consulta 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.
Prerrequisitos
Para realizar este tutorial, necesita:
- Permisos para crear usuarios en Microsoft Entra ID (o tener un usuario existente)
- Azure Cloud Shell
- SDK de PowerShell en Microsoft Graph
Asignaciones de roles
En Azure RBAC, para conceder acceso es preciso crear una asignación de roles. Una asignación de roles consta de tres elementos: entidad de seguridad, definición de rol y ámbito. Estas son las dos asignaciones de roles que llevará a cabo en este tutorial:
Entidad de seguridad | Definición de roles | Ámbito |
---|---|---|
Usuario (Usuario de tutorial de RBAC) |
Lector | Subscription |
Usuario (Usuario de tutorial de RBAC) |
Colaborador | Resource group (rbac-tutorial-resource-group) |
Creación de un usuario
Para asignar un rol, se necesita un usuario, un grupo o una entidad de servicio. Si aún no tiene un usuario, puede crearlo.
En Azure Cloud Shell, cree una contraseña que cumpla con los requisitos de complejidad de contraseña.
$PasswordProfile = @{ Password = "<Password>" }
Cree un usuario para el dominio mediante el comando New-MgUser.
New-MgUser -DisplayName "RBAC Tutorial User" -PasswordProfile $PasswordProfile ` -UserPrincipalName "rbacuser@example.com" -AccountEnabled:$true -MailNickName "rbacuser"
DisplayName Id Mail UserPrincipalName ----------- -- ---- ----------------- RBAC Tutorial User aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb rbacuser@example.com
Crear un grupo de recursos
Use un grupo de recursos para mostrar cómo asignar un rol a un ámbito de un grupo de recursos.
Obtenga una lista de regiones con el comando Get AzLocation.
Get-AzLocation | select Location
Seleccione una ubicación próxima y asígnela a una variable.
$location = "westus"
Cree un grupo de recursos con el comando New-AzResourceGroup.
New-AzResourceGroup -Name "rbac-tutorial-resource-group" -Location $location
ResourceGroupName : rbac-tutorial-resource-group Location : westus ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group
Conceder acceso
Para conceder acceso al usuario, use el comando New-AzRoleAssignment para asignar un rol. Debe especificar la entidad de seguridad, la definición del rol y el ámbito.
Obtenga el identificador de la suscripción mediante el comando Get AzSubscription.
Get-AzSubscription
Name : Pay-As-You-Go Id : 00000000-0000-0000-0000-000000000000 TenantId : aaaabbbb-0000-cccc-1111-dddd2222eeee State : Enabled
Guarde el ámbito de la suscripción en una variable.
$subScope = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
Asigne el rol de lector al usuario en el ámbito de la suscripción.
New-AzRoleAssignment -SignInName rbacuser@example.com ` -RoleDefinitionName "Reader" ` -Scope $subScope
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e DisplayName : RBAC Tutorial User SignInName : rbacuser@example.com RoleDefinitionName : Reader RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7 ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : User CanDelegate : False
Asigne el rol de colaborador al usuario en el ámbito del grupo de recursos.
New-AzRoleAssignment -SignInName rbacuser@example.com ` -RoleDefinitionName "Contributor" ` -ResourceGroupName "rbac-tutorial-resource-group"
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group DisplayName : RBAC Tutorial User SignInName : rbacuser@example.com RoleDefinitionName : Contributor RoleDefinitionId : b24988ac-6180-42a0-ab88-20f7382dd24c ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : User CanDelegate : False
Lista de acceso
Para comprobar el acceso de la suscripción, use el comando Get-AzRoleAssignment para enumerar las asignaciones de roles.
Get-AzRoleAssignment -SignInName rbacuser@example.com -Scope $subScope
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e DisplayName : RBAC Tutorial User SignInName : rbacuser@example.com RoleDefinitionName : Reader RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7 ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : User CanDelegate : False
En la salida, puede ver que se ha asignado que el rol de lector se ha asignado al usuario del tutorial de RBAC en el ámbito de la suscripción.
Para comprobar el acceso del grupo de recursos, use el comando Get-AzRoleAssignment para enumerar las asignaciones de roles.
Get-AzRoleAssignment -SignInName rbacuser@example.com -ResourceGroupName "rbac-tutorial-resource-group"
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group DisplayName : RBAC Tutorial User SignInName : rbacuser@example.com RoleDefinitionName : Contributor RoleDefinitionId : b24988ac-6180-42a0-ab88-20f7382dd24c ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : User CanDelegate : False RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e DisplayName : RBAC Tutorial User SignInName : rbacuser@example.com RoleDefinitionName : Reader RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7 ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : User CanDelegate : False
En la salida, puede ver que ambos roles, colaborador y lector, se han asignado al usuario del tutorial de RBAC. El rol de colaborador está en el ámbito de rbac-tutorial-resource-group, mientras que el rol de lector se hereda en el ámbito de la suscripción.
(Opcional) Acceso a la lista mediante Azure Portal
Para ver el aspecto de las asignaciones de roles en Azure Portal, vea la hoja Control de acceso (IAM) de la suscripción.
Vea la hoja Control de acceso (IAM) de un grupo de recursos.
Quitar acceso
Para quitar el acceso de usuarios, grupos y aplicaciones, use Remove-AzRoleAssignment para quitar una asignación de roles.
Utilice el siguiente comando para quitar la asignación del rol de colaborador al usuario del ámbito del grupo de recursos.
Remove-AzRoleAssignment -SignInName rbacuser@example.com ` -RoleDefinitionName "Contributor" ` -ResourceGroupName "rbac-tutorial-resource-group"
Utilice el siguiente comando para quitar la asignación del rol de colaborador al usuario del ámbito de la suscripción.
Remove-AzRoleAssignment -SignInName rbacuser@example.com ` -RoleDefinitionName "Reader" ` -Scope $subScope
Limpieza de recursos
Para limpiar los recursos creados por este tutorial puede eliminar tanto el usuario como el grupo de recursos.
Elimine el grupo de recursos con el comando Remove-AzResourceGroup.
Remove-AzResourceGroup -Name "rbac-tutorial-resource-group"
Confirm Are you sure you want to remove resource group 'rbac-tutorial-resource-group' [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
Cuando se le pida confirmación, escriba Y. Tardará unos segundos en eliminarse.
Elimine el usuario mediante el comando Remove-MgUser.
$User = Get-MgUser -Filter "DisplayName eq 'RBAC Tutorial User'" Remove-MgUser -UserId $User.Id