Container Analysis

Container Analysis es un servicio que proporciona análisis de vulnerabilidades y almacenamiento de metadatos para artefactos de software. El servicio realiza análisis de vulnerabilidades en artefactos de software creados, como las imágenes de Container Registry. Luego, almacena los metadatos resultantes y los pone a disposición mediante una API. Los metadatos pueden provenir de varias fuentes, incluidos los análisis de vulnerabilidades, otros servicios de Cloud y proveedores externos.

En esta página, se describen los análisis de vulnerabilidades y los tipos de metadatos que admite Container Analysis, además de algunos conceptos y términos clave.

Análisis de vulnerabilidades

Las vulnerabilidades de software son debilidades que pueden provocar una falla accidental del sistema o que alguien puede usar en su beneficio intencionalmente.

Container Analysis realiza análisis de vulnerabilidades en imágenes de Container Registry y supervisa la información sobre las vulnerabilidades para mantenerla actualizada. Este proceso comprende dos tareas principales:

  • Análisis incremental: Container Analysis analiza las imágenes nuevas cuando se suben a Container Registry. El análisis reúne metadatos en función del manifiesto del contenedor y los actualiza cada vez que vuelves a subir (vuelves a enviar) la imagen.

  • Análisis continuo: Container Analysis supervisa continuamente los metadatos de las imágenes analizadas en Container Registry para detectar vulnerabilidades nuevas. A medida que Container Analysis recibe información nueva y actualizada sobre vulnerabilidades de la fuente de vulnerabilidades, vuelve a analizar los contenedores a fin de mantener actualizada la lista de casos de vulnerabilidades para las imágenes ya analizadas. Crea casos nuevos para las notas nuevas y borra los casos que ya no son válidos. Este tipo de análisis se relaciona solo con las vulnerabilidades de los paquetes y no incluye otros tipos de metadatos.

Cuando se completa el análisis de una imagen, el resultado de vulnerabilidad producido es el conjunto de casos de vulnerabilidades para esa imagen.

Fuente de vulnerabilidad

La API de Container Analysis admite el análisis de vulnerabilidades de los paquetes para distribuciones de Linux y obtiene datos de CVE de las siguientes fuentes:

Niveles de gravedad de las vulnerabilidades

Container Analysis utiliza los siguientes niveles de gravedad:

  • Crítico
  • Alto
  • Medio
  • Bajo
  • Mínimo

Los niveles de gravedad son etiquetas cualitativas que reflejan factores como la capacidad de explotación, el alcance, el impacto y la madurez de la vulnerabilidad. Por ejemplo, si una vulnerabilidad permite que un usuario remoto acceda con facilidad a un sistema y ejecute código arbitrario sin autenticación ni interacción del usuario, esa vulnerabilidad se clasifica como crítica.

Hay dos tipos de gravedad asociados con cada vulnerabilidad:

  • Gravedad efectiva: el nivel de gravedad que asigna la distribución de Linux. Si los niveles de gravedad específicos de la distribución no están disponibles, Container Analysis usa el nivel de gravedad que le asigna el proveedor de la nota.

  • Puntuación de CVSS: La puntuación del sistema Common Vulnerability Scoring System (CVSS) y el nivel de gravedad asociado. Consulta la especificación CVSS 3.0 para obtener detalles sobre cómo se calculan las puntuaciones de CVSS.

Para una vulnerabilidad determinada, es posible que la gravedad derivada de la puntuación de CVSS calculada no coincida con la gravedad efectiva. Las distribuciones de Linux que asignan niveles de gravedad usan sus propios criterios para evaluar los impactos específicos de una vulnerabilidad en sus distribuciones.

Asocia metadatos con imágenes

Un metadato de alto nivel, como una vulnerabilidad o información de compilación, se denomina nota. Cuando Container Analysis analiza una imagen, cada instancia que encuentra de una nota se identifica como un caso.

Nota

Una nota describe un fragmento de metadatos de alto nivel. Por ejemplo, puedes crear una nota sobre una vulnerabilidad en particular después de analizar un paquete de Linux. También puedes usar una nota para almacenar información sobre el creador de un proceso de compilación. A menudo, los proveedores que realizan el análisis son los propietarios y creadores de las notas. En general, las notas se encuentran cuando se analizan las imágenes del contenedor y ocurren varias veces en diferentes proyectos.

Se recomienda almacenar las notas y los casos en proyectos separados, lo que permite un control de acceso más preciso.

Solo el propietario de la nota puede editarla. Por su parte, los clientes con acceso a los casos que hacen referencia a ella tienen acceso de solo lectura.

Caso

