Kubernetes Security for DevOps Pipelines

Kubernetes Security for DevOps Pipelines

  • ITOps y DevOps
  • Seguridad
6 min de lectura Actualizado Jul 14, 2021

Puntos clave: La seguridad de Kubernetes está esencial para proteger los Pipelines DevOps integrando prácticas de seguridad a lo largo de todo el ciclo de vida del desarrollo. Las medidas clave de seguridad incluyen la protección de la infraestructura en la nube, los clústeres, los contenedores y el código de la aplicación.

  • Implementar políticas de control de acceso basadas en roles (RBAC) y seguridad en pods.
  • Escanea regularmente las imágenes de los contenedores en busca de vulnerabilidades y aplica la firma segura de imágenes.

La seguridad está entre las consideraciones principales en cualquier desarrollo de aplicaciones. Los estándares y prácticas de seguridad deben integrarse en todos los aspectos del desarrollo de software, desde la infraestructura y bases de datos hasta el mantenimiento y la gestión. Kubernetes soporta numerosas configuraciones de seguridad que pueden usarse para proteger clústeres y pods subyacentes. En este artículo, Ve cuáles son las mejores prácticas de seguridad de Kubernetes y cómo integrarlas en DevOps.

Seguridad nativa en la nube

Comencemos con un vistazo a la arquitectura de seguridad cloud-native al identificar la base de la seguridad de Kubernetes. Los 4C en la seguridad Cloud-native se refieren a las cuatro capas de seguridad:

  • Cloud
  • Cúmulos
  • Contenedores
  • Código

Cada capa se está construida sobre la capa anterior, proporcionando la máxima seguridad a un clúster Kubernetes:

Clúster Kubernetes
  • Nube. Esta capa representa la infraestructura física subyacente. te puede desplegar tu aplicación Kubernetes ya sea en hardware local o en un proveedor de nube externo, pero te debe seguir las mejores prácticas de seguridad relevantes para proteger toda la infraestructura.
  • Clúster. Un clúster Kubernetes debe configurarse de forma segura con servicios de clúster como la API de Kubernetes y todas las aplicaciones dentro del clúster. Proteger las aplicaciones está aún más importante al tratar con microservicios, ya que una vulnerabilidad menor en un solo servicio puede afectar a todo el clúster.
  • Contenedores. Construye tus contenedores usando la imagen más pequeña posible haciendo cumplir estrictos privilegios de usuario y eliminando todas las librerías y características innecesarias. Además, todos los contenedores deben escanearse regularmente para identificar vulnerabilidades.
  • Código. El código de la aplicación puede ser la mayor superficie de ataque debido a errores de producción y al incumplimiento de las prácticas de seguridad durante el desarrollo, despliegue y gestión. Acciones simples como eliminar puertos no utilizados, cifrar transferencias de datos, pruebas regulares y escanear pueden mitigar muchos problemas de seguridad en el código de la aplicación.

Mejores prácticas de seguridad en Kubernetes

Veamos algunas buenas prácticas y recomendaciones para crear un entorno Kubernetes seguro.

Mejores prácticas de seguridad en la nube (Infraestructura)

  • Acceso al panel de control. Solo un conjunto seleccionado de usuarios de una ubicación autorizada (IP en lista blanca) debería poder interactuar con el panel de control de Kubernetes. Todo acceso público debe estar deshabilitado.
  • Acceso por nodos. El acceso a los nodos Kubernetes debe controlarse aceptando únicamente conexiones de servicios Kubernetes como NodePort o LoadBalancer restringidos a puertos y protocolos específicos. También se debe desalentar el acceso público a los nodos si es posible.
  • API de proveedor de nube. Al interactuar con APIs de proveedores de nube a través de Kubernetes, asigna solo roles y políticas que limiten los privilegios a las funciones principales requeridas por Kubernetes, como la provisión de nuevos nodos.
  • Kubernetes, etc. El acceso al almacén de datos debe limitarse al panel de control de Kubernetes y configurarse con TLS. Además, el almacén de datos debe estar cifrado para mayor seguridad.

