Plano de seguridad de Anthos: Restringe el tráfico

En este documento, se describe cómo restringir el tráfico en los clústeres de Anthos. Se incluye una descripción general de cómo y por qué necesitas restringir el tráfico en los clústeres de Anthos y se describe los controles de Google Cloud que usas para esta tarea. El documento es parte de una serie de planos de seguridad que proporcionan orientación prescriptiva para trabajar con Anthos.

Este plano es relevante para los administradores de redes y seguridad que trabajan con Anthos. Para obtener más información sobre estos planos, consulta Planos de seguridad de Anthos: Preguntas frecuentes.

Introducción

Las aplicaciones en tus clústeres de Anthos deben intercambiar datos entre sí, con las cargas de trabajo en la nube o con entornos locales. Pueden hacerlo a través de opciones de conectividad privada o a través de Internet.

Permitir el tráfico solo desde y hacia aplicaciones específicas te ayuda a asegurarte de seguir el principio de privilegio mínimo. La implementación de restricciones de tráfico forma parte de una estrategia de defensa en profundidad. Para ciertas industrias y cargas de trabajo, se requiere mostrar que el tráfico está restringido y que los firewalls o mecanismos similares se implementan con fines de cumplimiento. Además, restringir el tráfico desde y hacia las aplicaciones también puede ser parte de tu estrategia de prevención de pérdida de datos.

En un entorno de Anthos, hay varias formas de restringir el tráfico desde y hacia las aplicaciones. Puedes implementar estas restricciones en paralelo o por sí mismas.

Para aplicar un enfoque de defensa en profundidad a fin de aplicar restricciones de tráfico, debes considerar lo siguiente:

  • Qué restricciones a nivel de clúster se requieren en el nivel del nodo que se pueden aplicar mediante el filtrado del tráfico en el nivel de la máquina virtual (VM). A fin de implementar estas restricciones, usa firewalls.
  • Qué tráfico debería restringirse entre las cargas de trabajo o los espacios de nombres en tu clúster. Debes implementar esta restricción mediante las políticas de red.
  • Si usas Anthos Service Mesh para controlar el tráfico dentro de la malla de servicios, qué políticas de autorización deben aplicarse al tráfico dentro y fuera de la malla de servicios. Debes implementar esta restricción mediante la implementación de puertas de enlace.

El contenido que aparece en el directorio de restricción de tráfico en el repositorio de GitHub asociado a este plano proporciona orientación sobre cómo implementar los siguientes enfoques comunes mediante políticas de red:

  • Deniega de forma predeterminada el tráfico del sistema, excepto el que sea necesario.
  • Restringe el acceso a Internet.
  • Restringe el acceso dentro del espacio de nombres kube-system solo al tráfico requerido por los pods en el espacio de nombres

En el siguiente diagrama, se muestran las diferentes capas en las que se aplican todos los controles de seguridad que se analizan en esta guía.

Relación de controles de seguridad que ayudan a restringir el tráfico entre elementos de un sistema local y uno basado en la nube

Puedes restringir el tráfico entre Pods en clústeres de GKE mediante las políticas de red. En el nivel de infraestructura de clúster, puedes restringir el tráfico mediante firewalls Si usas Anthos en Google Cloud, usas las reglas de firewall de la nube privada virtual (VPC). Anthos Config Management y el controlador de políticas de Anthos proporcionan un control adicional de la configuración del clúster en todos los clústeres de Anthos diferentes, sin importar el entorno.

Puedes controlar el tráfico en Anthos Service Mesh dentro de los clústeres o entre ellos mediante políticas de autorización. Si usas Anthos en Google Cloud, hay controles adicionales disponibles a través de políticas de la organización o políticas de firewall jerárquicas.

Información sobre los controles de seguridad que necesitas

Reglas de firewall de VPC

Restringe el tráfico entre máquinas virtuales

Las reglas de firewall de la nube privada virtual (VPC) determinan qué tráfico se permite o desde las VM de Compute Engine. Las reglas te permiten filtrar el tráfico con el nivel de detalle de la VM, según los atributos de la capa 4.

Las reglas de firewall de VPC son específicas de Anthos en Google Cloud. Si usas Anthos de forma local o en otro entorno de nube, en su lugar, usa la funcionalidad de firewall para ese entorno.

Cuando usas Anthos en Google Cloud, aplicas reglas a un grupo de destino de VM que se seleccionan mediante etiquetas de red mediante cuentas de servicio o especifican todas las instancias en la red. En estas reglas, debes elegir los protocolos y puertos que se permiten o rechazan, y a qué fuente (para reglas de entrada) o destino (para reglas de salida) a las que se aplican estas reglas. El origen o el destino se pueden seleccionar mediante etiquetas de red, cuentas de servicio o rangos de direcciones IP.

