AZ-305

Deep Dive

D1 · Identidad, Gobernanza y Monitoreo

RBAC y Roles Personalizados

El diseño de autorización en AZ-305 gira en torno al principio de menor privilegio: elegir el rol más restrictivo posible, en el ámbito más pequeño posible, asignado a grupos. Y cuando ningún rol integrado encaja, diseñar un rol personalizado.

Interactivo

🔑RBAC — herencia de roles por scope

El usuario John tiene Reader asignado en la Subscription y Contributor en RG-Frontend. Los roles fluyen hacia abajo. Pasa el cursor sobre cada nodo para ver el acceso efectivo.

Reader (hereda)Contributor (hereda)Rol asignado
Root MGMgmt GroupSubscriptionResource GroupResource👤JohnusuarioIcon-general-11Root MGTenant rootIcon-general-11Contoso CorpManagement GroupIcon-general-2Prod-SubSubscription✓ Reader asignadoIcon-general-7RG-FrontendResource Group✓ ContributorIcon-general-7RG-BackendSolo herenciaIcon-compute-21web-01Efectivo: ContributorContributor ✓

Acceso efectivo — John

Subscription

Readerassigned

RG-Frontend

Contributorassigned + inherited

RG-Backend

Readerinherited

VM web-01

Contributoreffective

Regla clave

Los permisos son aditivos. El rol más permisivo gana. Solo un Deny Assignment rompe esta regla.

⬇️ Herencia hacia abajo

Un rol en Subscription aplica a todos los RGs y recursos de esa Subscription. Un rol en RG aplica solo a los recursos de ese RG.

RBAC es aditivo

Múltiples asignaciones se suman (union). Reader en Sub + Contributor en RG = Contributor efectivo en ese RG. El más permisivo gana.

🚫 No herencia hacia arriba

Contributor en RG-Frontend no da ningún acceso en RG-Backend ni en la Subscription. Los permisos solo fluyen de arriba hacia abajo.

Modelo RBAC: roles, ámbitos y asignaciones

Una asignación RBAC = security principal (usuario, grupo, service principal, managed identity) + role definition (lista de actions permitidas) + scope (management group, suscripción, RG o recurso). Las asignaciones se heredan hacia abajo y son aditivas.

Reglas de evaluación

  • • Permisos = unión de TODAS tus asignaciones (no hay "rol más específico gana")
  • NotActions resta acciones de Actions dentro del MISMO rol — NO es un deny global
  • Deny assignments (creadas por Azure, ej. Deployment Stacks/managed apps) sí bloquean por encima de allows
  • • Control plane (ARM) vs data plane: DataActions controlan acceso a datos (blobs, colas, secretos)

Buenas prácticas de diseño

  • • Asignar a grupos, no a individuos
  • • Ámbito mínimo necesario: RG antes que suscripción, suscripción antes que MG
  • • Evitar Owner/Contributor amplios — preferir roles específicos del servicio
  • • Acceso privilegiado vía PIM (eligible), no permanente
  • • Límite: ~4000 asignaciones por suscripción — otra razón para usar grupos

Roles integrados que debes dominar

RolPermiteNO permite
OwnerTodo, incluida la gestión de RBAC
ContributorCrear/gestionar todos los recursosAsignar roles, gestionar locks de forma fiable
ReaderVer todos los recursosCualquier cambio; no lee secretos/datos
User Access AdministratorGestionar acceso (asignar roles)Gestionar recursos
Role Based Access Control AdministratorAsignar roles con condiciones (más restringido que UAA)Gestionar recursos
Storage Blob Data ContributorLeer/escribir/borrar blobs (data plane)Gestionar la storage account
Key Vault AdministratorTodo el data plane de Key Vault (RBAC mode)Gestionar el recurso Key Vault (control plane)
Network ContributorGestionar redes (VNets, NSGs...)Otros tipos de recursos
Virtual Machine ContributorGestionar VMsAcceder a la VNet ni iniciar sesión en la VM

Trampa clásica

Contributor NO puede asignar roles. Si el escenario pide que alguien gestione recursos Y dé acceso a otros, necesita Owner o Contributor + User Access Administrator (mejor: RBAC Administrator con condiciones, menor privilegio).

Roles personalizados — cuándo y cómo

Crear un rol personalizado solo cuando ningún rol integrado cumple el menor privilegio. Ejemplo clásico: "los operadores deben poder reiniciar VMs pero no crearlas ni eliminarlas" — ningún rol integrado da exactamente eso.

Anatomía de un rol personalizado

{
  "Name": "VM Operator",
  "Description": "Reiniciar y ver VMs",
  "Actions": [
    "Microsoft.Compute/virtualMachines/read",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Compute/virtualMachines/start/action"
  ],
  "NotActions": [],
  "DataActions": [],
  "AssignableScopes": [
    "/providers/Microsoft.Management/
     managementGroups/produccion"
  ]
}

Reglas de diseño

  • AssignableScopes define DÓNDE puede asignarse — usar management group para reutilizarlo en todas las suscripciones hijas
  • • Patrón rápido: clonar un rol integrado y recortar acciones (Actions/NotActions)
  • • Wildcard * permitido pero desaconsejado (rompe menor privilegio)
  • • Límite: 5000 roles personalizados por tenant
  • • No olvides DataActions si el acceso es a datos (blobs, secretos, mensajes)

Roles de Entra ID vs Azure RBAC

Roles de Entra ID (directorio)

  • Gobiernan el DIRECTORIO: usuarios, grupos, apps, licencias
  • Ejemplos: Global Administrator, User Administrator, Application Administrator
  • Ámbito: el tenant (o administrative units)
  • No dan acceso a recursos de Azure por sí mismos

Azure RBAC (recursos)

  • Gobiernan RECURSOS: VMs, storage, redes, bases de datos
  • Ejemplos: Owner, Contributor, Reader, roles por servicio
  • Ámbito: management group / suscripción / RG / recurso
  • Un Global Admin NO ve recursos Azure... salvo que active "elevate access" (se otorga User Access Administrator en root — auditarlo siempre)

Tabla de decisión

RequisitoDiseño
Devs gestionan recursos de su RG pero no dan acceso a otrosContributor en el resource group
App lee blobs sin claves de cuentaManaged identity + Storage Blob Data Reader (DataAction)
Operadores solo reinician/arrancan VMsRol personalizado (read + start/restart actions)
Reutilizar un rol personalizado en 20 suscripcionesAssignableScopes = management group padre
Helpdesk resetea contraseñas de usuariosRol de Entra ID: Helpdesk/User Administrator (no RBAC)
Gestionar quién accede sin poder tocar recursosUser Access Administrator (o RBAC Administrator con condiciones)
Acceso de administrador solo durante incidentesPIM con asignación eligible
1000 usuarios con el mismo accesoAsignación a un grupo de seguridad, nunca individual

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

El equipo de operaciones debe poder iniciar, detener y reiniciar las VMs de producción en 15 suscripciones, sin poder crearlas, eliminarlas ni modificar su configuración. Quieres mínimo esfuerzo administrativo. ¿Qué diseñas?

Inicia sesión para llevar tu progreso.