¿Hay soluciones de contenedor lo suficientemente seguras para ejecutar un código que no sea de confianza, particularmente como un servicio de VPS?

1

Una serie de respuestas aquí en este Intercambio de Pilate argumentan que los contenedores son intrínsecamente inseguros y que nunca se debe ejecutar código no confiable en un contenedor, y mucho menos ejecutar un contenedor construido completamente por otra persona.

Y, sin embargo, hay una serie de compañías que actualmente ofrecen servicios VPS de estilo AWS que utilizan contenedores en lugar de virtualización.

Por supuesto, a menos que ejecute su propio centro de datos privado con guardias armados y no lo conecte a Internet, ningún VPS o servidor alquilado está perfectamente seguro. Para que los contenedores sean relevantes, la posibilidad de un ataque no necesita ser cero, solo debe ser lo suficientemente pequeño en comparación con los vectores de ataque de los servicios alternativos.

Entonces la pregunta es: ¿qué tan seguros pueden ser los contenedores? ¿Hay sistemas de contenedores (si es así, cuáles) que no tienen explotaciones conocidas actualmente, y para las cuales las explotaciones probablemente sean bastante difíciles de crear?

Y un aspecto específico de la pregunta: en el peor de los casos, ¿hay algún sistema de contenedor en el que la ejecución de un contenedor que no es de confianza pueda considerarse tan segura como la ejecución de código sin contenedor como usuario sin privilegios?

    
pregunta Josh 04.05.2016 - 21:53
fuente

1 respuesta

0

Es bastante difícil discutir la seguridad de la contenedorización de forma aislada, ya que esencialmente las funciones de aislamiento proporcionadas son funciones del kernel de Linux (suponiendo que estamos hablando de proyectos como LXD, Docker y Rkt).

Es justo decir que una aplicación en un contenedor en un host probablemente no sea menos segura que la misma aplicación que se ejecuta fuera del contenedor en el mismo host.

Sugeriría que un contenedor bien configurado pueda agregar una seguridad considerable a la solución general en comparación con los procesos no contenidos.

Las características como los espacios de nombres de Linux, cgroups, las capacidades, el filtrado de syscall y los sistemas de control de acceso obligatorio (como AppArmor o SELinux) pueden utilizarse para ayudar a asegurar los procesos que se ejecutan en un contenedor.

En muchos casos, depende de cuánto esfuerzo esté dispuesto a poner el operador para configurar la seguridad del contenedor. Los valores predeterminados de estos proyectos tienden a favorecer que la mayoría de las aplicaciones funcionen aparentemente en lugar de centrarse en la seguridad absoluta, por lo que hay mucho margen para endurecer.

    
respondido por el Rоry McCune 21.06.2016 - 18:54
fuente

Lea otras preguntas en las etiquetas