Las reglas de firewall están ordenadas, lo que significa que se evalúan en el orden que especifiques hasta que se aplique una regla. Si no se aplica ninguna regla, de forma predeterminada se rechaza el tráfico de entrada a una VM y se permite el tráfico de salida de una VM.

Las reglas de firewall de VPC también tienen estado. Esto significa que, si se permite un tráfico específico (una solicitud) hacia o desde una VM, también se permite el tráfico de retorno (una respuesta) mediante la misma conexión.

El uso de etiquetas de red para crear reglas es flexible. Sin embargo, te recomendamos que uses cuentas de servicio para las reglas de firewall. Usar cuentas de servicio proporciona un control más estricto sobre cómo se aplican las reglas de firewall porque hay un control de acceso más detallado sobre quién puede aplicar cuentas de servicio a las VM.

Políticas jerárquicas de firewall

Restricción del tráfico para toda la organización o para equipos individuales

Las políticas de firewall jerárquicas te permiten definir reglas de firewall de VPC a nivel de organización de Google Cloud y a nivel de carpeta de la jerarquía de recursos. Establecer políticas en estos niveles te permite controlar qué tráfico se permitirá o se rechazará siempre dentro de una organización, un equipo o un grupo de aplicaciones. Además de permitir o denegar acciones, las reglas de políticas de firewall jerárquicas te permiten delegar decisiones sobre patrones de tráfico específicos a carpetas de nivel inferior de la jerarquía de recursos o a reglas de firewall de VPC definidas en el nivel de proyecto.

Las políticas de firewall jerárquicas son específicas de Anthos en Google Cloud. Si usas Anthos de forma local o en otro entorno de nube, en su lugar, usa la funcionalidad de firewall para ese entorno.

Cuando usas Anthos en Google Cloud, los casos de uso típicos para las políticas de firewall jerárquicas son configurar políticas de firewall en toda la organización a fin de que realicen las siguientes acciones:

  • Inhabilitar el tráfico de toda la organización en rangos de direcciones IP específicos.
  • Inhabilitar el tráfico a Internet que no pasa por proxies seguros o puertas de enlace controlados por la organización.
  • Permite de forma explícita el tráfico de los sondeos que realiza el equipo de seguridad para descubrir vulnerabilidades a nivel de la aplicación.

Si organizas las cargas de trabajo por carpetas y configuras una política de seguridad en esas carpetas, las políticas de firewall jerárquicas te permitirán establecer restricciones de tráfico en toda la carpeta según la sensibilidad de las cargas de trabajo.

Espacios de nombres

Etiqueta recursos que deben usar las mismas políticas

Los espacios de nombres te permiten proporcionar un permiso para los recursos relacionados dentro de un clúster, por ejemplo, pods, servicios y controladores de replicación. Si usas espacios de nombres, puedes delegar la responsabilidad de administración de los recursos relacionados como una unidad. Por lo tanto, los espacios de nombres son una parte integral de la mayoría de los patrones de seguridad.

Los espacios de nombres son una función importante para el aislamiento del plano de control. Sin embargo, no proporcionan aislamiento de los nodos, del plano de datos ni de la red.

Un enfoque común es crear espacios de nombres para aplicaciones individuales. Por ejemplo, puedes crear el espacio de nombres myapp-frontend para el componente de IU de una aplicación.

Políticas de red

Aplica el flujo de tráfico de red dentro de los clústeres

Las políticas de red aplican los flujos de tráfico de red de capa 4 mediante el uso de reglas de firewall a nivel del pod. Las políticas de red tienen permisos en un espacio de nombres.

De forma predeterminada, incluso si una política de red está habilitada para ese espacio de nombres, el acceso a los pods en un clúster no está restringido. La aplicación se realiza cuando al menos un objeto NetworkPolicy selecciona un pod.

Una práctica recomendada es adoptar un enfoque de privilegios mínimos. Cuando implementes políticas de red, te recomendamos que crees una regla predeterminada para rechazar todo en el espacio de nombres que coincida con todos los pods. Esto hace que el espacio de nombres bloquee el acceso (es decir, actúa como un sistema de falla). A fin de permitir los flujos de tráfico de red, debes asegurarte de configurar de forma explícita las políticas de red para cada espacio de nombres.

