In this article
Todo lo que necesitas saber para comenzar con la seguridad de contenedores
Seguridad de contenedores para desarrolladores
El uso de contenedores ha crecido de forma exponencial en los últimos años. Aunque las tecnologías de contenedores existen desde hace décadas, el lanzamiento de Docker en 2013 hizo que fuera más práctico para las organizaciones adoptar un modelo de desarrollo y operaciones centrado en contenedores.
Este crecimiento también trae riesgos de seguridad. Con millones de imágenes disponibles, proteger los contenedores es una disciplina especializada. Hay muchas capas de seguridad que se aplican a los contenedores, por ejemplo:
La imagen del contenedor y el software que contiene
La interacción entre el contenedor, el sistema operativo host y los demás contenedores del host
El sistema operativo host
Las redes de contenedores y los repositorios de almacenamiento
El entorno de ejecución, a menudo en clústeres de Kubernetes
Como cada capa merece una guía propia, esta guía se enfoca en el primer aspecto: la imagen y tu código. Una sola imagen de contenedor puede contener cientos o miles de vulnerabilidades, lo que puede exponer a tu organización a incidentes de seguridad (como una brecha) y a una pérdida de productividad (por el tiempo que lleva clasificar y evaluar las vulnerabilidades a medida que aumenta la cantidad de imágenes en uso).
¿Qué es la seguridad de contenedores?
Tradicionalmente, la seguridad de las aplicaciones era responsabilidad de equipos de seguridad especializados, pero la forma en que se definen y compilan los contenedores hace que esa responsabilidad recaiga cada vez más en los desarrolladores y los equipos de DevSecOps.
Este cambio de responsabilidades, junto con la velocidad con la que se pueden actualizar e implementar los contenedores, requiere una metodología de seguridad práctica que vaya más allá de analizar los contenedores en CI” y seguir las prácticas recomendadas para imágenes cuando un análisis revela cientos de vulnerabilidades.
¿Qué es la seguridad de contenedores?
La seguridad de contenedores consiste en implementar herramientas y procesos de seguridad para proteger la información de cualquier sistema o carga de trabajo basada en contenedores. Esto incluye la imagen del contenedor, el contenedor en ejecución y todos los pasos necesarios para crear esa imagen y ponerla en funcionamiento.
Anteriormente, creamos una guía de seguridad de contenedores con Docker. Consulta nuestros 3 pasos prácticos para proteger una imagen de contenedor y obtener más orientación práctica. En esta publicación, presentamos las prácticas de DevSecOps que las organizaciones utilizan para crear imágenes y contenedores en ejecución más seguros, y las herramientas técnicas —como Snyk Container, Snyk IaC y nuestra alianza con Sysdig— que ofrecen seguridad integral para los contenedores, desde el desarrollo hasta el entorno de ejecución.
¿Por qué es importante la seguridad de contenedores?
La seguridad de contenedores es importante porque la imagen del contenedor contiene todos los componentes que, tarde o temprano, ejecutarán tu aplicación. Si la imagen del contenedor tiene vulnerabilidades ocultas, aumentan el riesgo y la posible gravedad de los problemas de seguridad en producción. Por eso, también debes monitorear producción. Puedes crear imágenes sin vulnerabilidades ni privilegios elevados, pero aun así necesitas monitorear lo que sucede en el entorno de ejecución.
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.
Panorama de la seguridad de contenedores en distintos ecosistemas
Seguridad de contenedores de Docker
La enorme base de usuarios de Docker —con decenas de millones de usuarios y cientos de miles de millones de descargas de imágenes— demuestra que la contenerización está cambiando la forma de crear aplicaciones. La responsabilidad de la seguridad recae cada vez más en los desarrolladores. Es importante analizar las imágenes de Docker antes de enviarlas a Docker Hub o a otros registros para encontrar y corregir vulnerabilidades en paquetes de Linux, permisos de usuario, configuraciones de red, herramientas de código abierto o administración de acceso. Este tipo de análisis puede ayudarte a detectar y corregir vulnerabilidades en tu aplicación e infraestructura antes de ponerlas en producción.
Seguridad de contenedores de Kubernetes
Kubernetes ofrece una gran variedad de controles de seguridad para ayudar a proteger los clústeres, las cargas de trabajo y los contenedores. Es importante tener en cuenta que Kubernetes requiere configuración manual, ya que ninguno de los controles de seguridad viene configurado al implementar Kubernetes. Además, aunque Kubernetes ofrece controles y funciones para ayudar a crear un clúster seguro, las configuraciones de seguridad predeterminadas no suelen ser suficientes. Implementar cargas de trabajo de forma segura requiere experiencia en Kubernetes. Consulta nuestra página sobre las prácticas recomendadas de seguridad de Kubernetes para obtener más información.
Seguridad de contenedores de GKE
Google Kubernetes Engine (GKE) ofrece muchas herramientas para proteger las cargas de trabajo. Conviene adoptar un enfoque por capas para la seguridad de GKE y configurar funciones de seguridad para los controles de acceso, las cargas de trabajo y otros aspectos. GKE puede ejecutarse en modo estándar, en el que administras la infraestructura subyacente, o en modo Autopilot, en el que GKE aprovisiona y administra la infraestructura. La integración de Snyk Container con Kubernetes permite a los clientes proteger las cargas de trabajo en GKE, tanto en modo estándar como en Autopilot, detectar vulnerabilidades en las imágenes de contenedores y el código de las aplicaciones, y analizar las configuraciones de Kubernetes para encontrar problemas.
Seguridad de contenedores de AKS
Microsoft Azure Kubernetes Service (AKS), al igual que GKE, incluye funciones de seguridad sólidas, como la integración con Azure Policy y actualizaciones y parches rápidos y constantes. Sin embargo, requiere un proceso semimanual para actualizar los componentes del clúster a versiones más recientes, y es necesario habilitar las políticas de red al crear el clúster. Al igual que con GKE, Snyk puede analizar las configuraciones y los contenedores de Kubernetes, y habilitar el monitoreo automático al implementar recursos de AKS.
Seguridad de contenedores de EKS
Amazon Elastic Kubernetes Service (Amazon EKS) ofrece un sólido conjunto de funciones de seguridad de manera predeterminada y opera según el modelo de responsabilidad compartida de AWS, que define quién es responsable de los distintos elementos de la seguridad de contenedores. Por lo general, AWS es responsable de la seguridad “de” la nube, mientras que tú, como cliente, eres responsable de la seguridad “en” la nube. Al igual que con las otras opciones de Kubernetes mencionadas anteriormente, Snyk se integra fácilmente con Amazon EKS y Amazon Elastic Container Registry (Amazon ECR) para analizar las configuraciones y los contenedores de Kubernetes, y habilitar el monitoreo automatizado al implementar en Amazon EKS.
Cómo proteger contenedores con Snyk Container
Con millones de vulnerabilidades de contenedores en circulación, encontrar, priorizar y corregir vulnerabilidades puede ser abrumador para los desarrolladores. Snyk Container reduce el ruido de los informes de vulnerabilidades tradicionales al detectar y corregir juntas las vulnerabilidades de las aplicaciones y los contenedores, incluso si no tienes acceso al código fuente original que se ejecuta en tus contenedores.
Snyk Container analiza continuamente en busca de nuevas vulnerabilidades, prioriza las correcciones según el contexto y la posibilidad de explotación, detecta problemas en las dependencias de código abierto y vincula las vulnerabilidades con los comandos de Dockerfile para que los desarrolladores puedan implementar correcciones con mayor facilidad. En 2021, se usó Snyk Container para realizar más de 130 millones de pruebas de contenedores, y los usuarios de Snyk Container corrigieron 56 millones de vulnerabilidades.
Snyk Container trabaja en conjunto con Snyk Infrastructure as Code para proteger la configuración de los contenedores. Se integra con muchas plataformas de Kubernetes, incluidas AKS y GKE; registros de contenedores como Docker Hub, GCR y Quay; y sistemas operativos base de contenedores, como Amazon Linux y Ubuntu, entre muchos otros. El análisis integrado de vulnerabilidades ayuda a los desarrolladores a identificar y usar imágenes base mínimas adecuadas, y automatiza el proceso de actualización para eliminar vulnerabilidades rápidamente.
Al igual que el resto de la plataforma Snyk, Snyk Container se diseñó con un enfoque centrado en los desarrolladores y respalda la cultura DevSecOps. Se integra en el IDE, analiza los pull request antes de fusionarlos, ofrece orientación para corregir problemas y aplica pruebas automatizadas a los pipelines de CI/CD. Una vez que los contenedores están en ejecución, monitorea continuamente las implementaciones para detectar la exposición a vulnerabilidades existentes o recién divulgadas. Luego, envía alertas por Slack, Jira, correo electrónico u otros medios para ayudar a los equipos de DevSecOps a identificar y corregir vulnerabilidades rápidamente.
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.
Cómo la alianza entre Snyk y Sysdig permite proteger el entorno de ejecución de los contenedores
La retroalimentación temprana de Snyk Container sobre las imágenes puede ayudar a eliminar el 70 % o más de las vulnerabilidades, pero es posible que quede sin abordar hasta el 30 % de las vulnerabilidades en el entorno de ejecución. Estas pueden sumar cientos de vulnerabilidades en miles de contenedores y numerosos clústeres. Encontrarlas y corregirlas puede ser abrumador. Es difícil saber qué paquetes se usan en un contenedor en ejecución y qué vulnerabilidades afectan a esos paquetes durante la ejecución. Los equipos de seguridad y operaciones responsables de administrar entornos en vivo deben detectar las vulnerabilidades antes de involucrar a los equipos de desarrollo para que las corrijan. Además, como los desarrolladores no suelen tener experiencia en sistemas, las herramientas de vulnerabilidad heredadas pueden tardar meses en encontrar y corregir problemas.
Snyk se asoció con Sysdig para ayudar a resolver problemas en los entornos de ejecución, ofreciendo más contexto sobre lo que afecta a ese entorno. Esta alianza crea una solución de seguridad que abarca todo el proceso de DevOps. La combinación de las plataformas Snyk y Sysdig protege todo, desde el código en el entorno de desarrollo hasta la infraestructura que ejecuta el clúster.
Consulta esta publicación del anuncio para obtener más información sobre cómo la alianza entre Snyk y Sysdig amplía la seguridad de contenedores al entorno de ejecución.
Conclusiones sobre la seguridad de contenedores
La seguridad de contenedores es un tema amplio, y aun si limitamos el alcance a la seguridad de las imágenes base, hay muchos desafíos que considerar. A la hora de proteger tus imágenes, ten en cuenta estos puntos clave:
Empieza con imágenes base de un proveedor confiable y usa firmas digitales para verificar su autenticidad.
Elige imágenes base mínimas que incluyan solo los paquetes básicos del sistema operativo y el framework que prefieras; luego, agrega lo que necesites.
Revisa las imágenes en busca de vulnerabilidades desde temprano y con frecuencia.
Analiza durante todo el ciclo de vida del software: en el escritorio, en CI, en las imágenes almacenadas en registros y en los contenedores que se ejecutan en tus clústeres.
Elige herramientas de análisis que vayan más allá de generar informes de vulnerabilidades básicos en hojas de cálculo. Busca herramientas que ofrezcan consejos para mitigar problemas, recomienden imágenes base, brinden a los desarrolladores información para corregir problemas y te den la flexibilidad necesaria para definir tus controles de seguridad.
Si te interesa proteger tus imágenes de contenedores durante todo su ciclo de vida, Snyk Container automatiza la seguridad de contenedores con un enfoque centrado en los desarrolladores. Así, ofrece el equilibrio adecuado entre seguridad y productividad para que puedas crear imágenes y contenedores en ejecución más seguros.
Glosario de seguridad de contenedores
Análisis de contenedores: Proceso para encontrar vulnerabilidades en contenedores mediante el análisis de los paquetes y las dependencias de una imagen de contenedor.
Monitoreo de contenedores: Recopilación de métricas y seguimiento del estado de las aplicaciones y arquitecturas contenerizadas.
Kubernetes: Sistema de código abierto desarrollado originalmente en Google para orquestar aplicaciones contenerizadas en un clúster.
K8s: Abreviatura de Kubernetes.
Docker: La plataforma de contenedores más popular del mundo. Docker democratizó las herramientas y los procesos para crear y ejecutar contenedores, y permitió que los desarrolladores usaran estas tecnologías fácilmente.
Dockerfile: Archivo de texto que contiene las configuraciones necesarias para compilar una imagen de Docker.
Google Kubernetes Engine (GKE): Servicio administrado de Google para ejecutar cargas de trabajo de Kubernetes en Google Cloud.
AKS: Servicio de Kubernetes administrado de Microsoft Azure. Comenzó como un servicio de contenedores de Azure más genérico y luego se convirtió en AKS cuando Kubernetes se consolidó como la plataforma de orquestación de contenedores dominante.
AWS EKS: Servicio de Kubernetes administrado de Amazon Web Services para ejecutar cargas de trabajo de Kubernetes en AWS. AWS EKS se puede usar por sí solo o con otros servicios, como AWS Fargate. AWS Fargate básicamente oculta toda la infraestructura de Kubernetes para que los usuarios puedan enfocarse solo en sus propios pods de Kubernetes.
Imagen de contenedor: Archivo estático que contiene un conjunto de instrucciones para crear un contenedor en ejecución
Registro de contenedores: Repositorio de imágenes de contenedores y herramienta de administración que facilita almacenarlas y compartirlas.
Entorno de ejecución de contenedores: Software que crea, ejecuta y administra contenedores en un sistema operativo anfitrión.
Shift left: Cultura y conjunto de herramientas que integran la seguridad en los flujos de trabajo de los desarrolladores
DevSecOps: Abreviatura de desarrollo, seguridad y operaciones. DevSecOps es un enfoque que automatiza la seguridad en el ciclo de vida de entrega de software.
Preguntas frecuentes sobre seguridad de contenedores
¿Los contenedores son seguros?
Pueden serlo, pero rara vez lo son de forma predeterminada. Es posible que los procesos y las herramientas que antes se usaban en la infraestructura tradicional no sean suficientes para brindar una seguridad sólida a los contenedores. Los contenedores han cambiado el panorama de los sistemas distribuidos, por lo que es necesario aplicar nuevos métodos para protegerlos. Existe una amplia gama de soluciones de seguridad para contenedores que se pueden y se deben implementar para ofrecer la mejor protección posible a las cargas de trabajo contenerizadas.
¿Cómo corrijo las vulnerabilidades de seguridad en los contenedores?
Corregir las vulnerabilidades de seguridad en los contenedores es un proceso de cuatro pasos. Primero, ocúpate de las vulnerabilidades en tu código y sus dependencias. Segundo, elige las imágenes base mínimas que necesitas: empieza con una versión ligera y agrega lo necesario. Luego, evalúa las herramientas y los paquetes adicionales que agregas. A medida que los contenedores se acercan a producción, la cantidad de elementos adicionales debería ser cero. Por último, asegúrate de configurar el contenedor para que se ejecute con la menor cantidad posible de privilegios.
¿Cómo proteger una imagen de contenedor de Docker?
Para proteger una imagen de contenedor de Docker, hay que tomar medidas para asegurarse de que no sea necesario recurrir a malas prácticas de seguridad, como ejecutarla como usuario root, para que funcione correctamente. La documentación de Docker ofrece un excelente punto de partida, en particular sobre la confianza. Los controles de confianza pueden implementarse incluso en registros privados. Asegurarte de que las imágenes base mantengan un conjunto mínimo de paquetes y dependencias, y utilizar herramientas de análisis para detectar vulnerabilidades, te ayudará aún más a proteger las imágenes de Docker.
¿Qué es el escaneo de contenedores?
El escaneo de contenedores consiste en usar herramientas y procesos para detectar posibles vulnerabilidades de seguridad en los contenedores. Es un paso fundamental para proteger los paquetes contenerizados. Las herramientas de escaneo pueden analizar el código, las dependencias transitivas, la configuración de los contenedores y la configuración del entorno de ejecución de los contenedores, entre otros elementos.
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.