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, que es una función del panel de postura de seguridad que detecta problemas comunes de configuración de seguridad y boletines de seguridad prácticos en tus cargas de trabajo de Kubernetes y amenazas activas en tus clústeres 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 Baja

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, la aplicación de parches y los cronogramas, consulta Parches de seguridad de GKE.

En el panel de postura de seguridad, se muestran boletines de seguridad que afectan a los clústeres, las cargas de trabajo y los grupos de nodos del modo Standard. 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 ves los boletines para los que hay una mitigación disponible en la región o zona de Google Cloud de tu clúster.

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

Ir a Postura de seguridad

Todos los boletines disponibles que afecten tu entorno aparecerán 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 los 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, en la documentación de GKE Enterprise, consulta Acerca de la detección de amenazas de GKE.

¿Qué sigue?