AZ-104

Deep Dive

Practicar ahora
D1 · Identidad y Acceso

Azure Policy y Cumplimiento

Azure Policy permite evaluar y controlar el cumplimiento de recursos a escala. Es una de las secciones más frecuentes en el AZ-104: efectos, ámbito, iniciativas y la diferencia entre audit y deny son preguntas garantizadas.

Icon-manage-316

¿Qué es Azure Policy?

Azure Policy es un servicio de gobernanza que permite crear, asignar y gestionar políticas que controlan o auditan la configuración de recursos en Azure. A diferencia de RBAC (que controla quién puede hacer qué), Policy controla qué configuraciones están permitidas independientemente de quién ejecute la acción.

RBAC

Quién puede hacer qué. Controla acciones de usuarios y servicios.

Policy

Qué configuración está permitida. Controla el estado de los recursos.

Locks

Qué operaciones de gestión están bloqueadas sobre un recurso específico.

Casos de uso típicos

  • •Exigir que todas las VMs tengan un tag de "CostCenter"
  • •Prohibir crear recursos fuera de regiones aprobadas
  • •Requerir SKUs específicos de Storage (solo LRS en dev)
  • •Auditar VMs sin extensión de antivirus instalada
  • •Deployar automáticamente agente Log Analytics en nuevas VMs
Icon-manage-316

Definiciones de Policy

Una definición de policy es un documento JSON que describe las condiciones bajo las cuales se aplica y el efecto resultante. Tiene dos partes clave: policyRule (condición + efecto) y parameters (valores configurables).

CampoDescripciónEjemplo
displayNameNombre legible de la policy"Require tags on resources"
descriptionExplicación detallada del propósito"All resources must have a CostCenter tag"
modeAlcance: All (todos) o Indexed (solo con tags y location)"All"
parametersValores parametrizables en la asignación{ "tagName": { "type": "String" } }
policyRule.ifCondición lógica que activa la policy{ "field": "tags", "notContainsKey": "[parameters('tagName')]" }
policyRule.then.effectAcción cuando se cumple la condición"deny" | "audit" | "modify"

// Estructura mínima de una Policy Definition

{
  "mode": "All",
  "parameters": {
    "allowedLocations": {
      "type": "Array",
      "metadata": { "displayName": "Allowed locations" }
    }
  },
  "policyRule": {
    "if": {
      "not": {
        "field": "location",
        "in": "[parameters('allowedLocations')]"
      }
    },
    "then": { "effect": "deny" }
  }
}

Tipos de definición

Built-in

Creadas y mantenidas por Microsoft. No modificables. Prefijo /providers/Microsoft.Authorization/policyDefinitions/

Custom

Creadas por tu organización. Requieren JSON propio. Límite: 500 custom policies por tenant.

Efectos — deny, audit, modify...

El efecto determina qué pasa cuando la condición de la policy se cumple. El AZ-104 evalúa especialmente la diferencia entre deny (bloquea la operación) y audit (solo registra, no bloquea).

EfectoComportamientoBloquea?Cuándo usar
denyBloquea la operación PUT/PATCH si viola la policy. Devuelve error 403.✅ SíNorma que NUNCA se debe incumplir
auditPermite la operación pero marca el recurso como NonCompliant en el dashboard.❌ NoVisibilidad sin impacto operativo
auditIfNotExistsAudita si un recurso relacionado NO existe (ej: VM sin extensión).❌ NoDetectar recursos faltantes relacionados
modifyAgrega, actualiza o elimina tags/propiedades durante CREATE/UPDATE.❌ NoEstandarizar tags automáticamente
appendAñade campos al recurso durante CREATE/UPDATE (sin eliminar existentes).❌ NoForzar configuración adicional
deployIfNotExistsDespliega un recurso relacionado si no existe (usa identidad administrada).❌ NoRemediar recursos existentes automáticamente
disabledLa policy está definida pero no se evalúa. Útil para testing.❌ NoDesactivar temporalmente sin borrar

Orden de evaluación de efectos

Cuando varias policies aplican, Azure evalúa los efectos en este orden de precedencia:

disabled→
append→
deny→
audit→
modify→
auditIfNotExists→
deployIfNotExists
Icon-manage-304

Iniciativas (Policy Sets)

Una iniciativa (también llamada Policy Set) agrupa múltiples definiciones de policy en un único objeto asignable. Facilita la gestión cuando necesitas aplicar 20+ policies relacionadas de una vez, como el estándar CIS o PCI-DSS.

Iniciativas Built-in importantes

  • â–¸CIS Microsoft Azure Foundations — Controles de seguridad CIS
  • â–¸Azure Security Benchmark — Mejores prácticas de seguridad Microsoft
  • â–¸NIST SP 800-53 — Estándar gobierno EE.UU.
  • â–¸ISO 27001 — Controles de seguridad ISO
  • â–¸PCI-DSS — Cumplimiento para tarjetas de pago
  • â–¸HIPAA/HITRUST — Datos de salud en EE.UU.

Policy vs Iniciativa

📄

Policy Definition

Una regla: "negar recursos fuera de eastus"

📦

Initiative Definition

