Snyk Container y Cloud Native Buildpacks: seguridad de aplicaciones nativas de la nube, de la manera correcta
Pas Apicella
24 de agosto de 2021
0 minutos de lectura¿Estás ejecutando microservicios en contenedores? ¡Felicitaciones! Es un paso importante para satisfacer las necesidades del negocio y entregar aplicaciones a tus clientes lo antes posible. Pero ¿cómo podemos mitigar los posibles riesgos asociados con una implementación de software más rápida? Es sencillo: con Snyk.
Snyk Container, en combinación con una herramienta de compilación que crea imágenes de contenedor compatibles con OCI, te ayudará a mitigar ese riesgo y a enfocarte en lo que realmente importa: una experiencia de primera para tus clientes. Veamos cómo funciona.
La diferencia entre las imágenes de Docker y las imágenes compatibles con OCI
Para asegurarse de que todos los entornos de ejecución de contenedores puedan ejecutar imágenes producidas por cualquier herramienta de compilación, la comunidad de contenedores de código abierto creó la Open Container Initiative (OCI) para definir estándares de la industria para los formatos de imágenes y los entornos de ejecución de contenedores. Dada una imagen OCI, cualquier entorno de ejecución de contenedores que implemente laOCI Runtime Specification puede extraer la imagen y ejecutarla en un entorno aislado.
Es muy probable que hayas oído hablar de la empresa Docker y quizá te preguntes cuál es la diferencia entre las imágenes OCI y las imágenes de Docker. Hoy en día, la respuesta es «no mucha». Todavía existen algunas imágenes antiguas de Docker que preceden a las especificaciones OCI. Formalmente, se conocen como formatos de especificación Docker v1 y no son compatibles con el esquema Docker v2, que se donó a OCI y sentó las bases de las especificaciones OCI. Sin embargo, esas imágenes v1 datan de 2017. Hoy en día, casi todos los registros de contenedores, las plataformas Kubernetes y los entornos de ejecución de contenedores se basan en las especificaciones OCI. Esto incluye el motor Docker, Docker Hub y otras herramientas y productos de Docker.
Quizá te preguntes por qué importa todo esto. Porque las especificaciones abiertas han permitido que otros grupos encuentren formas innovadoras de crear contenedores. Y como todos terminan creando imágenes compatibles con OCI, puedes ejecutar esas imágenes en cualquier lugar y usar herramientas de seguridad como Snyk Container para protegerlas. En definitiva, seguramente quieres que los equipos de desarrollo se enfoquen en el código central de la aplicación, no en cómo debe ser el Dockerfile, ni que pasen horas verificando qué bibliotecas de código abierto deberían usar, o revisando las miles de etiquetas de imágenes en Docker Hub para decidir qué imagen base elegir. Veamos un método para crear contenedores directamente a partir del código fuente: Cloud Native Buildpacks.
Cloud Native Buildpacks: del código fuente a los contenedores en un solo paso
Cloud Native Buildpacks (CNB) transforma el código fuente de tu aplicación en imágenes OCI totalmente compatibles que pueden ejecutarse en cualquier nube. Además, admite todos los lenguajes de programación populares. ¡Problema de los contenedores resuelto, con control, cumplimiento y facilidad de mantenimiento!
Si alguna vez usaste Heroku, Pivotal PaaS (ahora llamado VMware Tanzu Application Service) o Cloud Foundry, el proyecto de código abierto relacionado, ya viste algo similar a buildpacks. Solo tienes que enviar tu código a esos servicios y ellos se encargan de empaquetarlo en un objeto de entorno de ejecución adecuado. CNB ofrece esa misma experiencia para las imágenes OCI. Un desarrollador escribe el código y CNB compila todas las dependencias de la aplicación y luego empaqueta en una imagen de contenedor todo lo que necesita.

