Artifact Analysis proporciona dos formas de analizar imágenes: análisis automático y análisis a pedido. En este documento, se describen los detalles de las funciones de ambos tipos de análisis.
Artifact Analysis también proporciona administración de metadatos. Para obtener más información sobre cómo puedes usar el análisis y el almacenamiento de metadatos en conjunto para proteger tu canalización de CI/CD de extremo a extremo, consulta la descripción general de Artifact Analysis.
Consulta los precios para obtener más información sobre los costos asociados con el análisis de imágenes de contenedores.
En esta descripción general, se supone que ya conoces el uso de repositorios de Docker en Artifact Registry o Container Registry (obsoleto).
Búsqueda automática
Artifact Analysis realiza análisis de vulnerabilidades en tus artefactos en Artifact Registry o Container Registry (obsoleto). Artifact Analysis también identifica dependencias y licencias para ayudarte a comprender la composición de tu software.
El escaneo automático comprende dos tareas principales: el escaneo en el envío y el análisis continuo.
Análisis en el envío
Artifact Analysis analiza las imágenes nuevas cuando se suben a Artifact Registry o Container Registry. Este análisis extrae información sobre los paquetes del contenedor. Las imágenes se escanean solo una vez, según el resumen de la imagen. Esto significa que agregar o modificar etiquetas no activará nuevos análisis.
Artifact Analysis solo detecta vulnerabilidades en paquetes que se supervisan de forma pública para detectar vulnerabilidades de seguridad.
Cuando se completa el análisis de una imagen, el resultado de vulnerabilidad producido es el conjunto de casos de vulnerabilidades para esa imagen.
Análisis continuo
Artifact Analysis crea casos para las vulnerabilidades que se encuentran cuando subes la imagen. Después del análisis inicial, supervisa continuamente los metadatos de las imágenes analizadas en Artifact Registry y Container Registry para detectar vulnerabilidades nuevas.
Artifact Analysis recibe información nueva y actualizada sobre vulnerabilidades de las fuentes de vulnerabilidades varias veces al día. Cuando llegan datos de vulnerabilidades nuevos, Artifact Analysis actualiza los metadatos de las imágenes analizadas para mantenerlas actualizadas. Artifact Analysis actualiza los casos de vulnerabilidades existentes, crea casos de vulnerabilidades nuevos para las notas nuevas y borra los casos de vulnerabilidades que ya no son válidos.
Artifact Analysis solo actualiza los metadatos de las imágenes que se enviaron o extrajeron en los últimos 30 días. Después de 30 días, los metadatos ya no se actualizarán y los resultados estarán inactivos. Además, Artifact Analysis archiva los metadatos que están inactivos durante más de 90 días, y estos no estarán disponibles en la consola de Google Cloud, gcloud ni a través de la API. Para volver a analizar una imagen con metadatos inactivos o archivados, extrae esa imagen. La actualización de los metadatos puede tardar hasta 24 horas.
Listas de manifiestos
También puedes usar el análisis de vulnerabilidades con listas de manifiestos. Una lista de manifiestos es una lista de punteros a manifiestos de varias plataformas. Permiten que una sola imagen funcione con varias arquitecturas o variaciones de un sistema operativo.
El análisis de vulnerabilidades de Artifact Analysis solo admite imágenes amd64 de Linux. Si tu lista de manifiestos apunta a más de una imagen de Linux amd64, solo se analizará la primera. Si no hay punteros a imágenes de Linux amd64, no obtendrás ningún resultado del análisis.
Análisis a pedido
El escaneo on demand te permite analizar imágenes de contenedores de forma local en tu computadora o en tu registro con gcloud CLI. Esto te brinda la flexibilidad para personalizar tu canalización de CI/CD, según cuándo necesites acceder a los resultados de las vulnerabilidades.
Tipos de paquetes compatibles
Cuando envías imágenes de contenedores a repositorios de Docker en Artifact Registry, Artifact Analysis puede analizar vulnerabilidades en varios tipos de paquetes de SO y de lenguaje de la aplicación.
Container Registry está obsoleto. Con Container Registry, el análisis automático solo analiza los paquetes del SO. Si usas Container Registry, obtén información para migrar a Artifact Registry.
En las siguientes tablas, se comparan los tipos de paquetes que Artifact Analysis puede analizar con cada servicio de análisis:
Paquetes de SO compatibles
Búsqueda automática con Artifact Registry | Análisis automático con Container Registry (obsoleto) | Análisis a pedido | |
---|---|---|---|
SO AlmaLinux | |||
Alpine | |||
CentOS | |||
Chainguard | |||
Debian | |||
Distroless de Google | |||
Red Hat Enterprise Linux (RHEL) | |||
Imagen base universal (UBI) de Red Hat | |||
Rocky Linux | |||
SUSE Linux Enterprise Server (SLES) | |||
Ubuntu | |||
Wolfi |
Paquetes de idioma de la aplicación compatibles
Búsqueda automática con Artifact Registry | Análisis automático con Container Registry (obsoleto) | Análisis a pedido | |
---|---|---|---|
Paquetes de Go | |||
Paquetes Java | |||
Paquetes de Node.js | |||
Paquetes de PHP | |||
Paquetes de Python | |||
Paquetes de Ruby | |||
Paquetes de Rust | |||
Paquetes de .NET |
Artifact Analysis solo analiza los paquetes de lenguaje de la aplicación en Artifact Registry cuando los paquetes están alojados en contenedores y almacenados en un repositorio de formato Docker. No se admiten los otros formatos de repositorio de Artifact Registry.
Para obtener más información sobre las funciones disponibles para cada producto del registro, consulta el gráfico de comparación.
Artifact Analysis no es compatible con los contenedores de Windows Server.
Interfaces de Artifact Analysis
En la consola de Google Cloud, puedes ver las vulnerabilidades de imágenes y los metadatos de los contenedores en Artifact Registry.
Puedes usar gcloud CLI para ver las vulnerabilidades y los metadatos de las imágenes.
También puedes usar la API de REST de Artifact Analysis para realizar cualquiera de estas acciones. Al igual que con otras APIs de Cloud Platform, debes autenticar el acceso con OAuth2. Una vez que te hayas autenticado, también puedes usar la API para crear casos y notas personalizados y ver los casos de vulnerabilidades.
La API de Artifact 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 usar la autorización binaria para crear una lista de entidades permitidas de vulnerabilidades según la información de vulnerabilidades que proporciona Artifact Analysis como parte de tu canalización de Cloud Build. Si las vulnerabilidades infringen la política en la lista de entidades permitidas, la compilación falla.
También puedes integrar Artifact Analysis en la autorización binaria para crear certificaciones, lo que puede evitar que las imágenes de contenedor con problemas de seguridad conocidos se ejecuten en tu entorno de implementación.
Fuentes de vulnerabilidades
En la siguiente sección, se enumeran las fuentes de vulnerabilidades que usa Artifact Analysis para obtener datos de CVE.
Análisis de paquetes del SO
Artifact Analysis usa las siguientes fuentes:
- SO AlmaLinux
- Alpine
- CentOS: Red Hat y CentOS comparten la misma fuente de datos de vulnerabilidades. Debido a que los paquetes de CentOS se publican después de los de Red Hat, es posible que una solución disponible para una vulnerabilidad en Red Hat tarde un tiempo en estar disponible para CentOS.
- Chainguard
- Debian
- Google Distroless se basa en Debian y usa los datos de vulnerabilidad de Debian.
- Base de datos nacional de vulnerabilidades
- Red Hat Enterprise Linux (RHEL)
- Imagen base universal (UBI) de Red Hat
- Rocky Linux
- SUSE Linux Enterprise Server (SLES)
- Ubuntu
- Wolfi
Análisis de paquetes de idioma
Artifact Analysis admite el análisis de vulnerabilidades para paquetes de lenguaje dentro de una imagen de contenedor. Los datos de vulnerabilidad se obtienen de la base de datos de asesoría de GitHub.
En la mayoría de los casos, a cada vulnerabilidad se le asigna un ID de CVE, que se convierte en el identificador principal de esa vulnerabilidad. En los casos en que no hay un ID de CVE asignado a una vulnerabilidad, se asigna un ID de GHSA como identificador. Si más adelante esa vulnerabilidad obtiene un ID de CVE, el ID de vulnerabilidad se actualiza para que coincida con el CVE. Consulta Cómo verificar si hay una vulnerabilidad específica en un proyecto para obtener más información.
Versiones de SO compatibles
Artifact Analysis admite el análisis de vulnerabilidades para las siguientes versiones del software del sistema operativo:
- SO AlmaLinux: Versiones 8, 9 y versiones anteriores
- Alpine Linux: Versiones: 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18, 3.19, 3.20
- CentOS: Versiones: 6, 7, 8 y versiones anteriores
- Chainguard: Actualizaciones continuas en un solo segmento de lanzamiento.
- Debian GNU/Linux: Versiones 9, 10, 11 y 12
- Red Hat Enterprise Linux (RHEL): Se admiten las versiones 6, 7, 8, 9 y las versiones menores para análisis de registro automáticos.
- Red Hat Universal Base Image (UBI): Versiones 8, 9 y versiones secundarias
- Rocky Linux: Versiones 8, 9 y versiones anteriores
- SUSE Linux Enterprise Server (SLES): Versiones 12, 15 y versiones secundarias. SLES para SAP también es compatible con las mismas versiones
- Ubuntu: Versiones 12.04, 12.10, 13.04, 14.04, 14.10, 15.04, 15.10, 16.04, 16.10, 17.04, 17.10, 18.04, 18.10, 20.04, 20.10, 21.04, 21.10, 22.04, 22.10, 23.04, 23.10 y 24.04
- Wolfi: Actualizaciones continuas en un solo segmento de lanzamiento.
Limitaciones
- Artifact Analysis proporciona resultados del análisis de vulnerabilidades de RHEL según la versión secundaria más reciente de cada versión principal publicada. Es posible que haya errores en el análisis de los resultados de las versiones secundarias anteriores de RHEL.
- La versión 9 de RHEL no es compatible con el análisis a pedido.
Administradores de paquetes y control de versiones semántico
- Go: Artifact Analysis informa vulnerabilidades de paquetes en la biblioteca estándar de Go y paquetes externos de Go que no se incluyen en la biblioteca estándar. Las vulnerabilidades se informan con una etiqueta diferente para cada tipo de paquete.
- Java: Artifact Analysis admite paquetes de Maven que siguen las convenciones de nombres de Maven. Si la versión del paquete incluye espacios, no se analizará.
- Node.js: La coincidencia de versiones de paquetes sigue la especificación de control de versiones semántico.
- PHP: Artifact Analysis analiza los paquetes de Composer. Consulta Control de versiones semánticas de Composer.
- Python: La coincidencia de versiones de Python sigue la semántica de PEP 440.
- Ruby: Artifact Analysis analiza los paquetes de RubyGems. Consulta el control de versiones semántico de RybyGems.
- Rust: Artifact Analysis analiza los paquetes de Cargo. Consulta Control de versiones semánticas de Rust.
- .NET: Artifact Analysis analiza los paquetes de NuGet. Consulta el control de versiones semántico de NuGet.