En el siguiente diagrama, se muestra que, cuando se configuran políticas de red para cada espacio de nombres, puedes implementar políticas que administran el flujo de tráfico entre los espacios de nombres.

Usa políticas de red para administrar el flujo de tráfico entre espacios de nombres.

En el ejemplo, el tráfico puede fluir en ambas direcciones entre la aplicación con la etiqueta app:transactions y la aplicación con la etiqueta app:shopfront. Sin embargo, se permite que el tráfico solo fluya desde la aplicación con la etiqueta app:shopfront a la aplicación de registro. No se permite el tráfico desde la aplicación de registro a la aplicación de frontend.

Las políticas de red tienen estado. Esto significa que, si se permite el tráfico (una solicitud) en una dirección específica, también se permite tráfico de retorno (una respuesta) para la misma conexión de forma automática.

A fin de ver ejemplos de políticas de red que muestran enfoques de implementación típicos para Anthos Config Management, consulta el directorio de restricción de tráfico en el repositorio del plano de seguridad en GitHub.

Anthos Config Management

Aplica parámetros de configuración a tus clústeres de Anthos

Cuando administras los clústeres de Anthos, se recomienda usar Anthos Config Management, que mantiene tus clústeres inscritos sincronizados con los archivos de configuración. Un archivo de configuración es un archivo YAML o JSON que se almacena en tu repositorio y que contiene los mismos tipos de detalles de configuración que puedes aplicar de forma manual a un clúster mediante el comando kubectl apply. Anthos Config Management te permite administrar tus políticas e implementaciones de infraestructura como lo haces con tus apps, mediante la adopción de un enfoque declarativo.

Debes usar Anthos Config Management junto con un repositorio de Git que actúe como la única fuente de información de tus políticas declaradas. Anthos Config Management puede administrar políticas de control de acceso, como RBAC, cuotas de recursos, implementaciones de infraestructura a nivel de la plataforma y espacios de nombres. Anthos Config Management es declarativo; verifica de forma continua el estado del clúster y aplica el estado que se declara en el archivo de configuración para aplicar políticas.

Controlador de políticas de Anthos

Aplica el cumplimiento con políticas

El controlador de políticas de Anthos es un controlador de admisión dinámico para Kubernetes que aplica políticas basadas en CustomResourceDefinition (basadas en CRD) que ejecuta Open Policy Agent (OPA).

Los controladores de admisión son complementos de Kubernetes que interceptan solicitudes al servidor de la API de Kubernetes antes de que se conserve un objeto, pero después de que se autentica y autoriza la solicitud. Puedes usar controladores de admisión para limitar el uso de un clúster.

Para usar el controlador de políticas, debes declarar un conjunto de restricciones en una plantilla de restricciones. Cuando se haya implementado esta plantilla en el clúster, podrás crear CRD de restricciones individuales que se definen mediante la plantilla de restricciones.

En el siguiente diagrama, se muestra cómo el controlador de políticas usa el framework de restricción de OPA para definir y aplicar la política.

El framework de restricción de OPA recibe solicitudes y aplica políticas para acceder a otros recursos.

En el diagrama, se muestra lo siguiente:

  1. Las restricciones se crean a partir de plantillas de restricciones.
  2. Las políticas se habilitan en el clúster mediante la aplicación de restricciones.
  3. Se recibe una solicitud y se activa una revisión de admisión, lo que genera una decisión de permiso o rechazo.
  4. Una auditoría continua evalúa todos los objetos activos en el clúster con las políticas.

Mediante el controlador de políticas, puedes aplicar políticas personalizadas, como aplicar etiquetas. El controlador de políticas te permite aplicar la mayoría de las restricciones que puedes aplicar mediante PodSecurityPolicies. Sin embargo, suelen requerir menos sobrecarga operativa por los siguientes motivos:

  • El controlador de políticas incluye una biblioteca de plantillas predeterminada que incluye plantillas de restricciones, lo que significa que no necesitas escribir tus propias políticas para casos comunes como lo haces con PodSecurityPolicies.
  • No tienes que administrar RoleBindings como lo haces cuando usas PodSecurityPolicies.
  • El controlador de políticas admite el modo de ejecución de prueba para que puedas validar el efecto de una restricción antes de aplicarla.
  • Puedes definir el permiso de las políticas en los espacios de nombres, lo que te da la oportunidad de realizar un aumento más lento de las políticas más restrictivas. Esto es similar a una estrategia de lanzamiento Canary, en la que administras la exposición de lanzar políticas que podrían tener efectos inesperados. Por ejemplo, el lanzamiento podría detectar que restringiste el acceso a un volumen desde un pod, pero que el pod debería tener acceso al volumen.
  • El controlador de políticas proporciona una forma única de aplicar políticas, ya sean restricciones personalizadas o PodSecurityPolicies que se definen en el repositorio de Gatekeeper.

