Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Firmar imágenes y binarios

5 tareas · 38 min · Principiante

Firmar bien es sobre todo decidir qué se firma, desde dónde y con qué permisos. Una imagen de contenedor se firma de una forma y un binario suelto de otra, y en los dos casos hay errores que dejan la firma sin valor. Lees tres flujos de publicación de Guanábana Mercados, una empresa ficticia: el que firma la imagen, el que firma el binario de su herramienta de línea de órdenes y un tercero hecho a toda prisa. No se ejecuta ningún flujo ni ninguna firma; solo se leen los archivos.

0 de 5 · 0%

Objetivo de la sala

Firmar bien es sobre todo decidir qué se firma, desde dónde y con qué permisos. Una imagen de contenedor se firma de una forma y un binario suelto de otra, y en los dos casos hay errores que dejan la firma sin valor. Lees tres flujos de publicación de Guanábana Mercados, una empresa ficticia: el que firma la imagen, el que firma el binario de su herramienta de línea de órdenes y un tercero hecho a toda prisa. No se ejecuta ningún flujo ni ninguna firma; solo se leen los archivos.

Una firma de imagen se asocia al digest, el resumen del contenido exacto. Si se firma una etiqueta, lo que realmente se firma es el digest al que la etiqueta apuntaba en ese momento, pero el comando se escribió con un nombre movible: quien lo lea después no sabe qué contenido se firmó, y la etiqueta puede moverse a otra imagen sin firma.

Por eso el flujo correcto sube la imagen, recoge el digest que el registro devuelve y firma nombre@digest. Lo que se firma y lo que se despliega es lo mismo.

Responde para continuar

¿Por qué el paso de firma de una imagen debe nombrar el digest y no una etiqueta como latest?

Ver pista de ayuda

Una etiqueta es un puntero; un digest es el contenido.

Abre los tres flujos y mira el último paso de cada uno. Dos firman un nombre con digest o un archivo concreto; uno firma una referencia que se puede mover. Ese flujo, además, se dispara a mano y fuera de la cadena normal, que es justo la situación en la que más cuesta saber qué se firmó.

Responde para continuar

Escribe el nombre del archivo del flujo que firma la imagen por etiqueta.

Ver pista de ayuda

Con `cat flujos/hotfix-rapido.yml` y los otros dos, compara la línea del comando de firma.

Un binario o cualquier archivo no vive en un registro de imágenes, así que no hay dónde colgarle la firma. Para eso existe la firma de archivos (sign-blob): firma el archivo y deja la firma y el certificado en un archivo aparte, un «bundle», que se publica junto al binario. Quien descarga necesita los dos archivos para verificar.

Abre el flujo de la herramienta de línea de órdenes y localiza el archivo que se adjunta con la firma.

Responde para continuar

Escribe el nombre del archivo con la firma que se publica junto al binario.

Ver pista de ayuda

Con `cat flujos/publicar-cli.yml`, es el argumento que sigue a la opción de salida del bundle.

Para que el flujo obtenga un token de identidad necesita un permiso explícito, en GitHub Actions el permiso id-token: write. Si se concede a todo el flujo, cada tarea del flujo puede pedir una identidad firmable. Concederlo solo a la tarea que firma limita qué pasos pueden convertirse en esa identidad, y es la misma idea de mínimo privilegio que se aplica al token de acceso al repositorio.

Responde para continuar

¿Dónde conviene conceder el permiso para pedir identidad en un flujo con varias tareas?

Ver pista de ayuda

Mira el bloque de permisos de publicar-imagen.yml y compáralo con el del tercer flujo.

Los tres flujos usan firma sin clave: ninguno guarda una clave privada. Pero el tercero firma algo cuyo contenido nadie puede reconstruir mirando el comando, y se puede lanzar a mano. La firma sin clave elimina un riesgo, el robo de la clave, y deja intactos los demás: qué entra en el flujo, quién puede lanzarlo y desde qué rama.

Responde para continuar

Un flujo firma sin clave, pero lo puede lanzar a mano cualquiera con acceso al repositorio y firma una etiqueta. ¿Cuál es la lectura correcta?

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