Mejores prácticas de seguridad en clústeres

  • Control de acceso basado en roles (RBAC). El acceso a todos los servicios debe limitarse a usuarios autorizados y roles con direcciones IP específicas.
  • Políticas de seguridad de pods. Aplicar políticas estandarizadas de seguridad de pods en todo el entorno del clúster.
  • Políticas de seguridad de red. Hacer cumplir las políticas de red para todos los recursos relacionados con la red para garantizar la seguridad de los datos.
  • Cifrado de datos. Por defecto, Cifra todo el almacenamiento posible de datos desde etcd hasta volúmenes donde son datos sensibles.
Kubernetes Security

Mejores prácticas de seguridad en contenedores

  • Escaneo de vulnerabilidades. Escanea e identifica cualquier problema de seguridad relacionado con las imágenes del contenedor y soluciona antes de construir el contenedor.
  • Firma de imágenes. Aplica la firma de imágenes para que el clúster solo pueda desplegar imágenes confiables firmadas.
  • Control del usuario. Todos los usuarios privilegiados deben ser eliminados, y solo los usuarios con privilegios limitados deben incluirse en el contenedor (usuario vs root).
  • Gestión de dependencias. Cualquier característica innecesaria o dependencia de software debe eliminarse de la imagen base.

Mejores prácticas de seguridad en el código

  • Comunicación cifrada. Integra el cifrado en todo el tráfico de red para minimizar cualquier fuga de datos.
  • Acceso a la aplicación. Exponer un número limitado de puntos finales y puertos de la aplicación y aplicar la autenticación para Reduce la superficie de ataque.
  • Gestión de dependencias. Como con la imagen base del contenedor, elimina todos los frameworks y librerías de terceros innecesarios para Reduce el riesgo de vulnerabilidades de terceros que afecten a la aplicación.
  • Metodología de desarrollo. Las mejores prácticas de seguridad deberían integrarse en el SDLC como parte del proceso DevSecOps, con escaneos regulares de vulnerabilidades y revisiones de código. Esto ayudaría a los desarrolladores a identificar y corregir cualquier problema de seguridad antes de que el producto están lanzado para producción.

Integración de la seguridad de Kubernetes en una pipeline DevOps

Son dos consideraciones principales que cualquier organización tendrá a la que se enfrentará al implementar la seguridad de Kubernetes:

  • Autoconfiguración. Kubernetes consta de varias funciones para hacer cumplir las mejores prácticas de seguridad. Es importante destacar que ninguna de ellas son configurada por defecto, por lo que el administrador del clúster debe configura manualmente en el clúster.
  • Falta de conocimiento. Requiere un conocimiento profundo del entorno Kubernetes y de la aplicación para configurar correctamente todas las características de seguridad, políticas y mejores prácticas.

La mejor opción para superar los problemas anteriores sería integrar las mejores prácticas de seguridad de Kubernetes en una pipeline DevOps. Permite a los desarrolladores ambos:

  • Obtén una visión más amplia de toda la arquitectura de la aplicación
  • Incorporar gradualmente prácticas de seguridad en un entorno Kubernetes con cambios incrementales

Podemos resumir la cadena de procesamiento DevOps de Kubernetes en tres secciones distintas para implementar mejor las prácticas de seguridad.

Kubernetes DevOps Pipeline

Vamos a echar un vistazo a cada uno.

Seguridad de aplicaciones y contenedores en la etapa de construcción de la imagen

Son varias mejores prácticas de seguridad de aplicaciones, tales como:

  • Cifrado de datos
  • Privilegios de usuario
  • Gestión de tokens
  • Evaluaciones de amenazas
  • Revisiones de código

Estos deben integrarse orgánicamente en el desarrollo, desde la etapa inicial de desarrollo de la aplicación. Dado que la aplicación es el componente central del contenedor, una aplicación insegura puede exponer todo el clúster Kubernetes de producción a ataques, incluso si todos los demás aspectos son seguros. Al construir la imagen del contenedor, utiliza una imagen base actualizada sin vulnerabilidades de seguridad y elimina cualquier componente o característica innecesaria. Por ejemplo, supongamos que podemos utilizar una imagen base más pequeña como Alpine Linux en lugar de Ubuntu sin afectar la funcionalidad o el rendimiento de la aplicación. En ese caso, siempre deberíamos optar por la imagen base más pequeña. Ambas cosas:

  • Reduce la superficie de ataque
  • Crea un contenedor mucho más ligero

