Analiza automáticamente las cargas de trabajo en busca de vulnerabilidades conocidas


En esta página, se muestra cómo analizar de forma automática el sistema operativo (SO) del contenedor y los paquetes de idiomas en tus cargas de trabajo en ejecución en busca de vulnerabilidades conocidas y obtener estrategias de mitigación prácticas, si están disponibles. El análisis de vulnerabilidades de las cargas de trabajo es parte del panel de postura de seguridad, que es un conjunto de funciones que proporcionan información y recomendaciones para mejorar la seguridad de las cargas de trabajo y los clústeres de Google Kubernetes Engine (GKE).

Para obtener más información, consulta Acerca del análisis de vulnerabilidades de las cargas de trabajo.

Precios

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

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

Requisitos

  • Para obtener los permisos que necesitas para usar el análisis de vulnerabilidades de las cargas de trabajo, pídele a tu administrador que te otorgue el rol de IAM de visualizador de posturas de seguridad (roles/containersecurity.viewer) en tu proyecto de Google Cloud. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

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

    Permisos necesarios

    Se requieren los siguientes permisos para usar el análisis de vulnerabilidades de las cargas de trabajo:

    • 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 o con otros roles predefinidos.

  • Advanced Vulnerability Insights requiere la versión 1.27 de GKE o una posterior.

Niveles de análisis de vulnerabilidades de las cargas de trabajo

Habilitas el análisis de vulnerabilidades en niveles, cada uno de los cuales agrega capacidades de análisis de la siguiente manera: Si usas la edición Enterprise de Google Kubernetes Engine (GKE) para administrar flotas de clústeres, también puedes establecer la configuración del análisis de vulnerabilidades a nivel de la flota que se aplica a todos los clústeres miembros. Para obtener instrucciones, consulta Configura las funciones del panel de postura de seguridad de GKE a nivel de la flota.

Nivel Capacidades habilitadas Requisito de la versión de GKE
Standard
standard
Análisis de vulnerabilidades del SO del contenedor
  • Edición GKE Enterprise: habilitada de forma predeterminada en todos los clústeres nuevos que ejecutan la versión 1.27 y posteriores
  • Edición GKE Standard: habilitada de forma predeterminada en todos los clústeres nuevos en modo Autopilot que ejecutan la versión 1.27 y posteriores. Inhabilitado de forma predeterminada en todos los clústeres del modo Standard.
Advanced vulnerability insights
enterprise
  • Análisis de vulnerabilidades del SO del contenedor
  • Análisis de vulnerabilidades de paquetes de idiomas
  • Edición GKE Enterprise: habilitada de forma predeterminada en todos los clústeres nuevos que ejecutan la versión 1.27 y posteriores
  • Edición GKE Standard: inhabilitada de forma predeterminada en todos los clústeres nuevos.

Para obtener más información, sobre cada capacidad, consulta Acerca del análisis de vulnerabilidades de las cargas de trabajo.

Habilita el análisis de vulnerabilidades del SO del contenedor

El análisis de vulnerabilidades del SO del contenedor está habilitado de forma predeterminada en los clústeres nuevos de Autopilot con la versión 1.27 y posteriores. En esta sección, se muestra cómo habilitar esta función en los nuevos clústeres de Standard existentes y en los clústeres de Autopilot que ejecutan versiones anteriores a la versión 1.27.

Habilita el análisis de Container OS en un clúster nuevo

gcloud

Crea un clúster de GKE nuevo mediante la gcloud CLI:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=standard

Reemplaza lo siguiente:

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine
  2. Haz clic en Crear.
  3. En la sección GKE Standard, haz clic en Configurar.
  4. En el panel de navegación, haz clic en Seguridad.
  5. En la sección Seguridad, selecciona la casilla de verificación Análisis de vulnerabilidades.
  6. Selecciona la opción Básico.
  7. Configura otras opciones para tu clúster y haz clic en Crear cuando esté todo listo.

Habilita el análisis de Container OS en un clúster existente

gcloud

Actualiza el clúster:

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

Reemplaza lo siguiente:

Console

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

    Ir a Postura de seguridad
  2. Haz clic en la pestaña Configuración.
  3. En la sección Clústeres habilitados para el análisis de vulnerabilidades, haz clic en Seleccionar clústeres.
  4. Selecciona las casillas de verificación de los clústeres que deseas añadir.
  5. En el menú desplegable Seleccionar acción, selecciona Configurar como Básico.
  6. Haz clic en Aplicar.

Habilita las estadísticas avanzadas de vulnerabilidades

