Analizar automáticamente las cargas de trabajo para detectar vulnerabilidades conocidas

Esta página te ayudará a empezar y te guiará para usar el panel de control de la estrategia de seguridad y detectar vulnerabilidades. Consulta los requisitos, selecciona uno de los niveles disponibles y descubre cómo habilitar el análisis de vulnerabilidades, desplegar una carga de trabajo de prueba, ver los resultados y las recomendaciones, y deshabilitar el análisis.

Esta página está dirigida a especialistas en seguridad que monitorizan clústeres para detectar problemas de seguridad. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el Trusted Cloud by S3NS contenido, consulta Roles y tareas habituales de los usuarios de GKE.

Antes de leer esta página, familiarízate con la descripción general del análisis de vulnerabilidades de cargas de trabajo.

Precios

Para obtener información sobre los precios, consulta los precios del panel de control de la postura de seguridad de GKE.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Requisitos

  • Para obtener los permisos que necesitas para usar el análisis de vulnerabilidades de cargas de trabajo, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Lector de postura de seguridad (roles/containersecurity.viewer) en tu proyecto de Trusted Cloud . Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

    Este rol predefinido contiene los permisos necesarios para usar el análisis de vulnerabilidades de cargas de trabajo. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

    Permisos obligatorios

    Para usar el análisis de vulnerabilidades de cargas de trabajo, se necesitan los siguientes permisos:

    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • containersecurity.locations.list
    • containersecurity.locations.get
    • containersecurity.clusterSummaries.list
    • containersecurity.findings.list

    También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

  • Para usar Advanced vulnerability insights, se necesita la versión 1.27 de GKE o una posterior.

Niveles de análisis de vulnerabilidades de cargas de trabajo

Puedes habilitar el análisis de vulnerabilidades por niveles, cada uno de los cuales añade funciones de análisis de la siguiente manera. Si usas la edición Enterprise de Google Kubernetes Engine (GKE) para gestionar flotas de clústeres, también puedes configurar ajustes de análisis de vulnerabilidades a nivel de flota que se apliquen a todos los clústeres miembros. Para obtener instrucciones, consulta Configurar las funciones del panel de control de la postura de seguridad de GKE a nivel de flota.

Nivel Funciones habilitadas Requisitos de la versión de GKE
Estándar
standard
Análisis de vulnerabilidades de SO de contenedores
  • Edición GKE Enterprise: habilitada de forma predeterminada en todos los clústeres nuevos que ejecuten la versión 1.27 y posteriores
Métricas e información útil personalizadas avanzadas sobre vulnerabilidades
enterprise
  • Análisis de vulnerabilidades de SO de contenedores
  • Análisis de vulnerabilidades de paquetes de idiomas
  • Edición GKE Enterprise: habilitada de forma predeterminada en todos los clústeres nuevos que ejecuten la versión 1.27 y posteriores
  • Edición estándar de GKE: inhabilitada de forma predeterminada en todos los clústeres nuevos.

Para obtener más información sobre cada función, consulta Información sobre el análisis de vulnerabilidades de cargas de trabajo.

Habilitar el análisis de vulnerabilidades del SO de los contenedores

El análisis de vulnerabilidades del SO de los contenedores está habilitado de forma predeterminada en los clústeres de Autopilot nuevos que ejecutan la versión 1.27 o una posterior. En esta sección se explica cómo habilitar esta función en los clústeres Standard y Autopilot que ya tengas y que ejecuten versiones anteriores a la 1.27.

Habilitar el análisis del SO de los contenedores en un clúster

gcloud

Actualiza el clúster:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=standard

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre de tu clúster.
  • CONTROL_PLANE_LOCATION: la ubicación del plano de control de tu clúster. Proporciona una región para los clústeres regionales Standard y Autopilot, o una zona para los clústeres zonales Standard.

Consola

  1. Ve a la página Postura de seguridad de la Trusted Cloud consola.

    Ir a Postura de seguridad
  2. Haz clic en la pestaña Configuración.
  3. En la sección Clústeres con análisis de vulnerabilidades habilitado, haga clic en Seleccionar clústeres.
  4. Marque las casillas de los clústeres que quiera añadir.
  5. En el menú desplegable Seleccionar acción, selecciona Definir como básico.
  6. Haz clic en Aplicar.

Habilitar estadísticas de vulnerabilidades avanzadas

Advanced vulnerability insights permite analizar continuamente las aplicaciones en ejecución para detectar los siguientes tipos de vulnerabilidades:

  • Vulnerabilidades del SO del contenedor
  • Vulnerabilidades de paquetes de idiomas

Cuando habilitas las estadísticas avanzadas de vulnerabilidades, la función de análisis de vulnerabilidades del SO del contenedor se habilita automáticamente y no se puede inhabilitar por separado.

Requisitos

Habilitar estadísticas avanzadas sobre las vulnerabilidades en un clúster

gcloud

Actualiza el clúster:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=enterprise

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre de tu clúster.
  • CONTROL_PLANE_LOCATION: la ubicación del plano de control de tu clúster. Proporciona una región para los clústeres regionales Standard y Autopilot, o una zona para los clústeres zonales Standard.

