Neste documento, você vai aprender a ativar a API Container Scanning, enviar uma imagem para o Artifact Registry e conferir a lista de vulnerabilidades encontradas na imagem.
O Artifact Analysis fornece informações sobre vulnerabilidade das imagens de contêiner no Artifact Registry. Os metadados são armazenados como notas. Uma ocorrência é criada para cada instância de nota associada a uma imagem. Consulte os documentos de visão geral e preços para mais informações.
A ativação dessa API também ativa a verificação de pacotes de linguagem no Artifact Registry. Confira os tipos de pacotes compatíveis.
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs.
-
Install the Google Cloud CLI.
-
Se você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Container Scanning APIs.
-
Install the Google Cloud CLI.
-
Se você estiver usando um provedor de identidade externo (IdP), primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Crie um repositório do Docker no Artifact Registry e envie uma imagem de contêiner para o repositório. Se você não estiver familiarizado com o Artifact Registry, consulte o Guia de início rápido do Docker.
Confira a lista de repositórios.
Na lista de repositórios, clique em um deles.
Na lista de imagens, clique no nome de uma imagem.
O total de vulnerabilidades de cada resumo de imagem é exibido na coluna Vulnerabilidades.
Para ver a lista de vulnerabilidades de uma imagem, clique no link na coluna Vulnerabilidades.
A seção Resultados da verificação mostra um resumo dos tipos de pacotes verificados, o total de vulnerabilidades, as vulnerabilidades com correções disponíveis, as vulnerabilidades sem correções e a gravidade efetiva.
A tabela de vulnerabilidades lista o nome de Vulnerabilidades e Exposições Comuns (CVE, na sigla em inglês) de cada vulnerabilidade encontrada, a gravidade efetiva, a pontuação do Sistema de Pontuação de Vulnerabilidade Comum (CVSS, na sigla em inglês), as correções (quando disponíveis), o nome do pacote que contém a vulnerabilidade e o tipo de pacote.
É possível filtrar e classificar esses arquivos para verificar um arquivo, diretório ou tipo específico por extensão.
O consoleGoogle Cloud mostra até 1.200 vulnerabilidades nessa tabela. Se a imagem tiver mais de 1.200 vulnerabilidades, use a gcloud ou a API para conferir a lista completa.
Para detalhes sobre uma CVE específica, clique no nome dela.
Para ver detalhes da ocorrência de vulnerabilidade, como número da versão e local afetado, clique em Ver ou Ver corrigido na linha com o nome da vulnerabilidade. O texto do link é Ver para vulnerabilidades sem correção e Ver corrigidas para vulnerabilidades em que uma correção foi aplicada.
- LOCATION é o local regional ou multirregional do repositório.
- PROJECT_ID é o ID do projeto Google Cloud .
- REPOSITORY é o nome do repositório em que a imagem está armazenada.
IMAGE_ID é o nome da imagem no repositório. Não é possível especificar uma tag de imagem com esse comando.
Por padrão, o comando retorna as 10 imagens mais recentes. Para mostrar um número diferente de imagens, use a flag
--show-occurrences-from
. Por exemplo, o comando a seguir retorna as 25 imagens mais recentes.gcloud artifacts docker images list --show-occurrences-from=25 \ us-central1-docker.pkg.dev/my-project/my-repo/my-image
- LOCATION é o local regional ou multirregional do repositório.
- PROJECT_ID é o ID do projeto Google Cloud .
- REPOSITORY é o nome do repositório em que a imagem está armazenada.
- IMAGE_ID é o nome da imagem no repositório.
- TAG é a tag da imagem que tem as informações que você quer receber.
- HASH é o resumo da imagem.
- LOCATION é o local regional ou multirregional do repositório.
- PROJECT_ID é o ID do projeto Google Cloud .
- REPOSITORY é o nome do repositório em que a imagem está armazenada.
- IMAGE_ID é o nome da imagem no repositório.
- FILTER_EXPRESSION é uma expressão de filtro de amostra no formato explicado em Filtrar ocorrências de vulnerabilidades.
- PROJECT_ID é o ID do projeto Google Cloud .
- OCCURRENCE_ID é o nome da ocorrência para a qual você quer ver detalhes.
- LOCATION é o local regional ou multirregional do repositório.
- REPOSITORY é o nome do repositório;
- PROJECT_ID é o ID do projeto Google Cloud .
- IMAGE_ID é o ID da imagem que contém as ocorrências que você quer ver.
- LOCATION é o local regional ou multirregional do repositório.
- REPOSITORY é o nome do repositório;
- PROJECT_ID é o ID do projeto Google Cloud .
- IMAGE_ID é o ID da imagem que contém as ocorrências que você quer ver.
- NOTE_KIND é o tipo de nota.
- Por exemplo, use o tipo
DISCOVERY
para listar ocorrências de descoberta. O Artifact Analysis cria essas ocorrências para imagens quando elas são enviadas por push para o Artifact Registry. - Para listar as ocorrências de vulnerabilidade, use o tipo
VULNERABILITY
.
- Por exemplo, use o tipo
-
RESOURCE_URL é o URL completo da imagem
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
- RESOURCE_URL_PREFIX é o prefixo de URL para algumas imagens
- Para listar todas as versões de uma imagem:
https://HOSTNAME/PROJECT_ID/IMAGE_ID@
- Para listar todas as imagens em um projeto:
https://HOSTNAME/PROJECT_ID/
- Para listar todas as versões de uma imagem:
- PROVIDER_PROJECT_ID é o código do projeto provedor. Por
exemplo,
goog-vulnz
fornece a análise de vulnerabilidade padrão. - NOTE_ID é o código da nota. As notas relacionadas à segurança costumam ter o formato
CVE-2019-12345
. -
RESOURCE_URL é o URL completo da imagem
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
Use as notificações do Pub/Sub para receber informações sobre vulnerabilidades e outros metadados.
Crie atestados integrando o Artifact Analysis com a autorização binária para impedir que imagens de contêiner com problemas de segurança conhecidos sejam executadas no seu ambiente de implantação.
Ver vulnerabilidades de imagem
O Artifact Analysis verifica as novas imagens quando elas são enviadas para o Artifact Registry. Essa verificação extrai informações sobre os pacotes do sistema no contêiner.
É possível conferir as ocorrências de vulnerabilidade das suas imagens no registro usando o console Google Cloud , a Google Cloud CLI ou a API Container Analysis. Os detalhes das vulnerabilidades das imagens também estarão disponíveis, caso haja alguma.
O Artifact Analysis só atualiza os metadados de imagens enviadas ou extraídas nos últimos 30 dias. Após 30 dias, os metadados não serão mais atualizados, e os resultados vão ficar desatualizados. Além disso, o Artifact Analysis arquiva metadados que estão desatualizados há mais de 90 dias, e eles não ficam disponíveis no console Google Cloud , na gcloud ou usando a API. Para verificar novamente uma imagem com metadados desatualizados ou arquivados, extraia essa imagem. A atualização dos metadados pode levar até 24 horas.
Ver ocorrências no console do Google Cloud
Para ver as vulnerabilidades em uma imagem:
Conferir ocorrências usando o gcloud
Para ver ocorrências para uma imagem:
Na CLI gcloud, insira o seguinte:
gcloud artifacts docker images list --show-occurrences \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Em que:
Para ver vulnerabilidades de uma tag de imagem ou camada:
Na CLI gcloud, insira o seguinte:
gcloud artifacts docker images describe \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID:TAG \
--show-package-vulnerability
ou
gcloud artifacts docker images describe \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID@sha256:HASH \
--show-package-vulnerability
Em que:
Para filtrar as ocorrências de vulnerabilidades:
Na CLI gcloud, insira o seguinte:
gcloud artifacts docker images list --show-occurrences \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID --occurrence-filter=FILTER_EXPRESSION
Em que:
Ver ocorrências usando a API ou o código
Para ver as ocorrências de uma imagem, use o exemplo de código adequado.
API
Como usar cURL
Para ver uma lista de ocorrências no projeto:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Para ver um resumo das vulnerabilidades no projeto:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences:vulnerabilitySummary
Para receber detalhes sobre uma ocorrência específica:
curl -X GET -H "Content-Type: application/json" -H \
"Authorization: Bearer $(gcloud auth print-access-token)" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences/OCCURRENCE_ID
Em que:
Java
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Java.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Go.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Node.js.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Ruby.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Python.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ver ocorrências no Cloud Build
Se você estiver usando o Cloud Build, também poderá conferir as vulnerabilidades de imagem no painel lateral Insights de segurança no Google Cloud console.
O painel lateral Insights de segurança oferece uma visão geral de alto nível das informações de segurança de build para artefatos armazenados no Artifact Registry. Para saber mais sobre o painel lateral e como usar o Cloud Build para proteger sua cadeia de suprimentos de software, consulte Ver insights de segurança de build.
Filtrar ocorrências
É possível usar as strings de filtro nos comandos gcloud
e na
API Artifact Analysis para filtrar ocorrências antes de visualizá-las. Veja a
descrição dos filtros de pesquisa compatíveis nas seções a seguir.
Visualizar ocorrências de descoberta
Quando uma imagem é enviada inicialmente para o Artifact Registry, o Artifact Analysis cria uma ocorrência de descoberta, que contém informações sobre a verificação inicial da imagem do contêiner.
Para recuperar a ocorrência de descoberta de uma imagem, use a seguinte expressão de filtro:
kind="DISCOVERY" AND resourceUrl="RESOURCE_URL"
gcloud
Ver as ocorrências descobertas de uma imagem:
Nesse caso, a expressão não é usada diretamente no comando, mas as mesmas informações são passadas como argumentos:
gcloud artifacts docker images list --show-occurrences \
--occurrence-filter='kind="DISCOVERY"' --format=json \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Em que:
API
Para recuperar a ocorrência da descoberta, a expressão de filtro precisa ser codificada por URL
e incorporada a uma solicitação GET
da seguinte maneira:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22DISCOVERY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Consulte o endpoint da API
projects.occurrences.get
para mais detalhes.
Java
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Java.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Go.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Node.js.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Ruby.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Python.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ver ocorrências de vulnerabilidade
Para visualizar todas as ocorrências de vulnerabilidade de uma imagem específica, crie uma consulta com uma expressão de filtro:
kind="VULNERABILITY" AND resourceUrl="RESOURCE_URL"
gcloud
Ver ocorrências de vulnerabilidade de uma imagem:
Nesse caso, a expressão não é usada diretamente no comando, mas as mesmas informações são passadas como argumentos:
gcloud artifacts docker images list --show-occurrences \
--occurrence-filter='kind="VULNERABILITY"' --format=json \
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_ID
Em que:
API
O URL do recurso precisa ser codificado por URL e incorporado em uma solicitação GET da seguinte maneira:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22
Consulte o endpoint da API
projects.occurrences.get
para mais detalhes.
Java
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Java.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Go.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Node.js.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Ruby.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Artifact Analysis, consulte Bibliotecas de cliente da Análise de artefatos. Para mais informações, consulte a documentação de referência da API Artifact Analysis Python.
Para autenticar no Artifact Analysis, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Como visualizar ocorrências de um tipo específico
Nos dois exemplos anteriores, a única diferença entre as expressões de filtro
é o valor de kind
, que identifica o tipo de ocorrência. Use
esse campo para limitar a lista de ocorrências a um tipo específico, como uma
vulnerabilidade ou implantação.
Para recuperar ocorrências de uma imagem específica, use esta expressão de filtro:
kind="NOTE_KIND" AND resourceUrl="RESOURCE_URL"
Em que:
A expressão de filtro a seguir recupera ocorrências de um tipo específico em várias imagens:
kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")
Em que:
Ver imagens associadas a uma nota específica
É possível recuperar uma lista de recursos associados a um código de nota específico. Por exemplo, é possível listar imagens com uma vulnerabilidade CVE específica.
Para listar todas as imagens de um projeto que estão associadas a uma nota específica, use a seguinte expressão de filtro:
noteProjectId="PROVIDER_PROJECT_ID" AND noteId="NOTE_ID"
Para verificar uma imagem específica de uma determinada nota, use a seguinte expressão de filtro:
resourceUrl="RESOURCE_URL" AND noteProjectId="PROVIDER_PROJECT_ID" \ AND noteId="NOTE_ID"
Em que:
Por exemplo, para verificar todas as imagens que têm uma ocorrência de CVE-2017-16231 conforme analisado pelo Google, use a seguinte expressão de filtro:
noteProjectId="goog-vulnz" AND noteId="CVE-2017-16231"