Los problemas de seguridad más comunes de Kubernetes y cómo puede mitigarlos

Publicado: 2021-03-30

Kubernetes y los contenedores prometen tres cosas:

  • Desarrollo y lanzamiento de aplicaciones más rápido.
  • Corrección de errores más rápida.
  • Aumento de la velocidad de las funciones.

Sin embargo, a menudo tiene el costo de seguridad comprometida y eso es algo que no es aceptable en ninguna tecnología de desarrollo web.

Para darse cuenta del estado de la seguridad de Kubernetes, aquí hay dos factores de una encuesta realizada por StackRox a fines de 2020:

  • El 90% de los participantes de la encuesta informaron haber enfrentado un incidente de seguridad relacionado con contenedores y Kubernetes en los últimos 12 meses.
  • El 44% de los participantes tuvo que retrasar el lanzamiento de su aplicación debido a problemas de seguridad con respecto a Kubernetes.

¿Cuáles son las razones más comunes detrás de estos problemas de seguridad?

Los problemas de seguridad más comunes relacionados con Kubernetes
1. Configuraciones incorrectas

Las encuestas han revelado que las exposiciones causadas por configuraciones incorrectas son el riesgo más frecuente en la seguridad de los entornos de contenedores y Kubernetes.

Cuando se usa Kubernetes para crear aplicaciones en contenedores, la administración de la configuración es el mayor riesgo para los profesionales de la seguridad.

Esto se debe principalmente a que el mercado está repleto de herramientas de análisis de vulnerabilidades, pero la gestión de la configuración aún depende en gran medida de la consideración humana.

Aquí hay algunos consejos sobre cómo configurar algunos de los componentes comunes de una aplicación en contenedores para asegurarse de que la seguridad no se vea comprometida.

Imágenes:

Evite el uso de cualquier software que no sea absolutamente necesario. Esto incluye administradores de paquetes, herramientas de red y clientes como curl o shells de Unix.

Recuerde, el uso de cualquier software aumenta el riesgo de seguridad. Además, solo use imágenes de fuentes confiables.

Misterios:

Evite hornear secretos en las imágenes o exponerlos innecesariamente.

Como práctica segura, use herramientas de administración de secretos confiables para asegurarse de que las implementaciones solo monte los secretos cuando sean necesarios.

Espacios de nombres:

Utilice los espacios de nombres con generosidad. Actúan como un límite para Kubernetes y las políticas de red. El uso de espacios de nombres puede limitar los efectos de un ataque y puede contener errores y ataques para que no puedan propagarse y causar más destrucción.

Privilegios de tiempo de ejecución:

Solo hay una regla de privilegios: permitir el menor número de ellos para que el software sea más seguro.

Políticas de red

De acuerdo con la configuración predeterminada, los pods pueden comunicarse entre sí de forma independiente en Kubernetes. Sin embargo, es una buena práctica implementar políticas de red para limitar la interacción de los pods. Esto puede evitar que cualquier amenaza se propague por el contenedor y por toda la aplicación.

Almacenamiento persistente

Debe tener una visibilidad adecuada de la configuración y el uso del almacenamiento persistente. Esto se debe a que este es el único vector persistente en una configuración de contenedor efímera.

Plano de control

Si administra los clústeres de Kubernetes usted mismo, es muy importante configurar el plano de control. Esto se debe a que algunos clústeres pueden tomar decisiones globales y, si un clúster está infectado, puede comprometer todo el ecosistema.

El mejor enfoque para mitigar estos y otros problemas de seguridad relacionados con la configuración es usar una combinación de esfuerzos manuales y automatizados para asegurarse de que la configuración se realice de tal manera que garantice la seguridad de Kubernetes y, en consecuencia, el software del que forman parte. de.

2. Vulnerabilidades

Se han encontrado y explotado varias vulnerabilidades diferentes en Kubernetes y otros contenedores en los últimos años.

Las explotaciones más comunes de vulnerabilidades incluyen:

  • Criptominería.
  • Instalación de malware.
  • Escalada de privilegios.
  • Acceso de anfitrión.

El enfoque efectivo para administrar la vulnerabilidad es algo que debe continuar durante el ciclo de vida del contenedor y debe incluir lo siguiente:

  • Identificar y resolver vulnerabilidades en imágenes, incluidas las del sistema operativo instalado.
  • Detectar y mitigar todas y cada una de las vulnerabilidades en las bibliotecas de tiempo de ejecución de los lenguajes de programación que está utilizando.
  • Tomar medidas para evitar que las imágenes con vulnerabilidades de riesgo lleguen al registro de contenedores accesible para producción.
  • Tomar medidas para contener las amenazas que tengan un riesgo de seguridad por encima de un cierto nivel.
  • Uso de controladores de admisión de terceros en clústeres de Kubernetes para evitar que se programen componentes de contenedores vulnerables.
3. Amenazas en tiempo de ejecución

Una vez que haya mitigado todos los problemas de seguridad de Kubernetes, la fase de tiempo de ejecución tiene su propio conjunto exclusivo de amenazas de seguridad.

Incluso si ha enfatizado la seguridad y minimizado los riesgos de todas las formas posibles, puede haber varias amenazas de los adversarios en tiempo de ejecución.

Aquí hay algunas cosas que puede hacer para mitigar estas amenazas:

Monitoreo de actividad en tiempo de ejecución:

Comience el proceso de monitoreo con la mayoría de las actividades del contenedor, las más relevantes para la seguridad. Esto incluye los gustos de la actividad del proceso, las comunicaciones de red dentro y entre los servicios en contenedores y la comunicación hacia y desde los servidores y clientes externos.

Aproveche los datos declarativos

Utilice la información de tiempo de compilación e implementación para evaluar la diferencia entre la actividad observada y la esperada para saber si hay alguna actividad sospechosa.

Mantenga la comunicación de red limitada

El tiempo de ejecución es el momento en el que puede ver la diferencia entre el tipo de tráfico de red permitido y el necesario para ejecutar el sistema. Esta es la oportunidad que se puede aprovechar para eliminar cualquier comunicación innecesaria que pueda representar una amenaza para la seguridad de Kubernetes.

Observe los procesos de cerca

Observar la aplicación por un lapso de tiempo para conocer todos los procesos que se ejecutan para el correcto funcionamiento de la aplicación. Haz una lista de todos los procesos imprescindibles y revisa la aplicación aleatoriamente para ver si se está ejecutando algún proceso que no sea el habitual.

4. Auditoría de cumplimiento fallida

Una de las principales cosas que garantizan la seguridad de Kubernetes y los contenedores es el cumplimiento. Si la seguridad no se enfatiza debidamente en el ciclo de vida de desarrollo de software, puede dar lugar a una auditoría de cumplimiento fallida.

Existen numerosos estándares de cumplimiento que se pueden usar para Kubernetes y la seguridad de los contenedores.

PCI-DSS, HIPAA y SOC 2 son estándares de cumplimiento específicos de la industria.

Uno de los principales errores cometidos en este sentido es no hacer que las auditorías de cumplimiento formen parte del SDLC desde el principio o solo considerarlas en tiempo de ejecución. Para asegurarse de que todo en el software sea compatible:

  • Haga que el cumplimiento forme parte del SDLC desde el principio.
  • Utilice los estándares de la industria para hacer que los componentes del software sean compatibles.