0Pricing
Terraform Infrastructure as Code · Lección

Políticas de Sentinel para la gobernanza

Aprenda a escribir y aplicar políticas como código con HashiCorp Sentinel para garantizar el cumplimiento y la gobernanza en todos sus despliegues de Terraform.

Políticas de Sentinel para la gobernanza es una lección gratuita de Terraform Infrastructure as Code en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Terraform Infrastructure as Code, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

Introducción a las políticas como código y Sentinel

¿Y si pudiera asegurarse automáticamente de que sus implementaciones de infraestructura cumplen determinadas reglas? Ese es el poder de las políticas como código (PaC). Las PaC definen reglas para crear y modificar infraestructura de forma programable, incorporando la gobernanza a su flujo de desarrollo. HashiCorp Sentinel es un potente framework de PaC diseñado para este fin.

El papel de Sentinel con Terraform

Sentinel se integra directamente con Terraform Cloud y Terraform Enterprise. Actúa como guardián y evalúa el plan de ejecución de Terraform antes de aplicar cualquier cambio en su entorno de nube. Este paso fundamental evita que se aprovisione infraestructura que no cumpla las normas o que sea insegura, ya que aplica las reglas de forma preventiva.

Políticas y niveles de aplicación

Una política de Sentinel es un conjunto de reglas escritas en el lenguaje Sentinel. Cuando se activa una política, devuelve true (aprobación) o false (fallo). Las políticas se pueden configurar con distintos niveles de aplicación:

  • Advisory: Advierte sobre las infracciones, pero permite que la operación continúe.
  • Soft-Mandatory: Requiere una anulación explícita para continuar con cambios que no cumplen las normas.
  • Hard-Mandatory: Bloquea por completo las operaciones que no cumplen las normas y exige el cumplimiento de la política.

Estructura de una política de Sentinel

Las políticas de Sentinel se definen en archivos .sentinel. Normalmente incluyen importaciones, reglas y una condición principal. La regla main determina si la política se aprueba o falla.

Una política básica podría ser la siguiente:

import "tfplan"

main = rule {
  tfplan.resource_changes is empty
}

Acceso a los datos del plan de Terraform

La importación tfplan proporciona una vista estructurada del plan de ejecución de Terraform. Las políticas usan estos datos para inspeccionar:

  • tfplan.resource_changes: Detalles sobre los recursos que se crearán, actualizarán o eliminarán.
  • tfplan.variables: Variables de entrada proporcionadas a la configuración.
  • tfplan.outputs: Valores de salida de la configuración.

Estos datos son fundamentales para tomar decisiones informadas sobre las políticas, basadas en lo que Terraform pretende hacer.

Ejemplo: denegar regiones no aprobadas

Escribamos una política de Sentinel para garantizar que todos los recursos de AWS se implementen únicamente en us-east-1. Esta política comprueba la región configurada para cada recurso de AWS en el plan.

import "tfplan/v2" as tfplan

allowed_regions = ["us-east-1"]

is_region_allowed = func(resource_change) {
  if resource_change.provider.name is "aws" {
    region = resource_change.provider.config.region else "us-east-1"
    return region in allowed_regions
  }
  return true # Not an AWS resource, allow
}

all_regions_compliant = all tfplan.resource_changes as _, rc {
  is_region_allowed(rc)
}

main = rule {
  all_regions_compliant
}

Funciones y operadores de las políticas

Sentinel proporciona potentes funciones y operadores integrados para implementar lógica compleja:

  • Funciones de colecciones: all, any, filter y map para iterar sobre listas y mapas.
  • Funciones de tipos: is y type_of para comprobar tipos de datos.
  • Operadores: lógicos (and, or, not) y de comparación (==, !=, >, <).

Estas herramientas le ayudan a crear políticas sólidas y expresivas que cubran distintos escenarios.

Ejemplo: exigir etiquetas obligatorias

Un requisito habitual de gobernanza es exigir etiquetas específicas en los recursos para asignar costos o identificarlos. Esta política garantiza que todos los recursos aws_instance nuevos o actualizados tengan una etiqueta Project.

import "tfplan/v2" as tfplan

required_tags = ["Project"]

resource_has_required_tags = func(resource_change) {
  if resource_change.type is "aws_instance" {
    # Check if 'tags' attribute exists in the planned state
    if not ("tags" in resource_change.change.after) {
      return false
    }
    
    missing_tags = filter required_tags as tag {
      not (tag in resource_change.change.after.tags)
    }
    return missing_tags is empty
  }
  return true # Not an aws_instance, allow
}

all_instances_tagged = all tfplan.resource_changes as _, rc {
  (rc.change.actions contains "create" or rc.change.actions contains "update") ?
    resource_has_required_tags(rc) :
    true # Only check on create/update actions
}

main = rule {
  all_instances_tagged
}

Pruebas locales de políticas

Antes de implementar políticas en Terraform Cloud/Enterprise, puede probarlas localmente mediante la CLI de Sentinel. El comando sentinel test permite definir casos de prueba con datos simulados de tfplan. Esto le ayuda a verificar el comportamiento de las políticas y detectar errores con antelación, asegurándose de que funcionan según lo previsto sin afectar a los entornos activos.

Comprobación de la lógica de políticas

Debe crear una política de Sentinel que impida crear cualquier bucket de AWS S3 con acceso de lectura público. ¿Qué parte específica de los datos de tfplan inspeccionaría principalmente para aplicar esta regla?

Repaso: gobernanza con Sentinel

Hemos explorado HashiCorp Sentinel, un potente framework de políticas como código para la gobernanza:

  • Se integra con Terraform Cloud/Enterprise para aplicar reglas.
  • Las políticas evalúan tfplan antes de aplicar la infraestructura.
  • Los distintos niveles de aplicación (advisory, soft y hard) controlan el impacto de las políticas.
  • Puede escribir políticas para denegar regiones, exigir etiquetas y mucho más.
  • Las pruebas locales garantizan que las políticas funcionan según lo previsto antes de implementarlas.

Sentinel es clave para mantener el cumplimiento, la seguridad y los estándares operativos en todas sus implementaciones de infraestructura.

Preguntas frecuentes

¿La lección «Políticas de Sentinel para la gobernanza» es gratis?

Sí — el texto completo de «Políticas de Sentinel para la gobernanza» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Terraform Infrastructure as Code, actualiza a CoddyKit PRO. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

¿Qué aprenderé en «Políticas de Sentinel para la gobernanza»?

Aprenda a escribir y aplicar políticas como código con HashiCorp Sentinel para garantizar el cumplimiento y la gobernanza en todos sus despliegues de Terraform. Practicas Terraform Infrastructure as Code con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Terraform Infrastructure as Code?

No se requiere experiencia previa. Terraform Infrastructure as Code en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Políticas de Sentinel para la gobernanza»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Terraform Infrastructure as Code?

Sí. Cada lección de Terraform Infrastructure as Code incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Patrones multicloud e híbridos
  2. Políticas de Sentinel para la gobernanza
  3. Terraform Cloud y Enterprise
  4. Creación de providers personalizados
← Volver a Terraform Infrastructure as Code