Distribución firmada de los módulos de Plataforma con Docker Content Trust

Distribución firmada de los módulos de Plataforma con Docker Content Trust

Disponible desde release 2.3.0-immortal

Introducción

En Q4 de 2020 se añadirá a la plataforma la firma de los módulos Docker para garantizar que las imágenes distribuidas no han sido alteradas.

Se trata de un proceso conocido en Docker como DCT (Docker Content Trust) e implica dos procesos:

  • Proceso de firma: Integrado en la generación de las imágenes y previo a publicarlas en un registro.

  • Verificación de la firma: Dependiente del entorno donde se va a ejecutar la imagen (Docker, Kubernetes…). Implica verificar la firma justo después de descargar la imagen y antes de ejecutarla.

Tanto en la firma como en la verificación intervienen una serie de elementos de infraestructura y procesos.

Proceso de firma y verificación

En este proceso de firma de imágenes Docker entra en juego Notary (https://github.com/theupdateframework/notary ). Se trata de una herramienta que siguiendo la especificación de DCT, permite firmar y publicar y gestionar contenido confiable mediante firma.

Notary se integra con Docker Engine durante la generación de las imágenes, para incluirles una firma electrónica. Los datos de la firma se almacenan en un servidor de verificación propio de Notary para poder ser comprobar la integridad de los artefactos posteriormente cuando se descarguen.

Una vez firmada la imagen, esta se despliega en un registro Docker siguiente el modo habitual.

La verificación de la imagen al descargarla, de forma previa a su ejecución se puede realizar de forma directa por Docker si se activa DCT. El problema surge cuando la imagen se despliega en Kubernetes, como se hace actualmente con Onesait Platform al desplegarlo en plataformas CaaS como Rancher2 y Openshift. En este caso, es necesaria otra pieza: Un Admision Controller que haga la verificación.

Existen diferentes Admision Controllers, se ha elegido Connaisseur, debido a su facilidad para instalarlo directamente sobre Kubernetes.

Líneas de trabajo en Onesait Platform

  1. Integración de Notary en nuestro ciclo cicd.

    1. Instalación de Notary server.

    2. Instalación de Notary signer.

    3. Instalación de Notary DB.

    4. Establecer relaciones de confianza entre Notary Server, Jenkins y Registro Docker.

  2. Generación de claves de firma para los artefactos de Onesait Platform.

  3. Extender pipelines de generación de imagenes para firmar artefactos docker y publicarlos firmados en el registro.

  4. Habilitar la verificación de firma en entorno CloudLab.

    1. Instalar Connaisseur en el CaaS de CloudLab.

    2. Habilitar la verificación de firma de los artefactos Docker de plataforma.