Ilustración de Kubernetes
Secciones

Prácticas recomendadas de seguridad de Kubernetes

Copiar URL

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.

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.

Obtenga más información sobre la manera en la que Red Hat permite la comunicación segura entre contenedores

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.

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.

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.

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 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

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.

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. 

Artículos relacionados

ARTÍCULO

Diferencias entre los contenedores y las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema.

ARTÍCULO

¿Qué es la organización de los contenedores?

La organización en contenedores automatiza la implementación, la gestión, la escalabilidad y la conexión en red de los contenedores.

ARTÍCULO

¿Qué es un contenedor de Linux?

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen.

Más información sobre los contenedores

Productos

Plataforma de aplicaciones empresariales que ofrece servicios probados para lanzar aplicaciones al mercado en la infraestructura que usted escoja.

Contenido adicional

Ebook

Los seis aspectos más importantes a tener en cuenta a la hora de seleccionar una plataforma de Kubernetes

PODCAST

Command Line Heroes Temporada 1, Episodio 5:

El Derby de los Containers

Capacitación

Curso de capacitación gratuito

Running Containers with Red Hat Technical Overview

Curso de capacitación gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Curso de capacitación gratuito

Developing Cloud-Native Applications with Microservices Architectures