A API On-Demand Scanning permite-lhe analisar imagens armazenadas localmente no seu computador ou remotamente no Artifact Registry. Pode usar a análise a pedido para analisar imagens no seu pipeline de CI/CD, quanto a vulnerabilidades do sistema e vulnerabilidades de pacotes Java (Maven) antes de decidir se as armazena num registo. Consulte a página de preços para ver informações de preços.
Esta página descreve como analisar manualmente imagens de contentores para verificar vulnerabilidades do sistema e vulnerabilidades de pacotes Maven.
Antes de começar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Adicione o componente local-extract à instalação da CLI Google Cloud
Usar o Gestor de componentes da CLI do Google Cloud
O gestor de componentes pede-lhe que instale os componentes necessários na primeira vez que executar o comando de análise.
Usar o gestor de pacotes do 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
Em alternativa, pode substituir
dnfporyumno comando anterior.
-
Para Debian/Ubuntu:
- Conceda a função de IAM Administrador da análise a pedido ao utilizador ou à conta de serviço que vai usar com a análise a pedido. Se estiver a usar a conta de proprietário do projeto para executar as análises, pode ignorar este passo.
Procura local:
gcloud artifacts docker images scan IMAGE_URI \ [--location=(us,europe,asia)] [--async]Para uma imagem local, use um dos seguintes formatos para o elemento IMAGE_URI:
REPOSITORY:TAGREPOSITORY
Análise remota:
gcloud artifacts docker images scan IMAGE_URI \ --remote [--location=(us,europe,asia)] [--async]Para uma imagem remota, use um dos seguintes formatos para o elemento IMAGE_URI:
HOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID@sha256:HASHHOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_ID:HASHHOSTNAME/PROJECT_ID/REPOSITORY_ID/IMAGE_IDHOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASHHOSTNAME/PROJECT_ID/IMAGE_ID:HASHHOSTNAME/PROJECT_ID/IMAGE_ID
Para imagens no Artifact Registry, o IMAGE_URI tem de incluir o
REPOSITORY_ID.--locationé uma flag opcional para selecionar manualmente a multirregião onde a análise é realizada. A escolha de uma multirregião mais próxima da sua localização física minimiza a latência. As localizações disponíveis são:us,europeeasia. A localização predefinida éus.--asyncé uma flag opcional para executar o processo de procura de forma assíncrona. Se omitir esta flag, o terminal fica bloqueado até o processo de leitura estar concluído.SCAN_NAME é o nome da análise. Pode encontrá-lo na última linha do resultado quando executa uma análise síncrona ou sondar a operação de longa duração, após a conclusão da análise.
--limit=Xé uma flag opcional que limita o número de ocorrências apresentadas no resultado.Xé um valor numérico.- Use a API On-Demand Scanning no seu pipeline do Cloud Build.
- Use a análise de artefactos para analisar e atualizar continuamente as informações de vulnerabilidade das suas imagens armazenadas no Artifact Registry.
Analisar uma imagem de contentor
Para análises locais e remotas, pode usar as seguintes flags opcionais:
Análise síncrona
O exemplo seguinte mostra o resultado de uma análise síncrona, sem a flag --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
Use o nome da análise para obter os resultados de vulnerabilidades. No exemplo, o nome da análise é o valor de scanna última linha da mensagem de saída.
Procura assíncrona
O exemplo seguinte mostra o resultado da execução de uma análise assíncrona:
$ 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
Isto inicia uma operação de longa duração e devolve o respetivo ID sem bloquear o seu terminal. Use o ID da operação, o valor de name na última linha da mensagem de saída, para consultar a operação.
Consultar a operação de longa duração
Use o ID da operação da saída do comando de análise assíncrona para verificar o estado da operação:
gcloud artifacts docker images get-operation LRO_ID
Onde LRO_ID é o ID da operação de longa duração.
Continuando com o exemplo da secção de análise assíncrona, para verificar o estado da operação:
$ 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
Se o resultado incluir a linha done: true, a operação de análise está concluída. Use o nome da análise para obter os resultados de vulnerabilidades.
O nome da análise é o valor de scan na última linha da mensagem de saída.
Obtenha os resultados da análise
Para obter os resultados da análise após a conclusão da operação de análise, use o seguinte comando:
gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]
Onde:
Por exemplo:
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
O resultado deste comando é uma
lista de ocorrências no formato Grafeas. Neste caso, mostra uma vulnerabilidade de gravidade média encontrada na imagem. As vulnerabilidades do pacote Maven contêm o campo packageType:MAVEN.
Os resultados da análise estão disponíveis durante 48 horas após a conclusão da operação de análise.