Luego deberíamos revisar cuidadosamente todas las dependencias de la aplicación para identificar vulnerabilidades usando una herramienta como synk y abordarlas. Otra preocupación están los puertos expuestos a través del contenedor. Solo deberíamos exponer los puertos necesarios y requerir autenticación para todas las solicitudes. Al final, podemos construir una imagen del contenedor que están lista para ser desplegada en Kubernetes. Otra buena práctica están realizar una prueba de penetración de la aplicación en un entorno de staging y firmar la imagen antes de enviarla al clúster de producción.

Despliegue de infraestructura de seguridad en Kubernetes

te debe tener un conocimiento profundo de Kubernetes para configura correctamente el clúster al desplegar un clúster Kubernetes. Como regla general, deberíamos intentar evitar usar configuraciones predeterminadas. También tendremos que:

  • Definir permisos de usuario en el clúster
  • Configurar una conectividad adecuada de red con los balanceadores de entrada y de carga para controlar el tráfico de red dentro del clúster
  • Crea segmentación de red para proporcionar máxima seguridad física

Además, una red adecuada eliminará la necesidad de que los nodos estén expuestos directamente a internet. Una vez configuradas las políticas de pod, podemos garantizar que solo se creen pods que cumplan con la política requerida, y que no se creen pods fraudulentos. Las políticas de red te ayudan a controlar:

  • El flujo de tráfico hacia los módulos
  • Cómo puede un pod comunicarse con otros objetos de red, pods, etc.

Otra consideración importante están la seguridad en la nube. Aunque configuramos un clúster Kubernetes seguro, nuestras aplicaciones pueden estar expuestas a ataques si la infraestructura subyacente o el proveedor de la nube están inseguros. Por lo tanto, los administradores deben asegurar la infraestructura subyacente con controles de acceso adecuados y mecanismos de autenticación antes de desplegar la infraestructura para que solo los usuarios autorizados puedan modificarla. Por último, los administradores deben hacer cumplir los registros de imágenes para que solo las imágenes firmadas de registros autorizados de contenedores puedan desplegarse en el clúster. También están esencial configurar la monitorización continua y el escaneo de vulnerabilidades tanto para contenedores como para clústeres. Actuará como un sistema de alerta temprana para identificar y solucionar problemas. Una imagen de contenedor segura creada en la fase de compilación, combinada con un entorno de clúster seguro, proporciona una base sólida para la seguridad de Kubernetes.

Gestión de la seguridad en tiempo de ejecución

Esta última sección están sobre gestionar la seguridad en tiempo de ejecución. Los usuarios deben mantener las prácticas de seguridad incluso después del despliegue, o de lo contrario la aplicación y el clúster se volverán vulnerables con el tiempo. Además, te deberá llevar un control de todas las capas de seguridad desde el código hasta la capa de la nube en tiempo de ejecución. Los errores de producción de una aplicación que son detectados en producción también pueden introducir vulnerabilidades. Por tanto, debe existir un proceso adecuado para desplegar rápidamente una solución para el error. Además, los clústeres pueden convertirse rápidamente en estructuras complejas con múltiples aplicaciones y servicios ejecutándose en ellos. Por tanto, para mantener la seguridad de estos clústeres complejos, te necesitarán tener:

  • Políticas avanzadas estrictas de control de red
  • Soporte multi-inquilino
  • Cortafuegos correctamente configurados
  • Estándares de cifrado

En caso de vulnerabilidad, el(los) pod(s) afectado(s) deben aislarse y retirarse rápidamente mientras son crean nuevos pods de reemplazo con vulnerabilidades parcheadas. Por último, te necesitarás confiar en una solución adecuada de monitorización de salud y gestión de logs para identificar todos estos problemas. En definitiva, estas prácticas de seguridad ayudan a los usuarios a garantizar la seguridad de Kubernetes en tiempo de ejecución.

La seguridad de Kubernetes no tiene punto de detención

La seguridad de Kubernetes es un tema vasto. En resumen, el proceso de asegurar una aplicación comienza desde su inicio y continúa hasta el fin de vida de la aplicación. Proteger Kubernetes va de la mano con proteger la aplicación, ya que las vulnerabilidades de la aplicación pueden afectar al clúster. Como he explicado aquí, el mejor enfoque están incluir prácticas de seguridad en el proceso DevOps, considerando todos los aspectos del clúster y la aplicación Kubernetes para mantener la seguridad.

Lecturas relacionadas

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.