¿Qué son los roles personalizados en Azure?

Completado

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.

Diagrama en el que se muestra la relación de roles de Azure y roles de Microsoft Entra.

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

Diagrama en el que se muestran los ámbitos para la asignación de roles y su relación entre sí.

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}" 
   ]
   }

Comprobación de conocimientos

1.

¿Qué se incluye en una definición de roles de Azure personalizada?

2.

¿Qué comandos le ayudan a determinar qué operaciones se van a agregar a una definición de rol personalizada?