‫Todo bien.
‫El siguiente, escaneo de repositorio de código.
‫Esto ni siquiera es específico de Docker,
‫pero existen herramientas y Sneak es una de
‫ellas. Sneak, escaneará
‫tus dependencias de código dentro de repos.
‫Si tiene código abierto, si está desarrollando un código abierto,
‫harán muchas de estas cosas de forma gratuita.
‫Analizarán su repositorio de GitHub, su repositorio de Bitbucket
‫y analizarán las dependencias.
‫Recibo informes cada semana de ellos en mis repositorios de código
‫abierto y cualquier vulnerabilidad que encontraron.
‫Hoy en día, GitHub también hace mucho de esto de
‫forma gratuita. Sneak ha
‫existido por más tiempo y lo ha estado haciendo por más
‫tiempo, así que tengo los dos. Tengo GitHub enviándome correos electrónicos
‫y tengo Sneak. Puedes pagar a Sneak para escanear cosas.
‫También tienen más funciones ahora donde también están haciendo imágenes y otras
‫cosas, no solo repositorios de código.
‫Pero, esa es una línea: escanea tus repositorios
‫al principio del proceso.
‫No espere a que cree imágenes y luego
‫tenga cosas en CI, ya sabe, en las pruebas donde
‫está escaneando. Escanee lo antes posible.
‫Este es uno de los principios básicos de
‫algo llamado seguridad ShiftLeft.
‫Si imagina un tablero Kanban donde todo su trabajo está a la izquierda
‫y su salida a la derecha, el
‫movimiento de seguridad ShiftLeft, si solo busca la seguridad de ShiftLeft,
‫se trata de cambiar la responsabilidad de la seguridad cada
‫vez más temprano. Su flujo de
‫trabajo de desarrollo.
‫Entonces, una forma de hacerlo es hacer que estos escáneres automáticos escaneen sus
‫dependencias de código dentro de sus repositorios git antes de
‫llegar a la etapa de ejecutar cosas en los
‫servidores, ¿verdad? Yo haria eso.
‫No es específicamente una cosa de Docker, pero lo haría.
‫El siguiente paso es el escaneo de imágenes en sí, que
‫es muy similar a eso. Pero, tenemos más funciones aquí.
‫No solo estamos escaneando sus dependencias de código.
‫Podemos escanear el contenedor en sí.
‫La imagen, a la derecha. Podemos escanear
‫todas las dependencias que no son
‫solo como sus paquetes npm o
‫sus paquetes Python. Ahora está escaneando paquetes
‫YUM y APK, o apt, o este tipo de
‫administradores de paquetes para el sistema operativo.
‫Eso es lo que quiero decir con un escáner de imágenes,
‫porque puede escanear tanto como sus dependencias de código.
‫Entonces, hay muchas herramientas aquí.
‫Un conjunto muy popular de ellos ha existido hace un tiempo,
‫pero han aparecido algunos nuevos de los que
‫quiero hablar contigo.
‫El primero aquí es Trivy, y acabo de enterarme de esto este
‫mes, en realidad en octubre.
‫Trivy está construido por Aqua Security, que es la misma compañía
‫que construye MicroScanner.
‫MicroScanner fue una de las herramientas,
‫junto con muchas otras, Anchor también, otra popular.
‫Todas estas son herramientas de código abierto que escanean su imagen
‫en busca de vulnerabilidades CVE.
‫El CVE es esa base de datos de todas las vulnerabilidades de
‫los donantes de código abierto que todos escuchamos en las noticias.
‫Es de Mitre, una compañía que administra esa base de datos.
‫Esto es algo de la comunidad, cierto.
‫Cada vez que alguien encuentra una vulnerabilidad en el software, lo coloca
‫y obtiene un número CVE.
‫Es vulnerabilidad y hazañas comunes,
‫algo así.
‫No recuerdo exactamente qué significa CVE.
‫Estoy seguro de que uno de ustedes me lo dirá en el chat.
‫Pero CVE obtiene un número, correcto.
‫Vemos un número asignado a ese error
‫conocido en la comunidad. Un escáner CVE escaneará sus imágenes en
‫busca de esa vulnerabilidad.
‫Una vez que entras en la implementación de estos,
‫hay todo tipo de minucias, como el escáner que necesitas ejecutar
‫en la imagen de Docker durante el tiempo de construcción.
‫¿O escanea una imagen que ya está construida?
‫¿Ese escáner admite su
‫distribución base? ¿Es compatible con Red Hat?
‫¿Es compatible con Alpine?
‫Cualquier otro tipo de imágenes de distribución que
‫haya elegido usar, ¿las admitirá?
‫¿También es compatible con su administrador de paquetes para su aplicación como
‫npm o pip,
‫o una de las otras docenas de administradores de
‫paquetes que existen, correcto? ¿Es compatible con ellos también?
‫MicroScanner no
‫hizo todo eso. Hizo algo de eso, pero
‫como muchas de estas otras herramientas en el ecosistema, no lo hicieron todo.
‫En este momento, este de Aqua Security llamado Trivy,
‫llega hasta
‫la cima de esta cosa.
‫Trivy afirma que son el
‫escáner gratuito de código abierto más completo que existe.
‫Aquí abajo, verás lo que apoyan.
‫Notarás que son compatibles con todas estas imágenes basadas.
‫Luego, si realmente baja, hay una comparación que muestra que
‫se comparan con todas las otras herramientas, o
‫al menos las versiones populares de código abierto
‫de estas herramientas. Definitivamente hay más herramientas que esto.
‫Hay muchas opciones que tienes que hacer aquí.
‫Una opción es ¿dónde quiero escanear?
‫¿Quiero que mi repositorio de imágenes las escanee por sí mismo, como
‫lo hace Docker Enterprise DTR?
‫Donde tiene un registro que contiene sus imágenes y
‫ese registro ejecuta escaneos de las imágenes en el
‫registro todo de una vez.
‫Quay hace esto también. Quay es un repositorio de
‫imágenes de alojamiento en la nube y también escaneará, a la derecha.
‫Cada uno de estos escáneres no siempre escanea todos los tipos de imágenes y
‫todas las dependencias de la aplicación.
‫Entonces, es muy bueno aquí que muestran ... básicamente la X
‫significa que no lo hacen.
‫El 0 o el O allí, el círculo, significa que
‫lo hacen. Entonces, creo
‫que el doble OO aquí significa
‫lo mejor, y el triángulo significa que hay
‫problemas, hay preocupaciones allí.
‫Entonces, dicen que Trivy, que compraron este año,
‫creo. Trivy
‫lo hace todo. Hace paquetes del sistema operativo, dependencias de la aplicación.
‫Afirman que es fácil de usar.
‫Afirman que es más preciso. Si comienzas a leer
‫esto, te das cuenta de que uno de los grandes problemas
‫de los que sigo hablando es que la imagen base de Alpine no
‫funciona con casi todos estos escáneres.
‫Simplemente no tiene la base de datos de vulnerabilidades conectada
‫correctamente, de modo que cuando ejecuta estos
‫escáneres, detecta vulnerabilidades en Alpine.
‫Trivy afirma que lo arreglaron mediante
‫un nuevo método que están implementando, y veremos si otras
‫personas también lo implementan.
‫Afirman ser los más completos.
‫Muchos de mis amigos de Docker Captain dicen que lo están usando
‫y lo usan muy bien.
‫Una de las otras decisiones, además de qué escáner, es
‫¿dónde escanearás?
‫Me gusta escanear durante la creación de imágenes.
‫Prefiero escanear durante la compilación de imágenes
‫automatizadas de CI que escanear más tarde después de que se construye la imagen.
‫Así soy yo.
‫Incluso puede tener diferentes sistemas que escanean en
‫diferentes momentos, solo para estar seguro, correcto,
‫solo para estar seguro. Es posible que tenga sistemas que escaneen
‫en los servidores que se ejecutan en producción, según
‫su entorno. Eso no es muy común.
‫Pero, si se encuentra en un entorno súper seguro en
‫el que desea escanear cosas que se ejecutan en vivo, ciertamente puede hacerlo con
‫algunas de estas herramientas.
‫Una demostración que a menudo doy es
‫sobre MicroScanner. Esencialmente, todo lo
‫que tiene que hacer en MicroScanner, así como esta
‫otra herramienta, está en MicroScanner, puede agregarlo a su Dockerfile.
‫Creo que la aplicación Tivey, escanea después de que se
‫construye la imagen.
‫Si eres súper paranoico, puedes usar un MicroScanner
‫dentro de tu imagen de Docker.
‫Entonces puede ejecutar algo como Tivey después del hecho
‫en las imágenes antes de enviarlas al
‫registro, ya sabe. Siempre puede descargarlos más tarde, pero
‫me gusta saber que mi imagen está libre de vulnerabilidad
‫antes de enviarla.
‫Entonces, eso es lo que podrías hacer allí. Ahora.
‫Solo quiero decirte una advertencia.
‫Probablemente no vas a tener ninguna ... probablemente no
‫tendrá ninguna imagen, o tal vez solo unas
‫pocas, que tengan cero vulnerabilidades en
‫todos los ámbitos. Eso se debe solo
‫a la naturaleza del código abierto. Por lo general, si escanea
‫cualquier imagen, por lo general, si escanea cualquier
‫imagen, tendrá vulnerabilidades.
‫Es su trabajo trabajar con su equipo de
‫seguridad en lo que es aceptable, nunca podremos tener vulnerabilidades.
‫Porque ciertas vulnerabilidades pueden incluso no aplicarse a usted.
‫El hecho de que estén en su imagen no significa que
‫automáticamente serán un problema, ¿verdad?
‫Tendrás que hacer algo
‫de trabajo. Creo que lo que sugeriría es
‫implementar esto ahora, pero
‫apagar el tipo de falla y decir continuar con
‫la falla aquí, lo que significa que todo lo que voy a
‫hacer es advertirte que hay vulnerabilidades. No voy a detener la compilación
‫solo porque hay una vulnerabilidad.
‫Esto es clave, porque si comienza
‫a implementar todas estas herramientas automáticamente, fallarán el proceso.
‫Fallarán su CI, o fallarán sus compilaciones, si
‫solo los enciende. Desea asegurarse de
‫que los tiene en una especie de modo de auditoría única donde
‫no fallan al encontrar una vulnerabilidad.
‫De esa manera, al menos puede aprender cuáles son las
‫vulnerabilidades antes de comenzar, ya sabe, antes de volverse
‫duro, ¿verdad? Antes de que te vuelvas duro.