Quando você souber de uma nova vulnerabilidade, é importante agir rapidamente. Esta página oferece uma lista de chamadas e filtros de API essenciais pré-criados para você. Use essas chamadas de API para recuperar os resultados da verificação da Artifact Analysis e coletar informações sobre o status dos artefatos.
Este conteúdo foi desenvolvido para uso com metadados de leitura automática. Se suas imagens tiverem excedido o período de 30 dias da análise contínua, você poderá executar uma nova verificação enviando para o Artifact Registry novamente.
Todos os exemplos nesta página acessam a API diretamente, mas você também pode usar as bibliotecas de cliente da Análise de contêineres ou os comandos do gcloud.
Permissões necessárias
Todos esses exemplos usam o método da API ListOccurrences
. Para chamar esse método,
você precisa do papel Visualizador de ocorrências do Container Analysis
(roles/containeranalysis.occurrences.viewer)
para o projeto que está
analisando.
Se você está analisando projetos que são seus, já tem as permissões necessárias.
Se você estiver analisando projetos que não são seus, use as instruções de gerenciamento de acesso do IAM para conceder permissões.
Para mais informações sobre os tipos de acesso para provedores e clientes que usam Artifact Analysis, consulte permissões.
Conferir todos os metadados de vulnerabilidade de uma imagem
Use o filtro KIND="VULNERABILITY"
com o ID do projeto e o URL do recurso
completo da imagem, incluindo https://
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"VULNERABILITY\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Substitua:
- PROJECT_ID é o ID do projeto no Google Cloud. Para conferir uma
lista dos seus projetos, use
gcloud projects list
. - RESOURCE_URL é o URL completo da imagem, no
formato
https://HOSTNAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Usehttps://
no início do URL. Se você precisar encontrar o URL de uma imagem, use a chamada em "Quero entender melhor todos os metadados do meu projeto".
A saída inclui uma lista de vulnerabilidades com detalhes, como a gravidade, as opções de mitigação, se disponíveis, e o nome do pacote que contém a vulnerabilidade.
Verificar uma vulnerabilidade específica em um projeto
Na maioria dos casos, Artifact Analysis usa o CVE ID como o identificador de vulnerabilidade. No entanto, há algumas vulnerabilidades listadas no GitHub Advisory Database que não têm um ID de CVE associado. Nesse caso, Artifact Analysis usa o ID da GHSA.
O ID da vulnerabilidade é incluído como parte do campo noteName
. Ele começa com
o prefixo CVE
para IDs de CVE e GHSA
para IDs de GHSA. Por exemplo, se a
saída a seguir for o resultado da execução do comando para
ver todas as vulnerabilidades de uma imagem:
vulnerabilities:
HIGH:
- name: projects/my-project/occurrences/1234fh2c-699a-462f-b920-93a80f56f544
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/CVE-2021-32798
kind: VULNERABILITY
...
- name: projects/my-project/occurrences/OCCURRENCE_ID
resourceUri: https://my_region-docker.pkg.dev/my-project/my-repo/my-image@sha256:8a1a79b587797c5164ec95977cf7aaaa828694a615947bdaed6a327d5b6a17bb
noteName: projects/goog-vulnz/notes/GHSA-884p-74jh-xrg2
kind: VULNERABILITY
...
A primeira vulnerabilidade tem o ID CVE-2021-32798
, e a segunda tem o ID
GHSA-884p-74jh-xrg2
.
Conseguir o identificador da vulnerabilidade.
Use o ID da CVE ou da GHSA na expressão de filtro a seguir para extrair uma lista de imagens afetadas:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"VULN_ID\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Substitua:
- PROJECT_ID é o ID do projeto no Google Cloud. Para conferir uma
lista dos seus projetos, use
gcloud projects list
. - VULN_ID é o ID da vulnerabilidade. O ID da CVE ou
o número de ID da GHSA, como
CVE-2021-32798
ouGHSA-884p-74jh-xrg2
.
Por exemplo, a chamada a seguir demonstra como recuperar os resultados da verificação de
imagens no seu projeto que têm uma ocorrência de CVE-2023-23915
:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(noteProjectId=\"goog-vulnz\" AND noteId=\"CVE-2023-23915\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Substitua:
- PROJECT_ID é o ID do projeto no Google Cloud. Para conferir uma
lista dos seus projetos, use
gcloud projects list
.
Pesquisar vulnerabilidades em vários projetos
Use o globbing do curl para fazer consultas em projetos.
Por exemplo, o snippet a seguir define uma variável para conter dois IDs de projeto e, em seguida, envia uma chamada de API para cada projeto para pesquisar ocorrências.
PROJECT_IDS="PROJECT_ID_1,PROJECT_ID_2"
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://containeranalysis.googleapis.com/v1/projects/{$PROJECT_IDS}/occurrences"
Substitua:
- PROJECT_ID_1 é o ID do projeto do Google Cloud do primeiro projeto que você quer examinar.
- PROJECT_ID_2 é o ID do projeto do Google Cloud para o segundo projeto que você quer examinar.
Se você precisar encontrar os IDs dos projetos, acesse uma lista deles usando
gcloud projects list
.
Não há suporte para uma única chamada de API em vários projetos.
Entender todos os metadados de um projeto
Solicite todas as ocorrências associadas ao ID do 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
Substitua:
- PROJECT_ID é o ID do projeto no Google Cloud.
A saída inclui informações de vulnerabilidade e outros tipos de metadados com suporte associados ao seu projeto. Por exemplo, seu projeto pode ter detalhes de build ou atestados.
Consultar uma ocorrência específica para todos os detalhes disponíveis
Para saber mais sobre uma ocorrência específica, use a seguinte solicitação.
Por exemplo, se você estiver usando o Pub/Sub para receber notificações sobre ocorrências de vulnerabilidade, o Pub/Sub vai enviar detalhes básicos para ajudar a identificar a ocorrência que mudou e quando. O payload inclui um ID de ocorrência. Você pode usar o ID da ocorrência para consultar detalhes e ajudar a classificar os problemas e tomar medidas.
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
Substitua:
- PROJECT_ID é o ID do projeto no Google Cloud.
- OCCURRENCE_ID é um valor numérico da lista de ocorrências do exemplo anterior. Ou, se você receber uma mensagem do Pub/Sub, use o valor numérico no final do URL naquela mensagem.
A saída inclui informações como tipo de pacote, gravidade da vulnerabilidade, pontuação CVSS e informações sobre correções, se disponíveis.
A seguir
- Saiba mais sobre as opções de filtragem de metadados.
- Fazer uma verificação manual sob demanda.
- Conheça as práticas recomendadas para proteger sua cadeia de suprimentos de software.