Si quieres obtener más información sobre cómo usar el controlador de políticas para aplicar las políticas que definiste, consulta Controlador de políticas de Anthos Config Management.

Anthos Service Mesh

Administra comunicaciones seguras entre servicios

Anthos Service Mesh te ayuda a supervisar y administrar una malla de servicios basada en Istio. Una malla de servicios es una capa de infraestructura que permite una comunicación administrada, observable y segura entre todos tus servicios.

Anthos Service Mesh ayuda a simplificar la administración de las comunicaciones seguras en los servicios de las siguientes maneras:

  • Te permite administrar la autenticación y la encriptación del tráfico (protocolos compatibles dentro del clúster mediante la comunicación mutua de la capa de transporte (mTLS)). Anthos Service Mesh administra el aprovisionamiento y la rotación de claves y certificados mTLS para cargas de trabajo de Anthos sin interrumpir las comunicaciones. La rotación periódica de las claves mTLS es una práctica recomendada de seguridad que ayuda a reducir la exposición en caso de un ataque.
  • Te permite configurar políticas de seguridad de red según la identidad del servicio en lugar de la dirección IP del intercambio de tráfico. Anthos Service Mesh se usa para configurar políticas de control de acceso (firewall) de identidad que te permiten crear políticas independientes de la ubicación de red de la carga de trabajo. Esto simplifica el proceso de configuración de las comunicaciones entre servicios.
  • Te permite configurar políticas que permiten el acceso desde ciertos clientes.
  • Te permite administrar la autenticación de usuarios mediante Identity-Aware Proxy o un motor de políticas personalizado. Esto te ayuda a controlar el acceso a las aplicaciones que implementaste en los clústeres de Anthos mediante la verificación de la identidad del usuario y el contexto de la solicitud para determinar si se debe permitir el acceso a un usuario.

Además de administrar las comunicaciones seguras entre servicios, Anthos Service Mesh ayuda a reducir el ruido en los registros de acceso, ya que solo registra accesos exitosos una vez por cada período configurable. Las solicitudes que una política de seguridad rechazó o aquellas que generan un error siempre se registran. Los registros de acceso y las métricas están disponibles en Google Cloud’s operations suite.

Para obtener más información sobre las funciones de seguridad de Anthos Service Mesh, consulta la Descripción general de seguridad de Anthos Service Mesh.

Revisión general

Las reglas de firewall de VPC y las políticas de firewall jerárquicas solo se aplican a las cargas de trabajo que se ejecutan en Google Cloud. Los otros controles mencionados antes se aplican a los clústeres y a los clústeres de Anthos alojados en VMware.

Para integrar los controles analizados en esta guía, define su alcance y la etapa en la que se deben configurar, como se describe en los siguientes pasos.

  1. Define políticas de firewall jerárquicas a nivel de organización y para cada carpeta que se defina en la jerarquía de recursos a fin de permitir o denegar el tráfico según sea necesario para tus cargas de trabajo.
  2. Para las restricciones de tráfico que se aplican a clústeres enteros, define Reglas de firewall de VPC.
  3. Crea tus clústeres con las instrucciones en la guía de endurecimiento del clúster aplicable (GKE o clústeres de Anthos alojados en VMware). Cuando crees tu clúster, asegúrate de seguir la guía de endurecimiento y usar la marca --enable-network-policy. Se requieren políticas de red, y este paso te permite implementar más restricciones de tráfico a nivel del Pod.
  4. Define los espacios de nombres y las etiquetas necesarios para los pods. Esto proporciona un alcance de nombre que te permite trabajar con políticas y cuentas de servicio de Kubernetes.
  5. Instala el controlador de políticas mediante Anthos Config Management.
  6. Aplica tus políticas de red mediante Anthos Config Management. A fin de obtener información sobre enfoques típicos para restringir el tráfico mediante el uso de políticas de red, consulta el directorio de restricción de tráfico en el repositorio de GitHub asociado con este plano.
  7. Si usas Anthos Service Mesh, usa políticas de autorización para definir qué tráfico puede pasar dentro de la malla de servicios y, puertas de enlace para definir qué tráfico puede ingresar a la malla de servicios o salir de ella. Usa políticas de red para asegurarte de que el tráfico no pueda omitir las puertas de enlace de salida.