Cómo funciona Cloud Native Buildpacks (de vmware Tanzu Developer Center)
Ejemplo
Entonces, ¿qué construye exactamente Cloud Native Buildpacks?
Al igual que cualquier herramienta para crear imágenes, Cloud Native Buildpacks crea un conjunto de capas del sistema de archivos que contienen el entorno de ejecución, tu aplicación y todas sus dependencias, además de los metadatos que el motor de contenedores usa para saber cómo iniciar la aplicación. Aquí está la información de las capas del ejemplo anterior, obtenida con el comando docker image history:
Si te confunde la marca de tiempo de hace 41 años, se debe a que se permiten compilaciones reproducibles. Aquí puedes encontrar más información sobre los detalles: Time Travel with Pack
Con una herramienta llamada dive, podemos explorar con más detalle el contenido de las capas. En la ventana superior izquierda de la captura de pantalla de abajo, seleccionamos la penúltima capa de la imagen (en dive, las capas aparecen de abajo hacia arriba, mientras que en la salida de la compilación anterior aparecen en orden inverso). A la derecha, inspeccionamos el contenido de esa capa, que consta de archivos JAR de una aplicación Springboot dentro de nuestra imagen OCI. CNB se encargó de armar todo esto a partir del código fuente.

Seguridad de imágenes de contenedor OCI con Snyk Container
Snyk Container detecta vulnerabilidades en contenedores y cargas de trabajo de Kubernetes durante todo el ciclo de vida del desarrollo de software (SDLC), al analizar cualquier imagen compatible con OCI, incluidas las creadas con Cloud Native Buildpacks u otras herramientas de compilación que crean imágenes OCI. Pero Snyk hace más que enumerar todas las vulnerabilidades presentes en tu contenedor: Snyk Container ofrece recomendaciones para ayudarte a crear rápidamente contenedores mejores y menos vulnerables. Además, con nuestras capacidades nuevas y mejoradas para detectar imágenes base, ofrecemos el mismo nivel de recomendaciones que antes solo estaba disponible para quienes incluían un Dockerfile.
Corrección automatizada de imágenes base con Snyk Container
Amplía tus capacidades de seguridad y permite que los desarrolladores eliminen rápidamente numerosas vulnerabilidades al actualizar a una imagen base más segura o volver a compilar cuando la imagen base esté desactualizada.
Al analizar estas imágenes OCI, Snyk puede detectar en qué imagen base se basan tus imágenes y sugerir otras que tengan pocas vulnerabilidades, como se muestra a continuación.

¿Qué imagen base podríamos usar para nuestro contenedor OCI o cuál hemos actualizado recientemente?
Estas recomendaciones de imágenes base están disponibles sin importar cómo o dónde analices tus imágenes durante su ciclo de vida. El ejemplo anterior muestra una imagen almacenada en Docker Hub. A continuación, analizamos una imagen con la CLI de Snyk, un método que también se puede usar para analizar imágenes en tus pipelines de CI. Snyk puede sugerir imágenes base con pocas vulnerabilidades, como se muestra abajo:
Vulnerabilidades de aplicaciones y contenedores en conjunto
Puede que no siempre tengas acceso al código fuente original que se ejecuta en tus contenedores, pero las vulnerabilidades en las dependencias de tu código siguen siendo importantes. Snyk puede detectar y monitorear dependencias de código abierto para los lenguajes populares como parte del análisis de contenedores.

Ayuda a los desarrolladores a enfocarse en las vulnerabilidades de mayor riesgo
Snyk te ayuda a enfocarte fácilmente en los problemas de mayor prioridad, en lugar de clasificar cientos de problemas uno por uno. Ignora o excluye las vulnerabilidades de las imágenes base y usa señales de riesgo, como la madurez de los exploits y la configuración insegura de las cargas de trabajo, para ayudar a los equipos a filtrar el ruido habitual de los informes de vulnerabilidades de contenedores.
Snyk Container es solo una parte de la plataforma Snyk Cloud Native Application Security, diseñada para ayudar a los desarrolladores a encontrar y corregir vulnerabilidades en aplicaciones nativas de la nube. Pruébala hoy.
Seguridad de contenedores centrada en los desarrolladores
Snyk encuentra y corrige automáticamente vulnerabilidades en imágenes de contenedores y cargas de trabajo de Kubernetes.