Un caso se produce cuando se encuentra una nota en una imagen. Se puede considerar una instancia de una nota. Por ejemplo, el caso de una nota sobre una vulnerabilidad describiría el paquete en el que se encontró la vulnerabilidad, los pasos específicos para su solución, etcétera. Como alternativa, un caso de una nota acerca de los detalles de compilación describiría las imágenes de contenedor que surgieron como resultado de una compilación.

Por lo general, los casos se almacenan en proyectos distintos de aquellos en los que se crearon las notas. El acceso de escritura a los casos solo se debe otorgar a los usuarios que tienen acceso para vincular una nota con el caso. Cualquier usuario puede tener acceso de lectura a los casos.

Los casos de descubrimiento incluyen información recopilada a partir del análisis inicial de las imágenes del contenedor. A medida que analiza los contenedores, Container Analysis actualiza los casos de descubrimiento para registrar el estado del análisis. Se crean casos de descubrimiento para todas las imágenes existentes cuando la API de Container Analysis se activa por primera vez y, luego, para todas las imágenes nuevas que se envían a Container Registry.

Tipos de metadatos admitidos

En la siguiente tabla, se enumeran los tipos de metadatos que Container Analysis admite y proporciona para las imágenes de Container Registry como notas. Los proveedores de metadatos externos pueden almacenar y recuperar todos los tipos de metadatos siguientes para las imágenes de sus clientes.

Tipo de metadatos Proporcionado por Container Analysis para imágenes de Container Registry
Vulnerabilidad: proporciona información sobre vulnerabilidades para las imágenes de contenedor. Sí. Container Analysis obtiene la información sobre vulnerabilidades de fuentes externas.
Compilación: proporciona información sobre la fuente de la compilación. Sí. Container Analysis proporciona esta información solo si usas Cloud Build para compilar la imagen.
Implementación: proporciona información sobre los eventos de implementación de las imágenes. No
Imagen: son los metadatos sobre la imagen del contenedor; por ejemplo, la información sobre las diferentes capas de una imagen. No
Paquete: contiene información sobre los paquetes instalados en tu imagen. No
Certificación: es la función lógica que puede certificar las imágenes. No
Descubrimiento: contiene información sobre el análisis inicial de las imágenes. Sí. Container Analysis proporciona esta información solo sobre las vulnerabilidades.

Proveedores y clientes

Los proveedores son las empresas que proporcionan metadatos para las imágenes de sus clientes. Los proveedores pueden usar Container Analysis para almacenar y recuperar metadatos de las imágenes de sus clientes. Por ejemplo, una empresa que proporciona administración de seguridad para los contenedores de Docker de sus clientes puede usar Container Analysis a fin de almacenar y recuperar metadatos relacionados con la seguridad de las imágenes. Para obtener más información, consulta cómo proporcionar metadatos para los proyectos.

Los clientes utilizan los metadatos que proporciona Google para las imágenes en Container Registry o por proveedores externos.

Cuenta de servicio de Container Analysis predeterminada

Container Analysis analiza tus imágenes de contenedor con una cuenta de servicio, una Cuenta de Google especial que recopila información sobre tus imágenes en tu nombre. El correo electrónico de la cuenta de servicio de Container Analysis es service-[PROJECT_NUMBER]@container-analysis.iam.gserviceaccount.com. Esta cuenta utiliza la función agente de servicio de Container Analysis.

Si habilitas el análisis de vulnerabilidades, la API de Container Scanning que usa esta función también utiliza una Cuenta de Google especial. El correo electrónico de esa cuenta de servicio es service-[PROJECT_NUMBER]@gcp-sa-containerscanning.iam.gserviceaccount.com. La cuenta utiliza la función agente del servicio de Container Scanner.

Puedes ver las cuentas de servicio de tu proyecto a través del menú de IAM de Cloud Console.

Interfaces de Container Analysis

En Cloud Console, puedes ver las vulnerabilidades de imágenes y los metadatos de los contenedores en Container Registry.

Puedes usar la herramienta gcloud para ver las vulnerabilidades y los metadatos de las imágenes.

También puedes usar la API de REST de Container Analysis para realizar cualquiera de estas acciones. Al igual que con otras API de Cloud Platform, debes autenticar el acceso con OAuth2. Una vez que te hayas autenticado, puedes usar la API para crear casos y notas nuevas, ver los casos de vulnerabilidades, etcétera.

La API de Container Analysis admite gRPC y REST/JSON. Puedes realizar llamadas a la API a través de las bibliotecas cliente o mediante el uso de cURL para REST/JSON.

Controla la implementación de imágenes vulnerables

Puedes integrar Container Analysis en la autorización binaria para evitar que las imágenes con problemas de seguridad conocidos se ejecuten en tu entorno de implementación.

Qué sigue