Consola

  1. Ve a la página Postura de seguridad de la Trusted Cloud consola.

    Ir a Postura de seguridad
  2. Haz clic en la pestaña Configuración.
  3. En la sección Clústeres con análisis de vulnerabilidades habilitado, haga clic en Seleccionar clústeres.
  4. Marque las casillas de los clústeres que quiera añadir.
  5. En el menú desplegable Seleccionar acción, selecciona Configuración avanzada.
  6. Haz clic en Aplicar.

Desplegar una carga de trabajo de prueba

En la siguiente sección, utilizará manifiestos de Deployment de ejemplo. Un Deployment es un objeto de la API de Kubernetes que te permite ejecutar varias réplicas de pods distribuidas entre los nodos de un clúster.

Los siguientes manifiestos tienen vulnerabilidades conocidas con fines de demostración. En la práctica, si sabes que una aplicación es vulnerable, probablemente no deberías ejecutarla.

  1. Guarda el siguiente archivo de manifiesto como os-vuln-sample.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontend
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: guestbook
          tier: frontend
      template:
        metadata:
          labels:
            app: guestbook
            tier: frontend
        spec:
          containers:
          - name: php-redis
            image: us-docker.pkg.dev/google-samples/containers/gke/gb-frontend:v5
            env:
            - name: GET_HOSTS_FROM
              value: "dns"
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 80
    
  2. Revisa el siguiente manifiesto, que contiene una vulnerabilidad conocida de Maven:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: maven-vulns
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mavenvulns
      template:
        metadata:
          labels:
            app: mavenvulns
        spec:
          containers:
          - name: maven-vulns-app
            image: us-docker.pkg.dev/google-samples/containers/gke/security/maven-vulns
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
              - name: PORT
                value: "8080"
            resources:
              requests:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
              limits:
                memory: "1Gi"
                cpu: "500m"
                ephemeral-storage: "1Gi"
  3. Si quieres, puedes obtener las credenciales de tu clúster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    
  4. Despliega las aplicaciones en tu clúster:

    kubectl apply -f os-vuln-sample.yaml
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/security/language-vulns/maven/deployment.yaml
    

Para probar otras vulnerabilidades, prueba a implementar versiones anteriores de imágenes, como nginx, en entornos de staging.

Ver y tomar medidas en función de los resultados

El análisis inicial tarda al menos 15 minutos en devolver resultados, en función del número de cargas de trabajo analizadas. GKE muestra los resultados en el panel de control de la estrategia de seguridad y añade automáticamente entradas a Logging.

Ver resultados

Para ver una descripción general de los problemas detectados en los clústeres y las cargas de trabajo de tu proyecto, haz lo siguiente:

  1. Ve a la página Postura de seguridad de la Trusted Cloud consola.

    Ir a Postura de seguridad

  2. Haz clic en la pestaña Preocupaciones.

  3. En el panel Filtrar problemas, en la sección Tipo de problema, marca la casilla Vulnerabilidad.

Ver los detalles de los problemas y las recomendaciones

Para ver información detallada sobre una vulnerabilidad concreta, haz clic en la fila que contenga esa vulnerabilidad.

En el panel Vulnerabilidad se muestra la siguiente información:

  • Descripción: una descripción del problema, incluido un número CVE si procede, y una descripción detallada de la vulnerabilidad y su posible impacto.
  • Acción recomendada: acciones que puedes llevar a cabo para solucionar la vulnerabilidad, como versiones de paquetes corregidas y dónde aplicar la corrección.

Ver los registros de los problemas detectados

GKE añade entradas al _Default contenedor de registro de Logging por cada problema detectado. Estos registros solo se conservan durante un periodo específico. Para obtener más información, consulta Periodos de conservación de los registros.

  1. En la Trusted Cloud consola, ve al Explorador de registros:

    Ir a Explorador de registros
  2. En el campo Consulta, especifica la siguiente consulta:

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_VULNERABILITY"
  3. Haz clic en Realizar una consulta.

Para recibir notificaciones cuando GKE añada nuevos resultados a Logging, configura alertas basadas en registros para esta consulta. Para obtener más información, consulta Configurar alertas basadas en registros.

Limpieza

  1. Elimina la carga de trabajo de ejemplo que has desplegado:

    kubectl delete deployment frontend
    
  2. También puedes eliminar el clúster que has usado:

    gcloud container clusters delete CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

Inhabilitar el análisis de vulnerabilidades de cargas de trabajo

Puedes inhabilitar el análisis de vulnerabilidades de cargas de trabajo mediante la CLI de gcloud o la Trusted Cloud consola.

gcloud

Ejecuta el siguiente comando:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-vulnerability-scanning=disabled

Haz los cambios siguientes:

  • CLUSTER_NAME: el nombre de tu clúster.
  • CONTROL_PLANE_LOCATION: la ubicación del plano de control de tu clúster. Proporciona una región para los clústeres regionales Standard y Autopilot, o una zona para los clústeres zonales Standard.

Consola

  1. Ve a la página Postura de seguridad de la Trusted Cloud consola.

    Ir a Postura de seguridad
  2. Haz clic en la pestaña Configuración.
  3. En la sección Clústeres con análisis de vulnerabilidades habilitado, haga clic en Seleccionar clústeres.
  4. Marque las casillas de los clústeres que quiera quitar.
  5. En el menú desplegable Seleccionar acción, selecciona Inhabilitar.
  6. Haz clic en Aplicar.

Siguientes pasos