Descripción general del aislamiento de nodos

En este documento se explican las ventajas y las limitaciones del aislamiento de nodos en un clúster de Kubernetes con air gap de Google Distributed Cloud (GDC). El aislamiento de nodos con grupos de nodos dedicados mejora la seguridad del clúster, ya que te permite controlar con precisión dónde se ejecutan los pods específicos dentro del clúster.

El aislamiento de cargas de trabajo ofrece algunas ventajas, como las siguientes:

  • Se reduce el riesgo de ataques de apropiación de privilegios en tu clúster de Kubernetes.
  • Más control sobre los pods que requieren recursos adicionales.

En estos casos, te recomendamos que aísles tus cargas de trabajo de contenedores en grupos de nodos específicos para tener más control y optimización. No olvides tener en cuenta las limitaciones para tomar una decisión fundamentada sobre el coste de mantenimiento adicional que requiere el aislamiento de nodos.

Este documento está dirigido a usuarios como los administradores de TI del grupo de administradores de la plataforma, que se encargan de gestionar los grupos de nodos de un clúster de Kubernetes, y los desarrolladores de aplicaciones del grupo de operadores de aplicaciones, que se encargan de gestionar las cargas de trabajo de los contenedores. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.

¿Por qué debería aislar mis cargas de trabajo?

Aunque no es obligatorio, dedicar grupos de nodos a cargas de trabajo de contenedores específicas puede evitar posibles problemas. Sin embargo, este enfoque requiere más gestión y, a menudo, no es esencial.

Los clústeres de Kubernetes usan cargas de trabajo privilegiadas gestionadas por GDC para habilitar funciones y características específicas del clúster, como la recogida de métricas. Estas cargas de trabajo reciben permisos especiales para ejecutarse correctamente en el clúster.

Las cargas de trabajo que despliegues en tus nodos pueden verse comprometidas por una entidad maliciosa. Si ejecutas estas cargas de trabajo junto con cargas de trabajo privilegiadas gestionadas por GDC, un atacante que salga de un contenedor vulnerado puede usar las credenciales de la carga de trabajo privilegiada del nodo para elevar los privilegios en tu clúster.

Los grupos de nodos dedicados también son útiles cuando debes programar pods que requieren más recursos que otros, como más memoria o más espacio en disco local.

Puede usar los siguientes mecanismos para programar sus cargas de trabajo en un grupo de nodos dedicado:

  • Intolerancias de nodos: informa a tu clúster de Kubernetes para que no programe cargas de trabajo en nodos específicos sin la tolerancia correspondiente.
  • Afinidad de nodos: indica a tu clúster de Kubernetes que programe pods específicos en nodos dedicados.

El aislamiento de nodos es un mecanismo avanzado de defensa en profundidad que solo debes usar junto con otras funciones de aislamiento, como los contenedores y las cuentas de servicio con el número mínimo de privilegios necesarios. Es posible que el aislamiento de nodos no cubra todas las rutas de escalada y nunca se debe usar como límite de seguridad principal.

Cómo funciona el aislamiento de nodos

Para implementar el aislamiento de nodos en tus cargas de trabajo, debes hacer lo siguiente:

  1. Aplica un taint y una etiqueta a un grupo de nodos para tus cargas de trabajo.

  2. Actualiza tus cargas de trabajo con la regla de tolerancia y afinidad de nodo correspondiente.

En esta guía se presupone que empiezas con un grupo de nodos en tu clúster. No es obligatorio usar la afinidad de nodos junto con los taints de nodos, pero te recomendamos que lo hagas porque te permite tener un mayor control sobre la programación.

Recomendaciones y prácticas recomendadas

Después de configurar el aislamiento de nodos, te recomendamos que hagas lo siguiente:

  • Cuando crees grupos de nodos, evita que la mayoría de las cargas de trabajo gestionadas por GDC se ejecuten en esos nodos añadiendo tu propio taint a esos grupos de nodos.

  • Cada vez que implementes nuevas cargas de trabajo en tu clúster, como cuando instales herramientas de terceros, audita los permisos que requieren los pods. Cuando sea posible, evite desplegar cargas de trabajo que usen permisos elevados en nodos compartidos.

Limitaciones

Se aplican las siguientes limitaciones a los pods que se ejecutan en un grupo de nodos aislado:

  • Los atacantes pueden seguir iniciando ataques de denegación de servicio (DoS) desde el nodo vulnerado.

  • Si implementas recursos DaemonSet que tienen permisos elevados y pueden tolerar cualquier taint, esos pods podrían ser una vía para la escalada de privilegios desde un nodo vulnerado.

  • Los nodos vulnerados pueden seguir leyendo muchos recursos, incluidos todos los pods y los espacios de nombres del clúster.

  • Los nodos vulnerados pueden acceder a los secretos y las credenciales que usan todos los pods que se ejecutan en ese nodo.

  • Los nodos vulnerados pueden seguir eludiendo las políticas de red de salida.

  • Usar un grupo de nodos independiente para aislar tus cargas de trabajo puede afectar a la eficiencia de los costes, al autoescalado y al uso de los recursos.

  • Algunas cargas de trabajo gestionadas por GDC deben ejecutarse en todos los nodos de tu clúster y están configuradas para tolerar todos los taints.

Siguientes pasos