Resumen
La implementación de las prácticas recomendadas de seguridad de Kubernetes implica cuatro tareas: resolver los puntos vulnerables conocidos durante la etapa de diseño, volver a establecer las configuraciones con errores durante las etapas de diseño e implementación, hacer frente a las amenazas durante la ejecución y proteger toda la infraestructura de Kubernetes.
Esto es así debido a las respuestas que se obtuvieron en el último Informe sobre la seguridad de Kubernetes con respecto a los principales problemas. Se descubrió que más del 50 % de los encuestados están preocupados por los errores de configuración y los puntos vulnerables que se producen por la propia personalización de Kubernetes y la complejidad de la seguridad de los contenedores. Para superar estos desafíos y evitar las interrupciones en el desarrollo de las aplicaciones, las empresas deben poner a la seguridad de Kubernetes como una prioridad en todo el ciclo de vida.
¿Cuáles son los riesgos de seguridad de Kubernetes?
Contenedores en todas partes
Kubernetes es una plataforma open sourcepara la organización de los contenedores que permite gestionar cientos (y hasta miles) de contenedores de Linux® agrupados en clústeres de Kubernetes. Se basa en gran medida en las interfaces de programación de aplicaciones (API) que conectan los microservicios organizados en contenedores. Esta naturaleza distribuida dificulta el poder detectar rápidamente cuáles son los contenedores que tienen puntos vulnerables, que están mal configurados o que suponen un mayor riesgo para la empresa.
Para eso, necesitamos una solución que permita visualizar todas las implementaciones de contenedores e identificar los eventos graves en el sistema de cada uno de ellos.
KuppingerCole Report Leadership Compass: Container security
Obtenga información general y completa sobre el mercado de la seguridad de los contenedores y Kubernetes para evaluar las soluciones y seleccionar la más adecuada.
Mal uso de las imágenes y los registros
Las imágenes de contenedores (también conocidas como "imágenes de base") son plantillas fijas que permiten crear contenedores nuevos. Aquellas recién copiadas pueden modificarse para diferentes fines.
La solución consiste en establecer políticas que ayuden a determinar la manera en que las imágenes se diseñan y se almacenan en los registros. Las imágenes de base deben probarse, aprobarse y analizarse de forma periódica. Y, para poner en marcha contenedores en un entorno de Kubernetes, solo deben usarse aquellas que provengan de registros permitidos.
Comunicación sin restricciones entre los contenedores
Para que los contenedores y los pods funcionen correctamente, no solo deben poder comunicarse entre sí en las implementaciones, sino también con otros extremos internos y externos. Ante una falla de seguridad de un contenedor, la capacidad de los piratas informáticos para desplazarse por el entorno dependerá directamente del grado de comunicación que tenga ese contenedor con otros y con los pods. En un entorno de contenedores en expansión, segmentar las redes puede ser demasiado difícil debido a la complejidad que implica configurar esas políticas de forma manual.
La solución consiste en hacer un seguimiento del tráfico que existe entre los espacios de nombres, las implementaciones y los pods, y en determinar qué tanto de ese intercambio está permitido.
Políticas de red predeterminadas para los contenedores
De forma predeterminada, las implementaciones de Kubernetes no aplican políticas de redes a los pods (es decir, a las unidades más pequeñas de una aplicación de esta plataforma). Estas políticas de red se comportan como reglas de firewall. Controlan cómo se comunican los pods. Sin políticas de red, cualquier pod puede comunicarse con otro.
La solución implica definir políticas de red para que los pods se comuniquen únicamente con ciertos recursos, y organizar los secretos en volúmenes de solo lectura dentro de los contenedores, en lugar de trasladarlos como variables del entorno.
Cumplimiento normativo de los contenedores y de Kubernetes
Tal como ocurre con los demás entornos de TI, aquellos desarrollados en la nube y basados en Kubernetes no solo deben regirse por las prácticas recomendadas de seguridad, los estándares del sector, los índices de referencia y las políticas internas de la empresa, sino también demostrar que se adhieren a ellos. En ocasiones, esto significa adaptar las estrategias para que los entornos de Kubernetes cumplan con los controles que se diseñaron originalmente para las arquitecturas de aplicaciones tradicionales.
La solución consiste en supervisar si se cumple con lo establecido y en automatizar las auditorías.
Tiempo de ejecución
Kubernetes es una infraestructura que no se puede modificar. Por eso no es posible aplicar parches durante la ejecución de los contenedores; en cambio, deberá destruir aquellos que estén en funcionamiento y volver a crearlos. Los contenedores en riesgo pueden ejecutar procesos maliciosos, como la criptominería y el análisis de puertos.
La solución consiste en destruir los contenedores comprometidos o en ejecución, volver a diseñar una imagen sin riesgos e iniciarlos nuevamente.
Seguridad en la fase de diseño
La seguridad de Kubernetes comienza en la fase de diseño con la creación de imágenes de base sólidas y la adopción de procesos que ayuden a detectar los puntos vulnerables.
- Utilice imágenes de base con la menor cantidad de componentes posible. No utilice imágenes con shells o administradores de paquetes de los sistemas operativos, que podrían contener puntos vulnerables desconocidos, o quite los administradores de paquetes.
- Utilice fuentes confiables. Seleccione solo las imágenes de base que provengan de una fuente confiable y que se alojen en un registro con buena reputación.
- No agregue componentes innecesarios. Como regla general, las herramientas comunes pueden convertirse en riesgos de seguridad cuando se incluyen en imágenes.
- Utilice solo imágenes actualizadas. Actualice las versiones de los elementos.
- Utilice una herramienta de análisis de imágenes. Identifique los puntos vulnerables en las imágenes, desglosados por capa.
- Integre la seguridad en los canales de CI/CD.Automatice un aspecto repetible de la seguridad que interrumpa las compilaciones de la integración continua y genere alertas en caso de que haya puntos vulnerables graves que puedan corregirse.
- Etiquete los puntos vulnerables permanentes. Agregue a una lista de elementos permitidos todos los puntos vulnerables conocidos que no puedan corregirse, que no sean graves o que no necesiten solucionarse de inmediato.
- Implemente un sistema de protección integral. Estandarice la verificación de políticas y los flujos de trabajo de resolución de problemas para detectar y actualizar las imágenes que contengan puntos vulnerables.
Seguridad en la fase de implementación
Configure la seguridad de la infraestructura de Kubernetes antes de que se implementen las cargas de trabajo. Para hacerlo, debe conocer en profundidad el proceso de implementación: qué implementará (imágenes, elementos, pods), dónde lo hará (clústeres, espacios de nombres y nodos), de qué manera (privilegios, políticas de comunicación, seguridad aplicada), a qué tendrá acceso (secretos, volúmenes) y los estándares de cumplimiento.
- Use espacios de nombres. Si separa las cargas de trabajo en espacios de nombres, podrá evitar los ataques y limitar el impacto de los errores o de las acciones dañinas de los usuarios autorizados.
- Aplique políticas de red. Kubernetes permite que todos los pods se comuniquen entre sí de manera predeterminada; sin embargo, las políticas de segmentación de las redes y los plugins que controlan el ingreso y egreso del tráfico de la aplicación pueden anular ese ajuste.
- Restrinja los permisos a los secretos. Solo cargue los secretos que requieran las implementaciones.
- Evalúe los privilegios de los contenedores. Proporcione únicamente las funciones, los roles y los privilegios que permitan que el contenedor lleve a cabo sus tareas.
- Evalúe la procedencia de la imagen. Utilice imágenes de registros conocidos.
- Analice las implementaciones. Aplique políticas basadas en los resultados de los análisis.
- Use etiquetas y anotaciones. Coloque etiquetas o anotaciones en las implementaciones con la información de contacto del equipo responsable de una aplicación en contenedores, para agilizar el proceso de evaluación.
- Habilite el control de acceso basado en funciones (RBAC).El RBAC gestiona las autorizaciones de las cuentas de servicios y de los usuarios para acceder al servidor de la API de Kubernetes de un clúster.
Seguridad en la fase de ejecución
Los incidentes de seguridad no son tan frecuentes cuando se aplican las prácticas recomendadas de Kubernetes durante las fases de diseño e implementación; sin embargo, se necesita una supervisión permanente de los procesos y las comunicaciones de la red para identificar las amenazas en esta fase y responder a ellas.
- Utilice la información contextual. A fin de detectar instancias sospechosas, utilice la información de las etapas de diseño e implementación en Kubernetes para evaluar las diferencias entre las actividades observadas y las esperadas durante el tiempo de ejecución.
- Analice las implementaciones en ejecución. Supervise las implementaciones en ejecución para detectar los mismos puntos vulnerables que se encontraron recientemente en las imágenes de contenedores.
- Emplee controles integrados. Configure el contexto de seguridad de los pods para limitar sus funciones.
- Supervise el tráfico de red. A fin de identificar comunicaciones inesperadas, observe el tráfico de red activo y compárelo con el que permiten las políticas de red de Kubernetes.
- Use listas de elementos permitidos. Identifique los procesos que tienen lugar durante la ejecución habitual de la aplicación para crear una lista de elementos permitidos.
- Compare la actividad del tiempo de ejecución en pods implementados de manera similar. Investigue aquellas réplicas que muestren variaciones significativas.
- Disminuya al máximo la capacidad de los pods sospechosos. Use los controles de Kubernetes para lidiar con los fallos de seguridad; para ello, ordénele automáticamente a la plataforma que disminuya al máximo la capacidad de los pods sospechosos, o que destruya las instancias y las reinicie.
La seguridad de la infraestructura de Kubernetes
La seguridad de Kubernetes no solo abarca las imágenes y las cargas de trabajo. También incluye toda la infraestructura de Kubernetes: los clústeres, los nodos, el motor de los contenedores e incluso las nubes.
- Actualice Kubernetes. Actualice su distribución de Kubernetes para aplicar parches de seguridad e instalar nuevas herramientas de protección.
- Proteja el servidor de la API de Kubernetes.El servidor de la API de Kubernetes es la puerta de enlace al panel de control. Desactive el acceso anónimo o sin autenticación y use el cifrado TLS para las conexiones entre los kubelets y el servidor de la API. También se debe activar el registro de las auditorías para supervisar las llamadas a la API poco comunes.
- Proteja el etcd. El etcd es un tipo de almacenamiento de clave-valor que Kubernetes utiliza para acceder a los datos. Proteja el kubelet para reducir la superficie de ataque. Para deshabilitar el acceso anónimo al kubelet, utilice el indicador --anonymous-auth=false para iniciarlo y el controlador de admisión NodeRestriction para limitar los recursos que este puede consultar.
Seguridad de la nube
Sin importar el tipo de nube (pública, privada, híbrida o multicloud) en que se alojen los contenedores o se ejecute Kubernetes, quien la utilice (y no quien la proporcione) será permanentemente responsable de proteger la carga de trabajo de Kubernetes, que incluye:
- Imágenes de contenedores: fuentes, contenido y puntos vulnerables
- Implementaciones: servicios de red, almacenamiento y privilegios
- Gestión de la configuración: funciones, grupos, enlaces de funciones para establecer los permisos de acceso y las cuentas de servicios
- Aplicaciones: gestión de secretos de Kubernetes, etiquetas y anotaciones
- Segmentación de la red: políticas de red en el clúster de Kubernetes
- Tiempo de ejecución: detección de amenazas y respuesta ante incidentes
Seguridad operativa de Kubernetes
El uso de los contenedores y Kubernetes no modifica sus objetivos de seguridad: reducir al máximo los puntos vulnerables y los riesgos.
- Integre las prácticas recomendadas de la seguridad al ciclo de vida de los contenedores desde el inicio.La seguridad de Kubernetes debe permitir que los equipos de DevOps y los desarrolladores diseñen e implementen las aplicaciones que estén listas para la producción con tranquilidad.
- Use los controles de seguridad de Kubernetes.De esta forma, evitará que los mecanismos de seguridad entren en conflicto con la herramienta encargada de organizar los sistemas.
- Permita que Kubernetes dé prioridad a la corrección de errores.
Red Hat puede ayudarlo
Para proteger las aplicaciones desarrolladas en la nube y la infraestructura subyacente, las empresas deben realizar cambios significativos en la forma en que abordan la seguridad: deben aplicar los controles en una fase más temprana del proceso de desarrollo de las aplicaciones, utilizar controles integrados para aplicar políticas que eviten problemas operativos y de capacidad de ajuste, y seguir el ritmo cada vez más rápido de las planificaciones de lanzamiento.
Red Hat® Advanced Cluster Security (ACS) for Kubernetes es una plataforma de seguridad desarrollada en Kubernetes, con la cual las empresas pueden diseñar aplicaciones en la nube e implementarlas y ejecutarlas de forma más segura en todas partes. Permite mejorar la seguridad del proceso de diseño de las aplicaciones, proteger la plataforma y las configuraciones, detectar los problemas con los tiempos de ejecución y solucionarlos.