Conjunto de reglas: todas las reglas CIS juntas (150+ policies)

📌

Policy Assignment

Asignación de policy O iniciativa a un scope

Asignación y Ámbito (Scope)

Una policy solo tiene efecto cuando se asigna. El ámbito define dónde aplica y puede ser Management Group, Subscription, Resource Group, o recurso individual.

Jerarquía de scope — herencia hacia abajo

Management GroupTodos los subs y RGs bajo ese MG
SubscriptionTodos los RGs y recursos de la suscripción
Resource GroupSolo los recursos dentro de ese RG
ResourceSolo ese recurso específico

Componentes de una Policy Assignment

ScopeDónde aplica (MG / Sub / RG / recurso)
Policy Definition / InitiativeQué policy o iniciativa se asigna
ParametersValores para los parámetros de la policy (ej: lista de regiones)
Managed IdentityRequerida para efectos modify y deployIfNotExists (para remediar)
Non-compliance messageMensaje personalizado al usuario cuando se bloquea su acción
Enforcement modeEnabled (evalúa y actúa) vs DoNotEnforce (solo reporta)

Dashboard de Cumplimiento

El dashboard de compliance (Portal → Policy → Compliance) muestra el estado de cumplimiento de todas las policies y recursos. Los estados posibles son:

Compliant

Recurso cumple la policy

Non-compliant

Recurso viola la policy (si efecto es audit)

Exempt

Recurso excluido explícitamente

Conflict

Dos políticas en conflicto sobre el mismo recurso

Ciclo de evaluación

Las policies se evalúan automáticamente cada 24 horas. También se evalúan inmediatamente cuando:

  • •Se crea o modifica un recurso
  • •Se crea o modifica una asignación de policy
  • •Se lanza manualmente: az policy state trigger-scan

Tareas de Remediación

Las policies con efecto deployIfNotExists o modifypueden remediar recursos existentes que no cumplen la policy. Los nuevos recursos son controlados automáticamente, pero los recursos ya existentes requieren una tarea de remediación explícita.

Flujo de remediación

â–¸1. Asignar policy con efecto deployIfNotExists o modify

▸2. La policy evalúa recursos existentes → marca NonCompliant

▸3. Crear una Remediation Task (Portal → Policy → Remediation → New)

▸4. La task usa la Managed Identity de la asignación para ejecutar el deploy/modify

â–¸5. Recursos pasan a estado Compliant tras completarse

Requisito importante

La Managed Identity de la asignación debe tener el rol Contributor (o equivalente) en el scope donde va a remediar. Sin permisos, la remediación falla silenciosamente.

Exclusiones y Excepciones

Exclusión (Not Scope)

Se define al momento de asignar. Excluye sub-scopes específicos del ámbito de la asignación.

Scope: Subscription A
Not Scope: /resourceGroups/Dev-RG

El RG Dev-RG queda exento de la policy aunque esté dentro de la suscripción.

Exemption

Excepción formal con caducidad y categoría. Aparece en el dashboard como "Exempt" (no como NonCompliant).

  • Waiver: No aplica la policy (excepción legítima)
  • Mitigated: El requisito se cumple por otro medio

Políticas Integradas Importantes

NombreEfectoQué hace
Allowed locationsdenyRestringe dónde se pueden crear recursos
Allowed virtual machine size SKUsdenyLimita tamaños de VM permitidos
Require a tag and its value on resourcesdenyExige tag específico con valor concreto
Add a tag to resourcesmodifyAñade tag automáticamente si no existe
Audit VMs that do not use managed disksauditDetecta VMs con discos no administrados
Deploy Log Analytics agent for Windows VMsdeployIfNotExistsInstala agente AMA en VMs nuevas
Storage accounts should use customer-managed keysauditAudita cuentas sin CMK configurada
MFA should be enabled on accounts with write permissionsauditIfNotExistsAudita cuentas admin sin MFA

Trampas de Examen

deny vs audit — cuándo bloquea

Audit NO bloquea la creación del recurso, solo lo marca como NonCompliant. Solo deny impide la operación. Pregunta típica: "Necesitas que nadie pueda crear recursos fuera de westeurope" → deny, no audit.

Policy NO es retroactiva por defecto

Una policy asignada hoy no remedia recursos existentes. Solo controla recursos nuevos o modificados. Para remediar existentes necesitas una Remediation Task (solo con deployIfNotExists o modify).

deployIfNotExists requiere Managed Identity

Cuando asignas una policy con efecto deployIfNotExists o modify, DEBES configurar una managed identity en la asignación. Sin ella, la remediación no funciona.

Policy vs RBAC: independientes y complementarios

RBAC deny impide realizar la acción. Policy deny impide el resultado (el recurso en ese estado). Un Owner puede ser bloqueado por Policy aunque RBAC no lo restrinja.

Límite de custom policies

500 policy definitions customizadas por tenant. 200 initiative definitions customizadas. 200 exemptions por asignación. Estos límites aparecen en escenarios de diseño.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Una empresa necesita garantizar que NINGÚN recurso de Azure pueda crearse fuera de las regiones westeurope y northeurope, incluyendo recursos creados por Global Administrators. ¿Cuál es la solución correcta?