Plano de seguridad de Anthos: Audita y supervisa la desviación de la política

En este documento se describe cómo auditar y supervisar tus clústeres de Anthos para determinar si se desviaron de las prácticas recomendadas y políticas de seguridad que les adjuntaste. Se incluye una descripción general de cómo y por qué auditas y supervisas las políticas, y se describen los controles de Google Cloud que usas para esta tarea.

El documento es parte de una serie de planos que proporcionan orientación prescriptiva para trabajar con Anthos.

Introducción

El clúster tiene políticas que ayudan a proteger el acceso a tus elementos. Puedes mejorar la seguridad si auditas y supervisas la desviación de estas políticas. La auditoría y la supervisión te brindan estadísticas sobre el estado actual del clúster, pero no evitan ninguna acción que pueda eludir las políticas. A fin de protegerte contra los cambios, debes tomar medidas para aplicar las políticas.

La supervisión es similar a la auditoría, pero tiene un propósito apenas diferente. Una solución de supervisión común consiste en una forma de recopilar métricas, paneles para ver el estado de tus sistemas y apps, y una forma de enviar alertas cuando se detectan anomalías. Por el contrario, la auditoría se usa a fin de validar el estado de tus sistemas, en general, en función de un conjunto de políticas que definiste y que los sistemas deben cumplir.

Para auditar y supervisar, debes considerar los siguientes requisitos:

  • Qué controles de aplicación tienes implementados y cómo auditarlos o supervisarlos para detectar desviaciones de la política
  • Determinar si necesitas una solución de supervisión consolidada o una segregada

Información sobre los controles de seguridad que necesitas

En esta sección, se analizan los controles necesarios para hacer lo siguiente:

  • Implementar auditorías que complementen la aplicación de las políticas como se describe en la guía de aplicación de políticas

  • Implementar una solución de supervisión que funcione con los clústeres de Anthos GKE sin importar dónde se implementen

Espacios de nombres

Etiqueta recursos que deben usar las mismas políticas

Los espacios de nombres te permiten proporcionar un alcance para los recursos relacionados de un clúster, por ejemplo, pods, servicios y controladores de replicación. Mediante los 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 característica importante para el aislamiento del plano de control. Sin embargo, no proporcionan aislamiento de nodos, de plano de datos ni de 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.

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 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 de las 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 esta plantilla se haya implementado 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 alcance 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.

Operaciones de Kubernetes Engine

Supervisa clústeres de GKE

Las operaciones de Kubernetes Engine están diseñadas para supervisar los clústeres de GKE. Administran los servicios de Cloud Monitoring y Cloud Logging y cuentan con un panel de operaciones de Kubernetes Engine personalizado para los clústeres de GKE. Las operaciones de Kubernetes Engine tienen un conjunto de recursos supervisados de GKE que representan recursos como clústeres, nodos, pods y contenedores. Aunque puedes inhabilitar las operaciones de Kubernetes Engine en GKE y los clústeres de GKE On-Prem, te recomendamos que lo habilites para estos productos.

Estadísticas del estado de la seguridad

Identifica vulnerabilidades

Las estadísticas del estado de la seguridad te ayudan a evitar incidentes, ya que identifican una posible configuración incorrecta e incumplimientos en tus recursos de Google Cloud, y te sugieren las medidas correctivas necesarias. Los analizadores de las estadísticas del estado de la seguridad generan tipos de resultados de vulnerabilidades que están disponibles en Security Command Center. Los resultados del analizador de contenedores se relacionan con las opciones de configuración de los contenedores de GKE y pertenecen al tipo de analizador CONTAINER_SCANNER.

Integración de Security Command Center en Pub/Sub

Puedes recibir alertas sobre los resultados de Security Command Center mediante la app de notificaciones. La app se suscribe a un tema de notificaciones de Pub/Sub y envía notificaciones a un canal configurado, como correo electrónico o SMS.

Cloud Asset Inventory

Supervisa recursos de Google Cloud

Cloud Asset Inventory te permite supervisar los cambios en los recursos y las políticas a los que te suscribiste mediante notificaciones en tiempo real. Puedes supervisar los cambios de los tipos de recursos y tipos de políticas compatibles dentro de una organización, una carpeta, un proyecto, o de otros recursos que especifiques. Para configurar las suscripciones, crea un feed. Los tipos de elementos admitidos incluyen tipos de recursos de GKE y tipos de políticas de Cloud IAM.

Puedes supervisar recursos sensibles a la seguridad, como reglas de firewall y cambios en las políticas de IAM. Cualquier cambio en estos recursos envía de inmediato una notificación a través de Pub/Sub, lo que te permite realizar acciones rápidas si es necesario.

Las notificaciones en tiempo real se conectan a tus cargas de trabajo existentes. Con esta funcionalidad puedes combinar acciones, como crear una función de Cloud Functions para revertir un cambio de recurso después de que se detecta el cambio.

Alertas mediante registros de auditoría de Cloud

Los clústeres de GKE integran el registro de auditoría de Kubernetes con los registros de auditoría de Cloud y Cloud Logging. Puedes usar las operaciones de Kubernetes Engine para configurar métricas basadas en tus entradas de registro. Luego, puedes usar métricas basadas en registros para configurar una política de alertas.

Las políticas de alertas especifican los canales de notificaciones, lo que te permite especificar la forma en la que se te informa sobre la activación de la política de alertas. Puedes configurar un controlador de notificaciones mediante Cloud Run o Cloud Functions a fin de realizar una acción en respuesta, por ejemplo, para revertir el cambio o enviarte una notificación por correo electrónico.

Revisión general

Para integrar los controles, determina tus necesidades de auditoría y supervisión. Luego, asigna el alcance 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. Antes de comenzar a configurar tus clústeres, consulta Patrones de supervisión y registro de nubes híbridas y múltiples para ayudarte a determinar el nivel de aislamiento que necesitas.

  2. Crea tus clústeres. Sigue las instrucciones de la guía de endurecimiento de clústeres aplicable (GKE o GKE On-Prem). 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. Este paso te permite implementar reglas de firewall que restrinjan el tráfico que fluye entre los pods en un clúster.

  3. 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.

  4. Instala el controlador de políticas mediante Anthos Config Management.

    Siga la guía que se describe en la guía de aplicación de políticas.

  5. Configura las operaciones de Kubernetes Engine para que cumplan con tus requisitos:

  6. Configura notificaciones, controladores y políticas de alertas de las operaciones de Kubernetes Engine.

  7. Configura notificaciones en tiempo real desde Cloud Asset Inventory.

  8. Configura un proceso para revisar con regularidad los resultados del contenedor que se generan a partir de los análisis de las estadísticas del estado de la seguridad.