Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Leer 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.

0 de 5 · 0%

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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