In this article
Todo lo que necesitas saber sobre la seguridad en tiempo de ejecución de contenedores
Los sistemas de orquestación de contenedores, como Kubernetes, ofrecen una forma más sencilla de configurar y administrar contenedores a escala. A medida que ha aumentado la adopción de contenedores, el uso de estos sistemas de orquestación se ha disparado. Kubernetes, por ejemplo, ofrece orquestación para más de tres cuartas partes de las aplicaciones contenerizadas actuales. Por supuesto, la popularidad de estas plataformas las convierte en objetivos frecuentes de los ciberdelincuentes. Kubernetes combate este riesgo con políticas de seguridad para pods y administración de desviaciones, que ayudan a proteger los contenedores durante el desarrollo; pero ¿qué ocurre cuando los contenedores pasan a ejecución?
Docker y Kubernetes ofrecen muchas herramientas para integrar la seguridad en los contenedores, pero no protegen el entorno de ejecución en sí. Como resultado, ha surgido una amplia gama de herramientas, procesos y políticas para proteger los contenedores en producción.
Te explicaremos los riesgos relacionados con la ejecución de contenedores y los procesos que puedes usar para protegerlos en producción.
El desafío de proteger los contenedores en ejecución
Prácticas como incorporar la seguridad en las compilaciones de contenedores y crear imágenes de contenedores más pequeñas ayudan a evitar que se incluyan problemas de seguridad en la imagen. Sin embargo, cuando un contenedor está en ejecución pueden surgir varias amenazas, entre ellas:
Vulnerabilidades de aplicaciones recién descubiertas en imágenes antiguas
Desviación de la configuración, como cambiar privilegios de usuario sin autorización
Ataques de escalamiento de privilegios que permiten a los atacantes acceder a secretos, volúmenes de almacenamiento u otros recursos
Implementación de contenedores que aprovechan errores en el control de acceso
Activación de código malicioso escrito dentro de un contenedor
Las herramientas de monitoreo de contenedores, como Prometheus y Grafana, suelen implementarse para mejorar el rendimiento y la eficiencia de los contenedores en ejecución, pero no están diseñadas para la seguridad.
Cómo detectar y corregir los riesgos de ejecución de contenedores
Para proteger los contenedores en ejecución, es fundamental monitorear eventos clave, como los inicios de sesión. Sin embargo, la seguridad en tiempo de ejecución de contenedores va más allá del simple monitoreo de eventos. Comienza por integrar la seguridad en la arquitectura con herramientas de aplicación de políticas que establecen y hacen cumplir políticas en Kubernetes o en el kernel. Luego, las herramientas de análisis pueden examinar registros de auditoría, infraestructura como código (IaC), ajustes de configuración y el código de la aplicación para detectar nuevas vulnerabilidades o configuraciones incorrectas en producción.
¿Quién es responsable de la seguridad en tiempo de ejecución de contenedores?
Tradicionalmente, los equipos de seguridad especializados se han encargado de proteger el entorno de ejecución de las aplicaciones. Sin embargo, la velocidad y la complejidad del desarrollo ágil y nativo de la nube hacen que los desarrolladores participen cada vez más en la mitigación de los riesgos de seguridad en su código. Están desplazando la seguridad hacia la izquierda para integrarla desde las primeras etapas de planificación y codificación.
Las responsabilidades de seguridad de los desarrolladores también se extienden a lo largo del ciclo de vida de los contenedores: desde la planificación y la codificación hasta el análisis, la implementación y el entorno de ejecución. Ahora también deben seguir el ciclo de desarrollo hasta el final y considerar qué sucede cuando sus contenedores pasan a ejecución.
Cómo elegir ajustes seguros para el entorno de ejecución del motor de contenedores
Puedes configurar los ajustes del entorno de ejecución del motor de contenedores para limitar la capacidad de los atacantes de ampliar su alcance tras una brecha en la red. Estos son algunos ajustes recomendados que brindarán protección adicional a tu organización:
No ejecutes como root
Los contenedores deben ejecutarse como usuarios, no como root. Para hacerlo, primero define el ID de usuario en el Dockerfile y luego ejecuta el contenedor como ese usuario. Así será más fácil limitar el acceso mediante controles de acceso basados en roles.
Usa un sistema de archivos raíz de solo lectura de forma predeterminada
Esto evita que los atacantes tomen el control de una máquina o escriban código malicioso en el host.
Limita el acceso a los hosts de contenedores
Deshabilita el acceso a los servidores mediante SSH. Esto ayuda a impedir que los atacantes y el malware escapen y ataquen el sistema host.
Elimina las capacidades de Linux
Las capacidades permiten ajustar con precisión los privilegios del kernel, como la posibilidad de leer el registro de auditoría o eludir las comprobaciones de permisos. Eliminar capacidades de Linux de un contenedor limita la capacidad de los atacantes para manipular el kernel.
No ejecutes en modo privilegiado
Los entornos de ejecución de contenedores incluyen medidas sólidas para protegerlos del sistema host. Evita la ejecución en modo privilegiado, ya que elude la mayoría de estas comprobaciones.
Analiza el entorno de ejecución con análisis de IaC para detectar configuraciones incorrectas
Es fácil que los desarrolladores introduzcan problemas de configuración al preparar la infraestructura en la nube y el orquestador de contenedores. El análisis de IaC con Snyk IaC puede detectar automáticamente configuraciones incorrectas de Kubernetes y otras, y enviar información útil a las herramientas del flujo de trabajo de desarrollo.
Para obtener más información sobre los ajustes de seguridad en tiempo de ejecución, lee nuestra publicación: 10 ajustes de Security Context de Kubernetes que debes conocer | Snyk.
La alianza de Sysdig y Snyk para la seguridad en tiempo de ejecución de contenedores
No existe una solución única ni un botón mágico para proteger los contenedores en ejecución, por lo que es importante integrar protocolos de seguridad siempre que sea posible. La prioridad es identificar vulnerabilidades y configuraciones incorrectas, y corregir primero los problemas más importantes. La seguridad es una forma de gestión de riesgos, así que es fundamental identificar tanto las vulnerabilidades como sus consecuencias. Además, es importante aprovechar las herramientas y los ajustes de Kubernetes para mejorar la postura de seguridad de los contenedores.
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.
Aunque una solución totalmente automatizada de seguridad en tiempo de ejecución de contenedores puede detectar la mayoría de los problemas, los desarrolladores siguen siendo necesarios para corregirlos. Las herramientas de análisis pueden detectar vulnerabilidades o configuraciones incorrectas en el entorno de ejecución, pero los desarrolladores aún deben volver al código correspondiente para aplicar las correcciones. Esto desperdicia tiempo y recursos y puede hacer que pasen por alto algún problema. Ahí es donde entra Snyk. Snyk aborda este problema al detectar fallas y recomendar correcciones dentro de los flujos de trabajo de desarrollo. Herramientas como Snyk Container y Kubernetes Configuration Security te permiten analizar contenedores Docker y configuraciones de Kubernetes, y recibir comentarios directamente en las herramientas de CI/CD.
Además, Snyk se asoció con Sysdig para llevar al entorno de ejecución este enfoque de seguridad que prioriza a los desarrolladores. La seguridad en tiempo de ejecución de Sysdig utiliza Falco, una herramienta de código abierto, para detectar intrusiones, amenazas y vulnerabilidades en tiempo real en contenedores y Kubernetes. La integración de Snyk y Sysdig permite enviar esta información directamente a los equipos de desarrollo para que puedan priorizar y aplicar correcciones.
Preguntas frecuentes
¿Qué es la seguridad en tiempo de ejecución de contenedores?
La seguridad en tiempo de ejecución de contenedores se refiere a las herramientas y los procesos que se usan para proteger los contenedores contra amenazas y vulnerabilidades una vez que llegan a producción. Las estrategias de seguridad en tiempo de ejecución de contenedores suelen incorporar un alto nivel de automatización, mientras que los desarrolladores y los equipos de seguridad se encargan de las configuraciones de los contenedores y del análisis de vulnerabilidades en entornos activos, así como de la desviación de la configuración.
¿Qué es el escaneo de contenedores en tiempo de ejecución?
El escaneo de contenedores en tiempo de ejecución consiste en usar herramientas y procesos para analizar contenedores en producción. Las herramientas de escaneo ayudan a detectar vulnerabilidades o problemas de configuración y, luego, los corrigen automáticamente o sugieren soluciones a los desarrolladores. El uso de motores de políticas puede ayudar a automatizar el proceso mediante reglas de detección, que el escáner puede usar para identificar comportamientos o actividades inesperados.
¿Qué es la seguridad en tiempo de ejecución de Kubernetes?
La seguridad en tiempo de ejecución de Kubernetes consiste en usar herramientas y procesos para proteger todos los componentes del entorno de ejecución de Kubernetes. Los desarrolladores pueden aprovechar las herramientas y configuraciones integradas de Kubernetes para reforzar la seguridad, como la capacidad de controlar el tráfico de entrada y salida de la red hacia y desde los pods. Los motores de políticas que se integran con Kubernetes mediante API permiten un control más estricto del comportamiento de los usuarios y del tráfico de red. Por último, al usar un escáner en tiempo de ejecución, los profesionales de DevSecOps pueden detectar nuevas vulnerabilidades y desviaciones de configuración en el entorno activo.
¿Los contenedores son seguros?
Los contenedores no son seguros de forma predeterminada, por lo que es importante que los desarrolladores y los equipos de seguridad incorporen la seguridad de contenedores desde el principio. Los contenedores y las aplicaciones son cada vez más complejos, así que no siempre es viable esperar que los desarrolladores conozcan todas las herramientas y los procesos que pueden usar para protegerlos. Herramientas como Snyk y Sysdig permiten a los desarrolladores detectar amenazas directamente en el código de los contenedores y en el entorno de ejecución. Luego, reciben información sobre vulnerabilidades y configuraciones incorrectas en sus flujos de trabajo habituales.