Descripción general del aislamiento de nodos

En este documento, se explican los beneficios y las limitaciones del aislamiento de nodos en un clúster de Kubernetes aislado de Google Distributed Cloud (GDC). El aislamiento de nodos con grupos de nodos dedicados mejora la seguridad del clúster, ya que te brinda un control preciso sobre dónde se ejecutan los Pods específicos dentro del clúster.

El aislamiento de la carga de trabajo proporciona algunos beneficios, como los siguientes:

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

En estos casos, considera aislar tus cargas de trabajo de contenedores en grupos de nodos dedicados para tener más control y optimización. Asegúrate de tener en cuenta las limitaciones para tomar una decisión fundamentada sobre el costo de mantenimiento adicional que requiere el aislamiento de nodos.

Este documento está dirigido a públicos como los administradores de TI dentro del grupo de administradores de la plataforma que son responsables de administrar los grupos de nodos de un clúster de Kubernetes, y los desarrolladores de aplicaciones dentro del grupo de operadores de aplicaciones que son responsables de administrar las cargas de trabajo de contenedores. Para obtener más información, consulta Audiences for GDC air-gapped documentation.

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

Si bien 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 administración y, a menudo, no es esencial.

Los clústeres de Kubernetes usan cargas de trabajo administradas por GDC con privilegios para habilitar funciones y características específicas del clúster, como la recopilación de métricas. Estas cargas de trabajo tienen permisos especiales para ejecutarse de forma correcta en el clúster.

Las cargas de trabajo que implementas en tus nodos pueden tener el potencial de verse comprometidas por una entidad maliciosa. Ejecutar estas cargas de trabajo junto con cargas de trabajo administradas por GDC significa que un atacante que sale de un contenedor vulnerado puede usar las credenciales de la carga de trabajo con privilegios en el nodo para escalar 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 el disco local.

Puedes usar los siguientes mecanismos para programar tus cargas de trabajo en un grupo de nodos dedicado:

  • Taints de nodos: Informan a tu clúster de Kubernetes que evite programar cargas de trabajo en nodos específicos sin una tolerancia correspondiente.
  • Afinidad de nodos: Informa a tu clúster de Kubernetes que programe Pods específicos en nodos dedicados.

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

Cómo funciona el aislamiento de nodos

A fin de implementar el aislamiento de nodos para las cargas de trabajo, debes hacer lo siguiente:

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

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

En esta guía, se da por sentado que comienzas con un grupo de nodos en el clúster. No es obligatorio usar la afinidad de nodos además de los taints de nodo, pero te lo recomendamos porque te beneficiarás de 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 nuevos, evita que la mayoría de las cargas de trabajo administradas por GDC se ejecuten en esos nodos; para ello, agrega tu propio taint a esos grupos.

  • Cuando implementes cargas de trabajo nuevas en el clúster, como cuando se instalan herramientas de terceros, audita los permisos que requieren los Pods. Cuando sea posible, evita implementar cargas de trabajo que usen permisos elevados en los nodos compartidos.

Limitaciones

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

  • Los atacantes aún pueden iniciar ataques de denegación del servicio (DoS) desde el nodo vulnerado.

  • Si implementas recursos DaemonSet que tienen permisos elevados y pueden tolerar cualquier taint, esos Pods pueden ser una ruta para la elevación de privilegios desde un nodo vulnerado.

  • Los nodos vulnerados aún pueden leer muchos recursos, incluidos todos los Pods y los espacios de nombres en el clúster.

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

  • Los nodos vulnerados aún pueden omitir las políticas de red de salida.

  • El uso de un grupo de nodos separado para aislar las cargas de trabajo puede afectar la rentabilidad, el ajuste de escala automático y el uso de recursos.

  • Algunas cargas de trabajo administradas por GDC deben ejecutarse en cada nodo del clúster y están configuradas para tolerar todos los taints.

¿Qué sigue?