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

En esta página, se te ayudará a comenzar y se te guiará para que uses el panel de posición de seguridad y detectes vulnerabilidades. Consulta los requisitos, selecciona uno de los niveles disponibles y obtén información para habilitar el análisis de vulnerabilidades, implementar una carga de trabajo de prueba, ver los resultados y las recomendaciones, y, luego, inhabilitar el análisis.

Esta página está dirigida a los especialistas en seguridad que supervisan los clústeres en busca de problemas de seguridad. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido deGoogle Cloud , consulta Roles de usuario y tareas comunes de GKE.

Antes de leer esta página, asegúrate de conocer 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 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 el comando gcloud components update para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.

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
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 existente

gcloud

Actualiza el clúster:

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

Reemplaza lo siguiente:

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

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 avanzadas de vulnerabilidades en un clúster existente

gcloud

Actualiza el clúster:

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

Reemplaza lo siguiente:

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

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

En la siguiente sección, usarás manifiestos de Deployment de ejemplo. Un Deployment es un objeto de la API de Kubernetes que te permite ejecutar varias réplicas de Pods que se distribuyen 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, 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: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 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 \
        --location=CONTROL_PLANE_LOCATION
    
  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 detalles, consulta Períodos de retención de registros.

  1. En la consola de Google Cloud , ve al 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 \
        --location=CONTROL_PLANE_LOCATION
    

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

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

gcloud

Ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

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

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?