Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Datos de entrada y esquemas

5 tareas · 40 min · Principiante

Una política escrita contra la forma equivocada de la entrada no falla: calla. Si el campo que mira no está donde ella lo busca, la condición es indefinida, la regla no produce nada y el resultado sale en verde. En Bahareque Constructora hay tres manifiestos de Kubernetes, dos políticas y un archivo de datos con los registros prohibidos. Una sola política dio un aviso; las otras dos no vieron lo que debían. Aprendes a distinguir la entrada, que cambia en cada evaluación, de los datos, que acompañan a la política, y a comprobar que la política está mirando donde cree.

0 de 5 · 0%

Objetivo de la sala

Una política escrita contra la forma equivocada de la entrada no falla: calla. Si el campo que mira no está donde ella lo busca, la condición es indefinida, la regla no produce nada y el resultado sale en verde. En Bahareque Constructora hay tres manifiestos de Kubernetes, dos políticas y un archivo de datos con los registros prohibidos. Una sola política dio un aviso; las otras dos no vieron lo que debían. Aprendes a distinguir la entrada, que cambia en cada evaluación, de los datos, que acompañan a la política, y a comprobar que la política está mirando donde cree.

Una política recibe dos orígenes de información. La entrada (input) es el documento que se evalúa: un manifiesto, un plan, una lista de componentes; cambia con cada ejecución. Los datos (data) son información que acompaña a la política y casi no cambia: una lista de registros prohibidos, el nombre de los equipos válidos, la tabla de responsables. Conftest carga los archivos de datos con la opción --data.

Separar los datos del código tiene una razón: quien mantiene la lista de registros no tiene por qué saber Rego, y una lista que cambia cada semana no debería obligar a editar una regla. El precio es que ahora hay un contrato entre los dos: el nombre de la clave que la regla lee y el nombre que el archivo de datos trae deben coincidir exactamente.

Responde para continuar

¿Qué conviene guardar como datos (`data`) y no escribir dentro de la regla?

Ver pista de ayuda

Datos son lo que acompaña a la política y cambia con otro ritmo que la lógica.

Cada tipo de recurso de Kubernetes guarda sus contenedores en un lugar distinto. En un Deployment o un StatefulSet, bajo spec.template.spec; en los recursos que lanzan trabajos programados, un nivel más abajo, bajo spec.jobTemplate. Una política que revisa input.spec.template.spec.containers solo ve los recursos que usan esa ruta. En los demás, la condición es indefinida y la política guarda silencio, no avisa de que no pudo mirar.

Lee la política de imágenes y compara su ruta con la estructura de cada manifiesto.

Responde para continuar

Escribe el tipo (kind) del manifiesto cuyos contenedores están en una ruta que la política de imágenes no recorre.

Ver pista de ayuda

Con la terminal, `cat politicas/imagenes.rego` y luego mira la sección de contenedores de cada archivo de `entrada/`.

La salida de la herramienta dice lo que se encontró, no lo que se dejó de mirar. Para medir el hueco hay que contar por separado lo que existe y lo que la política alcanza. Los contenedores de inicio (initContainers) son otro ejemplo: son contenedores reales con imágenes reales, pero viven en una lista distinta de containers.

Cuenta las imágenes con la etiqueta latest que hay en los tres manifiestos y réstales las que la política de imágenes sí inspecciona.

Responde para continuar

¿Cuántas imágenes con la etiqueta latest hay en los tres manifiestos que la política de imágenes no inspecciona?

Ver pista de ayuda

Revisa cada archivo de `entrada/`, incluidas las dos listas posibles de contenedores, y compara con la ruta que recorre la política.

La regla de registros itera sobre una clave de data. Si esa clave no existe en los datos, la iteración es indefinida y la regla no deniega nada, con la herramienta cargando el archivo sin quejarse. Es el mismo silencio de la tarea anterior, pero esta vez el error está en el contrato entre datos y código.

Compara el nombre que lee la política con el que trae el archivo de datos.

Responde para continuar

Escribe la clave del archivo de datos que no coincide con la que lee la política de registros.

Ver pista de ayuda

Abre `datos/registros.json` y compara letra por letra con `politicas/registros.rego`.

Una política que calla se descubre de una sola forma fiable: con una entrada que debería hacerla hablar. Eso es una prueba de denegación, y se escribe junto con la política. Hay además ayudas del propio ecosistema (OPA permite describir la forma de la entrada con un esquema y comprobar la política contra él), pero ninguna sustituye a la prueba con un caso conocido.

Responde para continuar

¿Qué hallazgo deja menos expuesto al equipo a una política que calla sin avisar?

Ver pista de ayuda

Busca la comprobación que falla sola cuando la regla se queda muda.

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