Advanced Vulnerability Insights permite el análisis continuo de tus aplicaciones en ejecución para los siguientes tipos de vulnerabilidades:

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

Cuando habilitas las estadísticas avanzadas de vulnerabilidades, la capacidad de análisis de vulnerabilidades del SO de contenedores se habilita de forma automática y no se puede inhabilitar por separado.

Requisitos

Habilita las estadísticas de vulnerabilidades avanzadas en un clúster nuevo

gcloud

Crea un clúster de GKE nuevo mediante la gcloud CLI:

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --workload-vulnerability-scanning=enterprise

Reemplaza lo siguiente:

Console

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine
  2. Haz clic en Crear.
  3. En la sección GKE Autopilot, haz clic en Configurar.
  4. En el panel de navegación, haz clic en Configuración avanzada. Si creas un clúster de Standard, haz clic en Seguridad en su lugar.
  5. En la sección Seguridad, selecciona la casilla de verificación Análisis de vulnerabilidades.
  6. Selecciona la opción Avanzada.
  7. Configura otras opciones para tu clúster y haz clic en Crear cuando esté todo listo.

Habilita las estadísticas avanzadas de vulnerabilidades en un clúster existente

gcloud

Actualiza el clúster:

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

Reemplaza lo siguiente:

Console

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

    Ir a Postura de seguridad
  2. Haz clic en la pestaña Configuración.
  3. En la sección Clústeres habilitados para el análisis de vulnerabilidades, haz clic en Seleccionar clústeres.
  4. Selecciona las casillas de verificación de los clústeres que deseas añadir.
  5. En el menú desplegable Seleccionar acción, selecciona Establecer en Avanzada.
  6. Haz clic en Aplicar.

Implementa una carga de trabajo de prueba

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

  1. Guarda el siguiente 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@sha256:dc8de8e0d569d2f828b187528c9317bd6b605c273ac5a282aebe471f630420fc
            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 de Maven conocida:

    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. De manera opcional, obtén credenciales para tu clúster:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=COMPUTE_REGION
    
  4. Implementa 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, intenta implementar versiones anteriores de imágenes, como nginx, en entornos de etapa de pruebas.

Visualiza los resultados y realiza acciones

El análisis inicial tarda al menos 15 minutos en mostrar resultados, según cuántas cargas de trabajo se analicen. GKE muestra los resultados en el panel de postura de seguridad y agrega entradas a Logging de forma automática.

Ver los resultados

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

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

    Ir a Postura de seguridad

  2. Haz clic en la pestaña Problemas.

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

Visualiza los detalles y las recomendaciones de los problemas

Para ver información detallada sobre una vulnerabilidad específica, haz clic en la fila que contiene ese problema.

En el panel Problemas de vulnerabilidad, se muestra la siguiente información:

  • Descripción: Una descripción del problema, que incluye un número de CVE si corresponde y una descripción detallada de la vulnerabilidad y su impacto potencial.
  • Acción recomendada: Acciones que puedes realizar para abordar la vulnerabilidad, como las versiones de paquetes fijos y dónde aplicar la corrección.

Consulta los registros de los problemas que se descubrieron

GKE agrega entradas al bucket de registros _Default en Logging para cada problema descubierto. Estos registros solo se conservan durante un período específico. Para obtener más información, consulta Períodos de retención de registros.

  1. En la consola de Google Cloud, ve a la página Explorador de registros.

    Ir al Explorador de registros
  2. En el campo Consulta, ingresa 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 Ejecutar consulta.

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

Libera espacio

  1. Borra la carga de trabajo de muestra que implementaste:

    kubectl delete deployment frontend
    
  2. De manera opcional, borra el clúster que usaste:

    gcloud container clusters delete CLUSTER_NAME \
        --region=COMPUTE_REGION
    

Inhabilita el análisis de vulnerabilidades de las cargas de trabajo

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

gcloud

Ejecuta el comando siguiente:

gcloud container clusters update CLUSTER_NAME \
    --region=LOCATION \
    --workload-vulnerability-scanning=disabled

Reemplaza lo siguiente:

Console

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

    Ir a Postura de seguridad
  2. Haz clic en la pestaña Configuración.
  3. En la sección Clústeres habilitados para el análisis de vulnerabilidades, haz clic en Seleccionar clústeres.
  4. Selecciona las casillas de verificación de los clústeres que deseas quitar.
  5. En el menú desplegable Seleccionar acción, selecciona Configurar como Inhabilitado.
  6. Haz clic en Aplicar.

¿Qué sigue?