¿Qué son los roles personalizados en Azure?
A veces, los roles integrados no conceden el nivel preciso de acceso que necesita. Los roles personalizados le permiten definir roles que satisfagan las necesidades específicas de su organización. Puede asignar los roles personalizados de Azure que cree a usuarios, grupos y entidades de servicio en el ámbito de la suscripción, el grupo de recursos o el recurso.
En esta unidad, obtendrá información sobre los roles personalizados en el control de acceso basado en rol (RBAC) de Azure.
Roles de Microsoft Entra y Azure
Los roles de Microsoft Entra y los roles de Azure a menudo se confunden cuando se trabaja por primera vez con Azure. Los roles de Microsoft Entra proporcionan el mecanismo para administrar permisos para los recursos de Microsoft Entra, como las cuentas de usuario y las contraseñas. Los roles de Azure proporcionan una gran cantidad de funcionalidades para administrar recursos de Azure, como máquinas virtuales (VM) en un nivel granular.
La siguiente tabla muestra las sutiles diferencias entre cómo se pueden configurar y administrar ambos:
Roles de Azure | Roles de Microsoft Entra |
---|---|
Administrar el acceso a recursos de Azure como máquinas virtuales, almacenamiento, redes, etc. | Administrar el acceso a recursos de Microsoft Entra, como cuentas de usuario y contraseñas |
Niveles de ámbito múltiples (grupo de administración, suscripción, grupo de recursos, recurso) | Ámbito solo en el nivel de inquilino |
Información de roles accesible a través de Azure Portal, la CLI de Azure, Azure PowerShell, plantillas de Azure Resource Manager, API de REST | Información de roles accesible en el portal de administración de Azure, en el centro de administración de Microsoft 365, en Microsoft Graph y en Microsoft Graph PowerShell |
En nuestro escenario, necesitamos un rol personalizado para administrar máquinas virtuales de Azure en el ámbito de la suscripción, por lo que necesitamos usar roles personalizados en RBAC de Azure.
Asignación y ámbito de roles personalizados
Los usuarios con los roles Administrador de acceso de usuario o Propietario pueden crear o asignar roles personalizados en RBAC de Azure.
Puede asignar roles personalizados a:
Entidad de seguridad | Resumen |
---|---|
User | Persona que tiene un perfil en Microsoft Entra ID |
Grupo | Un conjunto de usuarios creados en Microsoft Entra ID |
Entidades de servicio | Una identidad de seguridad usada por aplicaciones o servicios para acceder a recursos específicos de Azure |
Identidad administrada | Identidad de Microsoft Entra ID administrada automáticamente por Azure |
Puede limitar la asignación y los permisos relacionados a distintos niveles dentro de Azure. Los diferentes ámbitos son los siguientes:
- Suscripción
- Grupo de recursos
- Recurso individual
Definición y estructura de roles
Una definición de rol personalizado se divide en una colección de permisos diferentes. Cada definición enumera las operaciones que se pueden realizar, por ejemplo, lectura, escritura y eliminación. La definición se forma mediante estas estructuras:
{
"Name": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}
En el ejemplo siguiente se muestra la definición de roles para el rol Colaborador:
{
"Name": "Contributor",
"Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"IsCustom": false,
"Description": "Lets you manage everything except access to resources.",
"Actions": [
"*"
],
"NotActions": [
"Microsoft.Authorization/*/Delete",
"Microsoft.Authorization/*/Write",
"Microsoft.Authorization/elevateAccess/Action",
"Microsoft.Blueprint/blueprintAssignments/write",
"Microsoft.Blueprint/blueprintAssignments/delete"
],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/"
]
}
Las definiciones de roles se declaran con el siguiente formato:
{Company}.{ProviderName}/{resourceType}/{action}
La parte de la acción suele ser una de las acciones siguientes:
- *
- lectura
- escritura
- acción
- eliminar
Definición de un rol personalizado para administrar máquinas virtuales
Para ayudarle a identificar los permisos que se van a incluir en una definición de roles, use la lista de operaciones del proveedor de recursos de Azure Resource Manager y examine los roles integrados de Azure que tienen permisos similares a los que necesita.
Revisión de roles integrados
En este escenario, el rol integrado Colaborador de la máquina virtual tiene más permisos de los que necesitan los empleados y el inicio de sesión de administrador de máquina virtual no tiene suficientes.
El siguiente comando de la CLI de Azure devuelve los permisos para el rol integrado Colaborador de la máquina virtual:
az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'
En la siguiente lista se muestran los permisos para el rol integrado Colaborador de la máquina virtual:
[
"Microsoft.Authorization/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/locations/*",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.DevTestLab/schedules/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Network/applicationGateways/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatRules/join/action",
"Microsoft.Network/loadBalancers/probes/join/action",
"Microsoft.Network/loadBalancers/read",
"Microsoft.Network/locations/*",
"Microsoft.Network/networkInterfaces/*",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.RecoveryServices/locations/*",
"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
"Microsoft.RecoveryServices/Vaults/backupPolicies/read",
"Microsoft.RecoveryServices/Vaults/backupPolicies/write",
"Microsoft.RecoveryServices/Vaults/read",
"Microsoft.RecoveryServices/Vaults/usages/read",
"Microsoft.RecoveryServices/Vaults/write",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.SqlVirtualMachine/*",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Support/*"
]
Para obtener esta lista en PowerShell, ejecute el siguiente comando:
Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json
En nuestro escenario, queremos tener un rol personalizado que nos permita supervisar y reiniciar las máquinas virtuales de una suscripción específica, por lo que queremos incluir las siguientes acciones en el nivel de suscripción:
- Acceso de lectura a los recursos de proceso, red y almacenamiento
- Capacidad para iniciar y reiniciar máquinas virtuales
- Acceso a los grupos de recursos de la suscripción
- Acceso a los recursos de supervisión
Hay algunas operaciones en la definición del rol Colaborador de máquina virtual que se pueden usar, como "Microsoft.Insights/alertRules/*"
para la supervisión, pero reiniciar y algunas otras no están enumeradas como acciones en esa definición de roles.
Búsqueda de operaciones del proveedor de recursos
Se puede encontrar la acción de reinicio de la máquina virtual en la lista de operaciones del proveedor de recursos de Azure Resource Manager o ejecutando el siguiente comando PowerShell para devolver las operaciones de las máquinas virtuales:
Get-AzProviderOperation */virtualMachines/*
Se devuelve la siguiente operación para el reinicio en la lista:
Operation : Microsoft.Compute/virtualMachines/restart/action
OperationName : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName : Virtual Machines
Description : Restarts the virtual machine
IsDataAction : False
Puede usar el cmdlet Get-AzProviderOperation
de Azure PowerShell para obtener la lista más reciente de operaciones del proveedor de recursos. En la CLI de Azure, use el comando az provider operation show
. Encontrará una lista publicada de los proveedores de recursos y las operaciones en el contenido de RBAC de Azure, en Docs.
Creación de definición de roles de operador de máquina virtual
Suponga que ha seleccionado lo que necesitaba mediante la observación de las definiciones de roles integrados relacionadas y la lista de operaciones del proveedor de recursos. Terminará con la siguiente definición de rol para el rol personalizado. Se usará esta definición de rol para el rol personalizado.
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}