Cómo asegurar sus implementaciones de Kubernetes



A medida que más empresas cambian su application a una arquitectura basada en microservicios y organizan sus aplicaciones en contenedores en Kubernetes, los controles de seguridad distribuidos se vuelven imprescindibles.

En un momento en que casi todas las empresas son, hasta cierto punto, una empresa de software, la transformación digital y la adopción de la nube no son solo estratégicas sino críticas para el éxito empresarial. Ya sea que las empresas nazcan en la nube o simplemente estén ingresando, es importante saber que las prácticas de seguridad tradicionales de la segmentación de red basada en firewall ya no son confiables en esta nueva frontera.

De hecho, la efectividad de los firewalls tradicionales se minimiza fundamentalmente por la escala y la elasticidad de la infraestructura de la nube, las redes virtuales privadas de la nube y las aplicaciones nativas de la nube, y las muchas partes interesadas que construyen, envían y operan esas aplicaciones. A medida que más empresas cambian su software package a una arquitectura basada en microservicios y organizan sus aplicaciones en contenedores en Kubernetes, los controles de seguridad distribuidos se vuelven imprescindibles.

En entornos de nube, y en Kubernetes específicamente, el modelo de amenaza y riesgo debe tener en cuenta las amenazas internas ya presentes dentro de uno de los componentes en ejecución. Los ejemplos incluyen una biblioteca de computer software maliciosa importada para su uso o una imagen de contenedor proveniente de una fuente no confiable.

Kubernetes tiene sólidos controles de seguridad nativos en comparación con las tecnologías nativas de plataforma abierta o incluso con plataformas patentadas basadas en máquinas virtuales. Kubernetes ofrece maquinaria de autenticación flexible, handle de acceso maduro basado en roles (RBAC) para la autorización, controles detallados sobre cómo se ejecutan los procesos, validación de recursos antes de admitirlos en un clúster de Kubernetes y pod de adaptación (contenedores colocados) segmentación de red este-oeste .

La implementación de la segmentación de crimson de microservicios de grano fino tiene un alto impacto en la medida en que lower y limita la superficie de ataque, limita la capacidad de pivotar de un componente a otro, la exfiltración de datos y otras formas de movimientos laterales.

Gestión de microsegmentación
Sin lugar a dudas, uno de los mayores desafíos con la microsegmentación es administrarlo con el tiempo. A partir de Kubernetes v1.8, las siguientes API de políticas de crimson nativas están generalmente disponibles:

• De manera predeterminada, las cargas de trabajo (pods) de Kubernetes no están aisladas los pods aceptan tráfico de cualquier fuente, y los pods pueden enviar tráfico a cualquier destino.

• La semántica de la política de pink de Kubernetes solo permite la segmentación este-oeste (interna del clúster), así como también especifica los bloques de enrutamiento entre dominios sin clase (CIDR). No admite nombres de dominio (o comodines de dominio) en la sintaxis de la política.

• Kubernetes NetworkPolicy captura la intención de la aplicación al especificar cómo los grupos de vainas pueden comunicarse entre sí y con otros puntos finales de la purple (CIDR).

• Uso de recursos de Kubernetes NetworkPolicy etiquetas para seleccionar pods y definir reglas que especifiquen qué tráfico está permitido a los pods seleccionados.

• El complemento Kubernetes Container Community Interface (CNI) debe admitir las API de políticas de purple para permitir la aplicación de políticas de purple. Algunas opciones populares de complementos incluyen Calicó y Franela, así como el complemento CNI del proveedor de la nube que aprovecha la purple de nube privada digital (VPC) del proveedor de servicios en la nube. Todos los complementos recomendados se pueden encontrar en Documentación de Kubernetes.

Inmediatamente, una política very simple que puede configurar para cambiar el paradigma de abrir por defecto y cerrar sus pods al tráfico es la política de negar todo, también conocido como lista negra. Poner en la lista negra un pod niega todo el tráfico hacia y desde otros pods. La mejor práctica es poner en una lista negra todos sus pods, luego establecer políticas de purple adicionales para permitir explícitamente la comunicación entre los pods según sea necesario, también conocido como lista blanca. Puedes hacer esto con un política predeterminada de denegar todo, que cambia el valor predeterminado del espacio de nombres para denegar todo el tráfico no incluido en la lista blanca.

Las configuraciones de seguridad de red adicionales que controlan qué fuentes de tráfico (bloques de pink) pueden ingresar al clúster mediante equilibradores de carga y proxy de capa 7 (Kubernetes Ingress) están disponibles en forma de anotaciones de recursos especiales. Esta configuración viene en forma de etiquetas especiales que son consumidas por un controlador de nube de Kubernetes, una capa de pegamento entre Kubernetes y la plataforma subyacente en la que se ejecuta el clúster. El controlador de la nube programa la configuración de seguridad de crimson VPC subyacente, así como los equilibradores de carga de acuerdo con esas anotaciones especiales.

No es suficiente
Si bien esto parece una buena cantidad de controles de seguridad de pink, los controles nativos de Kubernetes no son suficientes:

• Las cargas de trabajo (pods) que se ejecutan en la red host no están sujetas a las políticas de purple configuradas en la purple host.

• Las políticas de Kubernetes son aditivas y se adhieren a un enfoque de lista blanca. Carece de una semántica muy básica de las acciones de caída en las reglas de política de purple. Las extensiones de la lista blanca se pueden lograr con herramientas de terceros y proyectos de código abierto como Calico.

• Las cargas de trabajo que requieren acceso a recursos fuera del clúster se denotan mediante puntos finales de dominio (como bases de datos o servicios SaaS como Slack) que no se pueden segmentar en sus rutas de salida.

• Los controles nativos de Kubernetes no abordan los controles de acceso basados ​​en la identidad y requieren proxies basados ​​en sidecar para establecer dichos controles.

• La infraestructura de Kubernetes no expone estadísticas o registros de violación de políticas, lo que significa que la sustancia en la que se basan los sistemas de detección y prevención de intrusiones está ausente.

• El sistema de nombres de dominio (DNS), el descubrimiento de servicio subyacente de Kubernetes, está abierto de forma predeterminada para cada pod en el clúster. Esto significa que los métodos de exfiltración como el túnel DNS y el abuso de las debilidades inherentes en el protocolo DNS requieren un análisis de seguridad de red especializado para detectar anomalías y amenazas.

Toma el control de tu propio destino (de seguridad)
Kubernetes todavía es relativamente nuevo y puede tener una curva de aprendizaje empinada. En última instancia, comprender que Kubernetes está abierto de forma predeterminada es el paso más importante que puede tomar para proteger sus aplicaciones nativas de la nube y evitar el tráfico no deseado. Con este conocimiento, puede cambiar el valor predeterminado y tomar el management del tráfico que fluye a través de su aplicación.

Contenido relacionado:

Gadi Naor aporta 15 años de experiencia en el liderazgo del desarrollo de productos de ciberseguridad a su rol como CTO y cofundador de Alcide. Gadi ha combinado su gestión y experiencia tecnológica en varios puestos. Desde 2001-2008, trabajó en CheckPoint, donde … Ver biografía completa

Más thoughts





Enlace a la noticia first