La API de On-Demand Scanning te permite analizar imágenes almacenadas de forma local en tu computadora o de forma remota en Artifact Registry o Container Registry. Puedes usar On-Demand Scanning para analizar imágenes en tu canalización de CI/CD en busca de vulnerabilidades del sistema y de paquetes de Java (Maven) antes de decidir si las almacenarás en un registro. Consulta la página Precios para obtener información sobre los precios.
En esta página, se describe cómo analizar manualmente las imágenes de contenedor en busca de vulnerabilidades del sistema y vulnerabilidades de paquetes de Maven.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Agrega el componente local-extract a tu instalación de Google Cloud CLI
Cómo usar el Administrador de componentes de Google Cloud CLI
El administrador de componentes te pedirá que instales los componentes necesarios la primera vez que ejecutes el comando de análisis.
Cómo usar el administrador de paquetes del sistema
-
Para Debian/Ubuntu:
sudo apt install google-cloud-sdk-local-extract
-
Para Red Hat/Fedora/CentOS:
sudo dnf install google-cloud-sdk-local-extract
Como alternativa, puedes reemplazar
dnf
poryum
en el comando anterior.
-
Para Debian/Ubuntu:
- Otorga el rol de IAM Administrador de análisis a pedido al usuario o a la cuenta de servicio que usarás con el análisis a pedido. Si usas la cuenta del propietario del proyecto para ejecutar los análisis, puedes omitir este paso.
Búsqueda local:
gcloud artifacts docker images scan IMAGE_URI \ [--location=(us,europe,asia)] [--async]
Para una imagen local, usa uno de los siguientes formatos para IMAGE_URI:
REPOSITORY:TAG
REPOSITORY
Análisis remoto:
gcloud artifacts docker images scan IMAGE_URI \ --remote [--location=(us,europe,asia)] [--async]
Para una imagen remota, usa uno de los siguientes formatos para IMAGE_URI:
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID@sha256:HASH
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID:HASH
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID
HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
HOSTNAME/PROJECT_ID/IMAGE_ID:HASH
HOSTNAME/PROJECT_ID/IMAGE_ID
En el caso de las imágenes en Artifact Registry, IMAGE_URI debe incluir
REPOSITORY_ID
.--location
es una marca opcional para seleccionar manualmente la multirregión en la que se realiza el análisis. Elegir una multirregión más cercana a tu ubicación física minimiza la latencia. Las ubicaciones disponibles sonus
,europe
yasia
. La ubicación predeterminada esus
.--async
es una marca opcional para ejecutar el proceso de análisis de forma asíncrona. Si omites esta marca, tu terminal se bloqueará hasta que se complete el proceso de análisis.SCAN_NAME es el nombre del análisis. Puedes encontrarlo en la última línea del resultado cuando ejecutas un análisis síncrono o sondeas la operación de larga duración, después de que finaliza el análisis.
--limit=X
es una marca opcional que limita la cantidad de ocurrencias que se muestran en el resultado.X
es un valor numérico.- Usa la API de On-Demand Scanning en tu canalización de Cloud Build.
- Usa Artifact Analysis para analizar y actualizar continuamente la información sobre vulnerabilidades de las imágenes almacenadas en Artifact Registry.
Analiza una imagen de contenedor
Para los análisis locales y remotos, puedes usar las siguientes marcas opcionales:
Análisis síncrono
En el siguiente ejemplo, se muestra el resultado de un análisis síncrono, sin la marca --async
:
$ gcloud artifacts docker images scan jenkins:2.60.3-alpine ✓ Scanning container image ✓ Locally extracting packages and versions from local container image ✓ Remotely initiating analysis of packages and versions ✓ Waiting for analysis operation to complete [projects/my-project/locations/us/operations/87d2e137-1d1c-4790-8e5e-daf6c96ae7d7] Done. done: true metadata: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata createTime: '2021-01-05T23:03:04.185261Z' resourceUri: jenkins:2.60.3-alpine name: projects/my-project/locations/us/operations/87d2e137-1d1c-4790-8e5e-daf6c96ae7d7 response: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse scan: projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a
Usa el nombre del análisis para recuperar los resultados de vulnerabilidades. En el ejemplo, el nombre del análisis es el valor de scan
en la última línea del mensaje de salida.
Análisis asíncrono
En el siguiente ejemplo, se muestra el resultado de un análisis asíncrono:
$ gcloud artifacts docker images scan jenkins:2.60.3-alpine --async ✓ Scanning container image ✓ Locally extracting packages and versions from local container image ✓ Remotely initiating analysis of packages and versions Done. Check operation [projects/cloud-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16] for status. metadata: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata createTime: '2021-01-05T23:04:54.393510Z' resourceUri: jenkins:2.60.3-alpine name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16
Esto inicia una operación de larga duración y muestra su ID sin bloquear la terminal. Usa el ID de la operación, el valor de name
en la última línea del mensaje de salida, para sondear la operación.
Sondea la operación de larga duración
Usa el ID de operación del resultado del comando de análisis asíncrono para verificar el estado de la operación:
gcloud artifacts docker images get-operation LRO_ID
Aquí, LRO_ID es el ID de la operación de larga duración.
Continuando con el ejemplo de la sección de análisis asíncrono, para verificar el estado de la operación, haz lo siguiente:
$ gcloud artifacts docker images get-operation \ projects/cloud-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16 done: true metadata: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesMetadata createTime: '2021-01-05T23:04:54.393510Z' resourceUri: jenkins:2.60.3-alpine name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16 response: '@type': type.googleapis.com/google.cloud.ondemandscanning.v1.AnalyzePackagesResponse scan: projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a
Si el resultado incluye la línea done: true
, significa que se completó la operación de análisis. Usa el nombre del análisis para recuperar los resultados de vulnerabilidades.
El nombre del análisis es el valor de scan
en la última línea del mensaje de salida.
Recupera los resultados del análisis
Para recuperar los resultados del análisis después de que se complete la operación, usa el siguiente comando:
gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]
Aquí:
Por ejemplo:
createTime: '2021-06-29T17:01:18.819477Z' kind: VULNERABILITY name: projects/my-project/locations/us/occurrences/06305977-f557-4772-8586-4260684291d3 noteName: projects/my-project/notes/CVE-2014-0114 resourceUri: jenkins:2.60.3-alpine updateTime: '2021-06-29T17:01:18.819477Z' vulnerability: cvssScore: 4.3 effectiveSeverity: MEDIUM longDescription: http/conn/ssl/SSLConnectionSocketFactory.java in ... packageIssue: - affectedCpeUri: cpe:/o:alpine:alpine_linux:3.13 affectedPackage: org.apache.httpcomponents:httpclient affectedVersion: fullName: 4.0.2 kind: NORMAL name: 4.0.2 effectiveSeverity: MEDIUM fixedCpeUri: cpe:/o:alpine:alpine_linux:3.13 fixedPackage: org.apache.httpcomponents:httpclient fixedVersion: fullName: 4.3.6 kind: NORMAL name: 4.3.6 packageType: MAVEN relatedUrls: - label: More Info url: https://security-tracker.debian.org/tracker/CVE-2015-5262 severity: MEDIUM shortDescription: CVE-2015-5262
El resultado de este comando es una lista de ocurrencias en formato de Grafeas. En este caso, se muestra una vulnerabilidad de gravedad media que se encontró en la imagen. Las vulnerabilidades de paquetes de Maven contienen el campo packageType:MAVEN
.
Los resultados del análisis están disponibles durante 48 horas después de que se completa la operación de análisis.