Plano de seguridad de Anthos: Aplicación de políticas

En este documento, se describe cómo aplicar políticas de seguridad en los clústeres de Anthos. Incluye una descripción general de cómo y por qué aplicas políticas, y 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.

Introducción

Aplicas políticas a tus clústeres para garantizar que se cumplan tus requisitos de cumplimiento y seguridad. Después de establecer políticas, debes asegurarte de que se apliquen y que la configuración de tus clústeres de Anthos cumpla con los parámetros de configuración de las políticas que especificaste.

La aplicación de políticas es complementaria a la auditoría de tu clúster. La auditoría te indica el estado pasado y actual del clúster, pero no evita ninguna acción que pueda eludir tus políticas. Por el contrario, la aplicación de políticas es un control preventivo. Debes aplicar políticas a nivel de clúster y de espacio de nombres para cumplir con tus requisitos.

Debes considerar cómo aplicar los siguientes requisitos:

  • Limitar el consumo de recursos
  • Restringir el tráfico de red dentro del clúster
  • Restringir las capacidades con las que se puede ejecutar un pod
  • Definir políticas personalizadas, como aplicar etiquetas obligatorias

Información sobre los controles de seguridad que necesitas

En esta sección, se analizan los controles necesarios para permitirte aplicar las políticas que te ayudan a cumplir con los requisitos de seguridad y cumplimiento.

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.

Cuotas de recursos

Controla el consumo de recursos

GKE está diseñado para admitir varias aplicaciones que se ejecutan en el mismo clúster administradas por varios equipos. Si ningún equipo es responsable de administrar el uso de recursos en un clúster, es posible que las aplicaciones que se ejecutan en el clúster consuman más recursos de los que deberían. Para evitar esta situación, un administrador debe configurar las cuotas de recursos a fin de limitar el consumo total de recursos para los recursos que se definen dentro de un espacio de nombres.

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 implementaciones de infraestructura y políticas como lo haces con las apps, ya que adopta un enfoque de política como código.

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.

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 de manera bidireccional entre las transacciones del espacio de nombres y la vidriera del espacio de nombres. Sin embargo, el tráfico solo puede fluir desde la vidriera del espacio de nombres hasta la app de registro.

Para ver un ejemplo de configuración de NetworkPolicy que se puede aplicar mediante Anthos Config Management, consulta la sección “Archivos de configuración de NetworkPolicy” en Configura objetos de Kubernetes.

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 GKE mediante la verificación de la identidad del usuario y el contexto de la solicitud para determinar si se debe permitir el acceso de 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

Los controles mencionados antes se aplican a Anthos GKE y Anthos GKE On‑Prem.

Para integrar los controles, mapea el permiso de los controles que se analizan en esta guía y la etapa en la que se deben configurar, como se describe en los siguientes pasos.

  1. Crea tus clústeres mediante la orientación de la guía de endurecimiento de clústeres aplicable (GKE o Anthos GKE On-Prem). Cuando crees tu clúster, asegúrate de seguir la guía de endurecimiento y usar la marca --enable-network-policy. Las políticas de red son obligatorias, y este paso te permite implementar reglas de firewall que restrinjan el tráfico que fluye entre los pods en un clúster.
  2. Define los espacios de nombres y las etiquetas necesarias para los pods. Esto proporciona un permiso de nombre que te permite trabajar con políticas y cuentas de servicio de Kubernetes.
  3. Instala el controlador de políticas mediante Anthos Config Management.
  4. Aplica tu política de red mediante Anthos Config Management.
  5. Recopila las plantillas de restricciones del controlador de políticas compiladas con anterioridad que deseas usar y asígnalas a tus recursos mediante la definición de restricciones.
  6. Aplica la plantilla de restricciones y las restricciones mediante Anthos Config Management.

Puedes aplicar controles adicionales que se centren en la capa de la aplicación (capa 7) para aplicar más políticas mediante Anthos Service Mesh de la siguiente manera:

  • Si no habilitaste la aplicación de la política de Istio cuando creaste tu clúster, hazlo ahora.
  • Define las políticas que deseas aplicar en la capa de aplicación. Las políticas se expresan como YAML.
  • Aplica tus políticas mediante Anthos Config Management.