Acerca del análisis de posturas de seguridad de Kubernetes


En esta página, se describe el análisis de posturas de seguridad de Kubernetes, una función del panel de postura de seguridad que te ayuda a identificar y abordar de forma proactiva las vulnerabilidades de seguridad en tus clústeres de Google Kubernetes Engine (GKE). En esta página, se explica la auditoría de la configuración de la carga de trabajo, la publicación de boletines de seguridad y el análisis de detección de amenazas para supervisar las vulnerabilidades y mitigar los riesgos de seguridad en GKE.

Esta página está destinada a especialistas en seguridad que supervisan los clústeres en busca de problemas de seguridad. Si comprendes el panel de postura de seguridad, puedes tomar decisiones fundamentadas sobre tus parámetros de configuración de seguridad y aprender a aprovechar al máximo sus funciones avanzadas para la detección de amenazas y la administración de vulnerabilidades. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.

Para habilitar y usar el análisis de posturas de seguridad de Kubernetes, consulta los siguientes recursos:

El análisis de posturas de seguridad de Kubernetes proporciona las siguientes funciones:

Precios

  • Nivel estándar: Se ofrece sin cargo adicional en GKE.
  • Nivel Avanzado: Se incluye en GKE Enterprise.

Las entradas que se agregan a Cloud Logging están sujetas a los precios de Cloud Logging.

Acerca de la auditoría de configuración de las cargas de trabajo

Las cargas de trabajo que implementas en GKE deben tener una configuración endurecida que limite su superficie de ataque. Puede ser difícil verificar manualmente a gran escala las cargas de trabajo en los clústeres para detectar problemas de configuración. Puedes usar el panel de postura de seguridad para auditar de forma automática la configuración de todas las cargas de trabajo en ejecución en varios clústeres y mostrar resultados prácticos y puntuados y recomendaciones bien definidas a fin de mejorar tu postura de seguridad.

La auditoría de configuración de las cargas de trabajo compara cada carga de trabajo implementada con un subconjunto de políticas en los Estándares de seguridad de Pods. La auditoría de la configuración de la carga de trabajo se realiza en la infraestructura de Google y no usa recursos de procesamiento en tus nodos.

Beneficios de la auditoría de configuración de las cargas de trabajo

  • Automatiza la detección de los problemas de configuración conocidos en todas las cargas de trabajo.
  • Obtén recomendaciones prácticas para mejorar la postura de seguridad.
  • Usa la consola de Google Cloud para obtener una vista de alto nivel de los problemas de configuración.
  • Usa Logging para obtener un registro auditable de problemas sobre mejores informes y observabilidad.

Cómo funciona la auditoría de configuración de las cargas de trabajo

Para cada carga de trabajo implementada apta, GKE analiza de forma continua la especificación de la carga de trabajo y compara los campos y valores con los controles definidos en la política de seguridad subyacente. Por ejemplo, un Pod con spec.containers.securityContext.privileged=true infringe el estándar de seguridad de Pods Referencia y un Pod con el campo spec.securityContext.runAsNonRoot configurado como false infringe el estándar Restringido. Para obtener una lista de las políticas de seguridad que GKE verifica, consulta ¿Qué verifica la auditoría de la configuración de las cargas de trabajo?.

Después de analizar y descubrir problemas, GKE califica la gravedad de los problemas de configuración descubiertos en función de las medidas de endurecimiento de seguridad integradas. GKE asigna una clasificación de gravedad que puede informar la velocidad con la que respondes al problema. La consola de Google Cloud muestra los resultados y las acciones recomendadas que puedes realizar para solucionar los problemas. GKE también agrega entradas a Cloud Logging para el seguimiento y la auditoría.

¿Qué verifica la auditoría de la configuración de las cargas de trabajo?

Problema Campos Valores permitidos Gravedad

Espacios de nombres de host

Los Pods que comparten espacios de nombres de host permiten que los procesos de Pods se comuniquen con los procesos del host y recopilen información del host, lo que podría provocar un escape del contenedor.

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • Indefinido o nulo
  • false
Alta

Contenedores privilegiados

Los contenedores con privilegios proporcionan acceso casi ilimitado al host. Comparten espacios de nombres con el host y no tienen restricciones de grupo de control, seccomp, AppArmor ni de capacidad.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • Indefinido o nulo
  • false
Alta

Acceso al puerto del host

Exponer un puerto de host a un contenedor podría permitir que el contenedor intercepte el tráfico de red a un servicio host mediante ese puerto o que omita las reglas de control de acceso a la red, como las reglas en una NetworkPolicy.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • Indefinido o nulo
  • 0
Alta

Funciones no predeterminadas

