🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer Rego básico
5 tareas · 38 min · Principiante
Rego es el lenguaje de políticas del proyecto Open Policy Agent. No se parece a un lenguaje de programación de uso general: se parece más a una lista de condiciones que, cuando se cumplen todas, producen un resultado. Leer Rego con soltura es una habilidad de revisor, no de programador: se trata de saber qué dice una regla, sobre qué datos y cuándo se dispara. En Molle Logística el equipo de plataforma tiene una política con tres reglas y un plan de infraestructura de una solicitud de cambio. Lees la política, lees el plan y decides qué bloquearía.
Objetivo de la sala
Rego es el lenguaje de políticas del proyecto Open Policy Agent. No se parece a un lenguaje de programación de uso general: se parece más a una lista de condiciones que, cuando se cumplen todas, producen un resultado. Leer Rego con soltura es una habilidad de revisor, no de programador: se trata de saber qué dice una regla, sobre qué datos y cuándo se dispara. En Molle Logística el equipo de plataforma tiene una política con tres reglas y un plan de infraestructura de una solicitud de cambio. Lees la política, lees el plan y decides qué bloquearía.Una regla de Rego tiene una cabeza y un cuerpo. En la política de Molle, la cabeza es deny contains msg if y el cuerpo es el bloque entre llaves. El cuerpo es una lista de expresiones y la regla solo produce su mensaje si todas se cumplen para los mismos datos. Si una expresión no se cumple, o su valor no está definido, la regla no produce nada para ese dato.
Los datos del cambio llegan en input. some rc in input.resource_changes recorre cada recurso del plan, y las expresiones siguientes se evalúan para cada uno.
Responde para continuar
Una regla de Rego tiene tres expresiones en su cuerpo. ¿Cuándo produce su mensaje para un recurso?
Ver pista de ayuda
Un cuerpo de regla es una conjunción: una condición que falla basta para que no se produzca nada.
not en Rego se cumple cuando la expresión de dentro no es verdadera, y eso incluye dos casos distintos: que valga falso y que no exista el campo. Lo segundo importa mucho al leer políticas sobre planes, porque un atributo que no se declara en el recurso simplemente no está en input.
En la regla de la base de datos, not rc.change.after.storage_encrypted se cumple tanto cuando el atributo es false como cuando no aparece. Es una decisión razonable (si no está declarado, no se puede afirmar que esté cifrada), pero hay que saber que está ahí para no contar mal los resultados.
Responde para continuar
En la regla con `not rc.change.after.storage_encrypted`, ¿qué ocurre con una base de datos cuyo plan no declara ese atributo?
Ver pista de ayuda
`not` se cumple cuando la expresión no es verdadera, y un campo ausente no es verdadero.
Abre politica.rego y plan.json. La primera regla mira recursos de tipo aws_s3_bucket_acl y compara el campo acl con un valor exacto. Recorre los recursos de ese tipo en el plan y comprueba cuál cumple todas las expresiones. Fíjate en que la comparación es una igualdad exacta: un valor parecido no es el mismo valor.
Responde para continuar
¿Qué recurso del plan activa la regla POL-ALM-01? Escribe su dirección (campo address).
Ver pista de ayuda
Busca en plan.json los recursos de tipo aws_s3_bucket_acl y compara cada acl con el valor exacto de la regla.
Varias reglas con el mismo nombre (deny) no se excluyen: se suman. La evaluación de la política devuelve el conjunto de todos los mensajes que producen todas las reglas deny sobre todos los recursos. Si el conjunto no está vacío, el cambio se bloquea.
Cuenta cuántos mensajes produce la política completa sobre plan.json: lo que dispara cada una de las tres reglas, sumado. Recuerda lo que hace not con un atributo ausente y fíjate en que algunos recursos del plan no son del tipo que mira cada regla.
Responde para continuar
¿Cuántos mensajes produce la política sobre el plan completo? Escribe solo el número.
Ver pista de ayuda
Cuenta, regla por regla, los recursos del plan que cumplen todas sus condiciones, y suma.
Una política que crece necesita que cada regla se pueda nombrar. En Rego, un comentario # METADATA puesto justo encima de una regla permite declarar un título, una descripción y campos propios bajo custom. En Molle el equipo guarda ahí un identificador de catálogo para cada regla, que luego aparece en informes y excepciones.
Responde para continuar
¿Qué identificador de catálogo lleva la regla que vigila el puerto de administración remota? Escríbelo tal cual.
Ver pista de ayuda
Mira el bloque METADATA que está encima de la regla que compara from_port.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.