Concesión de permisos de usuario a directivas específicas de laboratorio
Información general
Este artículo muestra cómo usar PowerShell para conceder permisos de usuario a una directiva concreta de laboratorio. De este modo, se pueden aplicar permisos en función de las necesidades de cada usuario. Por ejemplo, quizá prefiera conceder a un usuario determinado la posibilidad de cambiar la configuración de directiva de máquina virtual, pero no las directivas de costos.
Directivas como recursos
Como se ha explicado en el artículo Control de acceso basado en rol de Azure (RBAC de Azure), RBAC de Azure permite la administración de acceso específica a los recursos de Azure. Gracias a RBAC de Azure, puede dividir las tareas entre el equipo de DevOps y conceder a los usuarios únicamente el nivel de acceso que necesitan para realizar su trabajo.
En DevTest Labs, una directiva es un tipo de recurso que permite la acción de RBAC de Azure Microsoft.DevTestLab/labs/policySets/policies/ . Cada directiva de laboratorio es un recurso en el tipo de recurso Directiva, y se puede asignar como ámbito a un rol de Azure.
Por ejemplo, para conceder permisos de lectura y escritura a los usuarios para la directiva Tamaños permitidos de máquina virtual, debe crear un rol personalizado que funcione con la acción Microsoft.DevTestLab/labs/policySets/policies/ y, después, asignar los usuarios adecuados a este rol personalizado en el ámbito de Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.
Para obtener más información sobre los roles personalizados de RBAC de Azure, vea Roles personalizados de Azure.
Creación de un rol personalizado de laboratorio con PowerShell
Para empezar, deberá instalar Azure PowerShell.
Una vez haya configurado los cmdlets de Azure PowerShell, podrá realizar las siguientes tareas:
- Enumerar todas las operaciones y acciones para un proveedor de recursos
- Enumerar las acciones de un rol determinado
- Crear un rol personalizado
El siguiente script de PowerShell muestra ejemplos de cómo realizar estas tareas:
# List all the operations/actions for a resource provider.
Get-AzProviderOperation -OperationSearchString "Microsoft.DevTestLab/*"
# List actions in a particular role.
(Get-AzRoleDefinition "DevTest Labs User").Actions
# Create custom role.
$policyRoleDef = (Get-AzRoleDefinition "DevTest Labs User")
$policyRoleDef.Id = $null
$policyRoleDef.Name = "Policy Contributor"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<SubscriptionID> ")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/policySets/policies/*")
$policyRoleDef = (New-AzRoleDefinition -Role $policyRoleDef)
Asignación de permisos a un usuario para una directiva determinada utilizando roles personalizados
Una vez haya definido los roles personalizados, puede asignárselos a los usuarios. A fin de asignar un rol personalizado a un usuario, primero debe obtener el ObjectId que representa a ese usuario. Para ello, use el cmdlet Get-AzADUser.
En el ejemplo siguiente, el valor ObjectId del usuario SomeUser es aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb.
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Una vez que tenga el ObjectId para el usuario y un nombre de rol personalizado, puede asignar ese rol al usuario con el cmdlet New-AzRoleAssignment:
PS C:\>New-AzRoleAssignment -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -RoleDefinitionName "Policy Contributor" -Scope /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.DevTestLab/labs/<LabName>/policySets/default/policies/AllowedVmSizesInLab
En el ejemplo anterior, se utiliza la directiva AllowedVmSizesInLab . Puede usar cualquiera de las directivas siguientes:
- MaxVmsAllowedPerUser
- MaxVmsAllowedPerLab
- AllowedVmSizesInLab
- LabVmsShutdown
Creación de un rol para permitir que los usuarios realicen una tarea específica
En este script de ejemplo se crea el rol Usuario avanzado de DevTest Labs, que tiene permiso para iniciar y detener todas las VM del laboratorio:
$policyRoleDef = Get-AzRoleDefinition "DevTest Labs User"
$policyRoleDef.Actions.Remove('Microsoft.DevTestLab/Environments/*')
$policyRoleDef.Id = $null
$policyRoleDef.Name = "DevTest Labs Advanced User"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<subscription Id>")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Start/action")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Stop/action")
$policyRoleDef = New-AzRoleDefinition -Role $policyRoleDef
Introducción a Azure DevTest Labs
¿Acaba de llegar a Azure? Cree una cuenta gratuita de Azure.
¿Ya está familiarizado con Azure? Cree el primer laboratorio y empiece a trabajar con Azure DevTest Labs en cuestión de minutos.
Pasos siguientes
Una vez que haya concedido permisos de usuario a las directivas específicas del laboratorio, estos son algunos de los siguientes pasos que debe considerar: