Guía para principiantes sobre la seguridad de los contenedores
Hoy en día, los equipos de DevOps utilizan los contenedores más que nunca, pero a menudo se piensa en su seguridad a posteriori. Esto es lo que debe saber sobre la seguridad de los contenedores.
Los contenedores de alta portabilidad y eficiencia de recursos son cada vez más la opción preferida para el desarrollo de software moderno. De hecho, según la empresa de estudios de mercado Gartner, para 2023, más del 70 % de las organizaciones ejecutarán más de dos aplicaciones en contenedores.
Pero los contenedores tienen sus desventajas, especialmente cuando se trata de seguridad. La Encuesta global de DevSecOps 2022 de GitLab descubrió que solo el 64 % de los profesionales de la seguridad tenían un plan de seguridad para los contenedores, y muchos equipos de DevOps no cuentan con un plan para otras tecnologías de software de vanguardia, como las nativas de la nube/sin servidor, las API y los microservicios.
La solución es que los equipos de DevOps integren y controlen previamente las prácticas de seguridad en cada etapa del proceso de desarrollo de software. A continuación, le mostramos paso a paso cómo los equipos pueden lograr ese objetivo.
Un contenedor es una unidad liviana que contiene todos los componentes que se necesitan para ejecutar una aplicación, como el código de la aplicación, el tiempo de ejecución, las bibliotecas y las configuraciones. Y la seguridad de los contenedores hace referencia a las medidas y prácticas que se toman con el objetivo de garantizar la seguridad y la integridad de los contenedores. La seguridad de los contenedores comprende todo, desde las aplicaciones dentro de los contenedores hasta la infraestructura en la que se ejecutan. La seguridad y la calidad de las imágenes de base son fundamentales para garantizar que las imágenes derivadas procedan de una fuente confiable. Aumente la seguridad de su pipeline de contenedores mediante la recopilación de imágenes de confianza, la gestión del acceso con el uso de un registro privado, la integración de pruebas de seguridad y la automatización de la implementación, además de la defensa continua de su infraestructura. La mejora de la seguridad del contenedor es el proceso de utilizar herramientas de análisis de contenedores para detectar posibles vulnerabilidades y abordarlas a fin de minimizar el riesgo de ataque.
Una seguridad de los contenedores robusta reduce el riesgo de implementar un contenedor que contiene una falla de seguridad o código malicioso en un entorno de producción.
La seguridad de los contenedores difiere de los métodos de seguridad tradicionales debido a la mayor complejidad y dinamismo del entorno de los contenedores. En pocas palabras, hay muchas más variables y diferentes riesgos de seguridad.
Si bien los contenedores parecen comportarse como pequeñas máquinas virtuales (VM), en realidad no es así, por lo que requieren una estrategia de seguridad diferente. El tráfico entre aplicaciones en un contenedor no cruza el perímetro de la seguridad de la red, pero se debe supervisar para detectar tráfico malicioso entre las aplicaciones y sus imágenes. Se puede utilizar su orquestador para establecer políticas de seguridad para procesos y recursos, pero una estrategia de seguridad completa requiere más.
Las imágenes de los contenedores definen lo que se ejecuta en cada contenedor. Los desarrolladores deben asegurarse de que las imágenes no contengan vulnerabilidades de seguridad ni código comprometido y deben evitar crear imágenes con elementos innecesarios para minimizar la superficie de ataque del contenedor. Se pueden usar herramientas de validación de imágenes para prohibir imágenes no confiables pero, por lo general, no están habilitadas de forma predeterminada. También es posible analizar las imágenes después de crearlas para detectar imágenes dependientes que también podrían tener vulnerabilidades.
A diferencia de las máquinas virtuales, varios contenedores pueden ejecutarse en el mismo sistema operativo y un ataque puede ocurrir en cualquier nivel. Un sistema operativo host vulnerable pone en riesgo sus contenedores, y un contenedor vulnerable puede abrir una vía de ataque al sistema operativo host. Aplique el aislamiento del espacio de nombres para limitar la interacción entre el contenedor y el kernel del sistema operativo host, y automatice los parches para alinearlos con los lanzamientos del parche del proveedor. El sistema operativo también debe ser lo más simple posible, sin componentes innecesarios (como aplicaciones o bibliotecas que en realidad no se necesitan para ejecutar su orquestador).
La orquestación de contenedores coordina y gestiona contenedores, lo que permite que las aplicaciones en contenedores se expandan y brinden soporte a miles de usuarios. Es posible que su orquestador disponga de sus propias funcionalidades de seguridad, que posiblemente le permitan crear reglas para que Kubernetes las aplique de manera automática en todos los pods del clúster. Este tipo de funcionalidad básica es útil, pero también es solo un primer paso hacia un conjunto de políticas más robustas.
Los contenedores pueden estar distribuidos en múltiples sistemas y proveedores de servicios en la nube, por lo que la gestión del acceso es aún más importante. Los secretos, que incluyen claves de API, credenciales de inicio de sesión y tokens, deben gestionarse de manera rigurosa para garantizar que el acceso al contenedor se limite a los usuarios con privilegios. El acceso de los usuarios también se puede definir mediante un control de acceso basado en roles, lo que le permite limitar el acceso según sea necesario.
Después de la implementación, la actividad de los contenedores debe supervisarse y los equipos deben ser capaces de detectar y responder a cualquier amenaza de seguridad. Nordcloud sugiere supervisar comportamientos sospechosos, como llamadas de red, llamadas de la API e intentos de inicio de sesión inusuales. Los equipos deben contar con pasos de mitigación predefinidos para los pods y deben poder aislar el contenedor en una red diferente, reiniciarlo o detenerlo hasta que se identifique la amenaza. Esto puede proporcionar una capa adicional de seguridad contra el malware.
Los proveedores de servicios en la nube también asumen parte del trabajo al proteger el hardware subyacente y las redes básicas que se utilizan para proporcionar servicios en la nube, pero los usuarios siguen compartiendo esa responsabilidad, además de asumir la responsabilidad del acceso a las aplicaciones, la configuración y los parches de las aplicaciones, y los parches y el acceso al sistema.
En 2017, el Departamento de Comercio de los EE. UU. publicó su Application Container Security Guide (Guía de seguridad de los contenedores de aplicaciones). Aunque esta guía tiene algunos años, los equipos que solo adoptan contenedores pueden beneficiarse de las siguientes recomendaciones:
-
Adapte la cultura operativa y los procesos técnicos de la organización para que sean compatibles con la nueva forma de desarrollar, ejecutar y dar soporte a las aplicaciones que permiten los contenedores: la adopción de contenedores puede alterar su cultura y metodologías de desarrollo existentes, y es posible que sus prácticas actuales no sean directamente aplicables en un entorno en contenedores. Anime, eduque y capacite a su equipo para que reconsideren la forma en que codifican y operan.
-
Utilice sistemas operativos host específicos de contenedores en lugar de sistemas de uso general para reducir las superficies de ataque: un sistema operativo host específico de contenedor es un sistema operativo minimalista diseñado para ejecutar solo contenedores. El uso de estos sistemas operativos reduce en gran medida las superficies de ataque, y esto implica menos oportunidades para que sus contenedores se vean comprometidos.
-
Solo agrupe contenedores con el mismo propósito, sensibilidad y enfoque ante amenazas en un único kernel del sistema operativo host para permitir una defensa adicional en profundidad: La segmentación de contenedores proporciona una defensa adicional en profundidad. Agrupar los contenedores de esta manera hace más difícil para un atacante ampliar las posibles amenazas a otros grupos. También aumenta la probabilidad de que se detecten y contengan las amenazas.
-
Adopte herramientas y procesos de gestión de vulnerabilidades específicas de contenedores para las imágenes a fin de evitar riesgos: las herramientas tradicionales hacen muchas suposiciones que no están alineadas con un modelo de contenedores y, por lo general, no pueden detectar vulnerabilidades dentro de los contenedores. Las organizaciones deben adoptar herramientas y procesos para validar e imponer el cumplimiento de las mejores prácticas de configuración segura para las imágenes, incluidos los informes centralizados, la supervisión de cada imagen y la prevención de la ejecución de imágenes que no cumplen con la normativa.
-
Considere el uso de contramedidas basadas en hardware para proporcionar una base para la informática de confianza: amplíe las prácticas de seguridad a todos los niveles de la tecnología de contenedores al basar la seguridad en una raíz de confianza de hardware, como el módulo de plataforma confiable (TPM).
-
Utilice herramientas de defensa de tiempo de ejecución compatibles con contenedores: implemente y utilice una solución de seguridad de los contenedores dedicada capaz de supervisar el entorno del contenedor y proporcionar una detección precisa de actividades anómalas y maliciosas en su interior.
Aprenda la jerga póngase manos a la obra.
Sumérjase en los conceptos básicos de seguridad de DevSecOps.
Comience a usar DevSecOps con GitLab.
Pruebe GitLab
Descubra todo lo que su equipo puede lograr desde una única plataforma para la entrega de software.
Obtener prueba gratuita