miércoles, 27 de diciembre de 2017

Busque vulnerabilidades en sus contenedores docker


Hoy hablamos en google cloud español del escaner automáticamente las imágenes de Docker en su repositorio de Google Cloud en busca de vulnerabilidades conocidas.

La seguridad es crítica para sus aplicaciones. Al usar contenedores, ¿cómo se asegura de que reduzca el área de superficie de ataque? ¿Cómo estar seguro de que su sistema operativo y sus paquetes son lo suficientemente recientes y no se ven afectados por vulnerabilidades no cubiertas?


Bien, si almacena su contenedor imagina en Google Cloud Registry, es una buena opción aprender sobre esta característica alfa: Escaneo de vulnerabilidad de registro de contenedor de Google. La API de análisis de contenedores admite la exploración de vulnerabilidad de paquetes para imágenes basadas en Ubuntu, Debian y Alpine.


Vamos a configurar el escenario

A los fines de este consejo, creé una imagen de contenedor pequeño para ejecutar un script de Apache Groovy simplemente imprimiendo hello world:


FROM groovy:alpine
ADD hello.groovy ./
CMD ["groovy", "hello.groovy"]
Construí mi imagen:

$ docker build . -t hello
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM groovy:alpine
alpine: Pulling from library/groovy
2fdfe1cd78c2: Pull complete 
82630fd6e5ba: Pull complete 
119d364c885d: Pull complete 
287ef2aa8ecb: Pull complete 
fe31a0044ad1: Pull complete 
Digest: sha256:60fc6fdb148c2a5c48989d384e56d19bd288151b6d82770bb2f7d42674b9da0f
Status: Downloaded newer image for groovy:alpine
 ---> 34ce9830b507
Step 2/3 : ADD hello.groovy ./
 ---> 96a805f80806
Step 3/3 : CMD groovy hello.groovy
 ---> Running in 78040114c799
 ---> 467a80cf4614
Removing intermediate container 78040114c799
Successfully built 467a80cf4614
Successfully tagged hello:latest
Y etiquetado:

$ docker tag hello gcr.io/docker-vulnerability-scanning/hello
Solo para asegurarme de que todo estaba bien, verifiqué dos veces que mi mensaje se imprimió correctamente:

$ docker run -it hello
Hello Groovy world!

He habilitado la API de registro de contenedores:



"Push" a la imagen al registro:

$ gcloud docker -- push gcr.io/docker-vulnerability-scanning/hello
The push refers to a repository [gcr.io/docker-vulnerability-scanning/hello]
3e84e885bf33: Pushed 
baeea7770e60: Pushed 
e2468806cd9c: Pushed 
25baa3ba1903: Pushed 
5b1e27e74327: Pushed 
04a094fe844e: Pushed 
latest: digest: sha256:0ed6cbc3ec3e3ef6a25ffd4f82c8092ff8ee994f4be89dcbe89fbd33cc842860 size: 1573
Ahora mi imagen está en el Registro de contenedores:
Verificando que la imagen del contenedor esté cargada

Habilitando el escaneo de vulnerabilidad

Nota: Como todavía es un servicio alfa, deberá estar en la lista blanca para poder habilitar la API. Puede activar la API de análisis de contenedores solo si su dirección de correo electrónico está incluida en la lista blanca para usar esta API. Si está interesado en probar esta nueva característica, únase al grupo de Usuarios de análisis de contenedor para inscribirse.

En primer lugar, debemos habilitar API de Container Analysis visitando esta URL y seleccionando nuestro proyecto de Google Cloud:


Luego, vaya a la página de configuración de GCR, active la función de exploración de vulnerabilidad:




Después de un momento, cuando el escáner recorre las imágenes de su contenedor, debería ver que ejecutó su análisis:


Si hace clic en el resumen de vulnerabilidad, podrá ver el informe detallado (en mi caso, estoy contento, no se encontraron vulnerabilidades):



Más información

El consejo se inspiró en un artículo de David Gageot sobre escaneo de vulnerabilidades en imágenes Docker, que también muestra algunas capturas de pantalla de informes de imágenes de contenedores que contienen vulnerabilidades.
Además, lea más acerca de esta nueva característica alfa: Escaneo de vulnerabilidades del Registro de contenedores de Google