A API On-Demand Scanning permite verificar imagens armazenadas localmente no computador ou remotamente no Artifact Registry ou no Container Registry. Isso oferece controle granular sobre os contêineres que você quer verificar quanto a vulnerabilidades. Você pode usar a verificação sob demanda para verificar imagens no seu pipeline de CI/CD antes de decidir se elas serão armazenadas em um registro. Consulte a página de preços para mais informações.
Esta página descreve como verificar manualmente imagens de contêiner com a verificação sob demanda.
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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the On-Demand Scanning API.
- Install the Google Cloud CLI.
-
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.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Adicione o componente local-extract à instalação da Google Cloud CLI
Como usar o Gerenciador de componentes da CLI do Google Cloud
O gerenciador de componentes vai solicitar a instalação dos componentes necessários na primeira vez que você executar o comando de verificação.
Como usar o gerenciador 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
Como alternativa, substitua
dnf
poryum
no comando anterior.
-
Para Debian/Ubuntu:
- Conceda o papel do IAM Administrador de verificação sob demanda à conta de usuário ou de serviço que você vai usar com a verificação sob demanda. Se você estiver usando a conta de proprietário do projeto para executar as verificações, pule esta etapa.
Como verificar uma imagem de contêiner
Busca local:
gcloud artifacts docker images scan IMAGE_URI \ [--location=(us,europe,asia)] [--async]
Para uma imagem local, use um dos seguintes formatos para o IMAGE_URI:
REPOSITORY:TAG
REPOSITORY
Varredura 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 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
Para imagens no Artifact Registry, o IMAGE_URI precisa incluir o
REPOSITORY_ID
.
Para verificações locais e remotas, use as seguintes flags opcionais:
--location
é uma flag para selecionar manualmente a multirregião em que a verificação ocorre. Escolher uma multirregião mais próxima do seu local físico minimiza a latência. Os locais disponíveis são:us
,europe
easia
. O local padrão éus
.--async
é uma flag para executar o processo de verificação de forma assíncrona. Se você omitir essa flag, o terminal será bloqueado até que o processo de leitura seja concluído.
Verificação síncrona
O exemplo a seguir mostra a saída de uma verificação síncrona, sem a
flag --async
:
$ gcloud artifacts docker images scan ubuntu:latest ✓ 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: ubuntu:latest 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 verificação para extrair os resultados de vulnerabilidade.
O nome da verificação é o valor de scan
na última linha da mensagem de saída.
Verificação assíncrona
O exemplo a seguir mostra a saída da execução de uma verificação assíncrona:
$ gcloud artifacts docker images scan ubuntu:latest --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: ubuntu:latest name: projects/my-project/locations/us/operations/2e1a6b1f-16e5-4427-ac86-72c998a3dd16
Isso inicia uma operação de longa duração e retorna o ID dela sem bloquear o
terminal. Use o ID da operação, o valor de name
na última linha da
mensagem de saída, para pesquisar a operação.
Como pesquisar a operação de longa duração
Use o ID da operação, da saída do comando de verificação assíncrona, para verificar o status da operação.
gcloud artifacts docker images get-operation LRO_ID
em que LRO_ID é o ID da operação de longa duração.
Continuando com o exemplo da seção de verificação assíncrona, para verificar o status 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: ubuntu:latest 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 a saída incluir a linha done: true
, a operação de verificação será
concluída. Use o nome da verificação para extrair os resultados de vulnerabilidade.
O nome é o valor de scan
na última linha da mensagem de saída.
Extrair os resultados da verificação
Para extrair os resultados da verificação após a conclusão da operação, use o seguinte comando:
gcloud artifacts docker images list-vulnerabilities SCAN_NAME [--limit=X]
Em que:
- SCAN_NAME é o nome da verificação. Ela fica na parte de baixo da saída quando você pesquisa a operação de longa execução, depois que a verificação é concluída.
--limit=X
é uma flag opcional que limita o número de ocorrências mostradas na saída.X
é um valor numérico.
Exemplo:
gcloud artifacts docker images list-vulnerabilities \ projects/my-project/locations/us/scans/2fe2bfb8-f0c5-4dd6-a8c8-38961869767a createTime: '2021-01-05T23:05:42.956227Z' kind: VULNERABILITY name: projects/my-project/locations/us/occurrences/f82a1efd-a261-4973-acbd-f9854d8b8135 noteName: projects/goog-vulnz/notes/CVE-2018-1000654 resourceUri: ubuntu:latest updateTime: '2021-01-05T23:05:42.956227Z' vulnerability: cvssScore: 7.1 cvssv3: attackComplexity: ATTACK_COMPLEXITY_LOW attackVector: ATTACK_VECTOR_NETWORK availabilityImpact: IMPACT_HIGH baseScore: 7.2 confidentialityImpact: IMPACT_HIGH exploitabilityScore: 1.2 impactScore: 5.9 integrityImpact: IMPACT_HIGH privilegesRequired: PRIVILEGES_REQUIRED_HIGH scope: SCOPE_UNCHANGED userInteraction: USER_INTERACTION_NONE effectiveSeverity: MEDIUM
A saída desse comando é uma lista de ocorrências no formato Grafeas. Nesse caso, ele mostra uma vulnerabilidade de gravidade média encontrada na imagem.
Os resultados da verificação ficam disponíveis por 48 horas após a conclusão da operação.
A seguir
- Use a API On-Demand Scanning no seu pipeline do Cloud Build.
- Use o Artifact Analysis para verificar e atualizar continuamente as informações de vulnerabilidade das imagens armazenadas no Artifact Registry.