Un contenedor tiene capacidades asignadas que podrían permitir escapes.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • Indefinido o nulo
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
Media

Activación de volúmenes de ruta de acceso del host

Los volúmenes hostPath activan archivos o directorios del host. Estos volúmenes presentan riesgos de seguridad que podrían provocar escapes de los contenedores.

spec.volumes[*].hostPath Indefinido o nulo Media

Máscara /proc no predeterminada

El tipo de activación /proc predeterminado enmascara ciertas rutas en /proc para evitar la exposición de rutas que podrían causar filtraciones de información o escapes de contenedores. Usar un tipo no predeterminado aumenta estos riesgos.

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • Indefinido o nulo
  • Predeterminado
Media

Máscara de sysctls no segura

Se puede configurar un Pod para permitir la modificación de parámetros de kernel no seguros a través del sistema de archivos virtuales /proc/sys. Los parámetros no seguros no admiten el espacio de nombres, no aíslan de forma adecuada sus efectos entre los Pods, pueden dañar el estado del nodo o pueden permitir que el Pod obtenga recursos más allá de sus límites.

spec.securityContext.sysctls[*].name
  • Indefinido o nulo
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
Media

Ejecución como no raíz

Puedes permitir de forma explícita que un contenedor se ejecute como usuario raíz si runAsUser o la directiva USER en la imagen especifican el usuario raíz. La falta de controles de seguridad preventivos cuando se ejecuta como usuario raíz aumenta el riesgo de escape del contenedor.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true Media

Elevación de privilegios

Se puede configurar un contenedor de forma explícita para permitir la elevación de privilegios en la ejecución. Esto permite que un proceso creado dentro del contenedor ejecute un ejecutable set-user-id, set-group-id o de capacidad de archivo para obtener los privilegios que especifica el ejecutable. La falta de control de seguridad preventivo aumenta el riesgo de escape del contenedor.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false Media

Perfil de AppArmor sin confirmar

AppArmor puede configurar explícitamente un contenedor para que sea unconfined. Esto garantiza que no se aplique ningún perfil de AppArmor al contenedor y, por lo tanto, no esté restringido por ellos. Inhabilitar el control de seguridad preventivo aumenta el riesgo de escape del contenedor.

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false Bajo

Además, GKE busca RoleBindings o ClusterRoleBindings de RBAC que hagan referencia a uno de los siguientes usuarios o grupos:

  • system:anonymous
  • system:authenticated
  • system:unauthenticated

Si existen vinculaciones de RBAC que hagan referencia a estos usuarios o grupos, aparecerá un hallazgo llamado Se otorgó acceso al clúster de GKE a usuarios anónimos con una gravedad de Media en el panel de estado de seguridad. Estos usuarios y grupos son, en realidad, anónimos y no deben usarse en RoleBindings ni ClusterRoleBindings. Para obtener más información, consulta Evita los roles y los grupos predeterminados.

Información sobre el boletín de seguridad

Cuando se descubre una vulnerabilidad en GKE, le aplicamos un parche y publicamos un boletín de seguridad para esta. Para obtener información sobre la identificación, los parches y los cronogramas, consulta Parches de seguridad de GKE.

El panel de postura de seguridad muestra boletines de seguridad que afectan a tus clústeres, cargas de trabajo y grupos de nodos del modo estándar. Esta característica forma parte de la función de postura de seguridad de Kubernetes del panel de postura de seguridad y se habilita de forma automática cuando creas un clúster de Autopilot o Standard. Para habilitar el análisis de postura de seguridad de Kubernetes, usa las instrucciones en Audita las cargas de trabajo de forma automática para detectar problemas de configuración.

La consola de Google Cloud muestra detalles como clústeres afectados, versiones y versiones de parche recomendadas para actualizaciones a fin de mitigar la vulnerabilidad. Solo verás los boletines para los que hay una mitigación disponible en la región o zona Google Cloud de tu clúster.

Para ver los boletines de los clústeres que inscribiste en el análisis de posiciones de seguridad de Kubernetes, ve al panel de posiciones de seguridad:

Ir a Postura de seguridad

Los boletines disponibles que afectan tu entorno aparecen en la sección Boletines de seguridad.

Acerca de la detección de amenazas de GKE

La detección de amenazas de GKE analiza los registros de auditoría de tus clústeres inscritos en busca de amenazas activas y proporciona acciones de mitigación recomendadas. La detección de amenazas de GKE cuenta con la tecnología del servicio Event Threat Detection de Security Command Center. Para obtener más información, consulta Acerca de la detección de amenazas de GKE en la documentación de GKE Enterprise.

¿Qué sigue?