Quando você ouve falar de uma nova vulnerabilidade, é importante agir rapidamente. Esta página fornece uma lista de chamadas de API e filtros essenciais pré-criados para você. Use essas chamadas de API para recuperar resultados de verificação da Artifact Analysis e coletar informações sobre o status dos seus artefatos.
Esse conteúdo foi desenvolvido para uso com metadados de verificação automática. Se as imagens excederem o período de 30 dias da análise contínua, execute uma nova verificação enviando para o Artifact Registry novamente.
Todos os exemplos nesta página acessam a API diretamente, mas também é possível usar as bibliotecas de cliente do Container Analysis ou os comandos da 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ê estiver analisando projetos de sua propriedade, já terá 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 as permissões.
Ver todos os metadados de vulnerabilidade de uma imagem
Use o filtro kind=VULNERABILITY
com o ID do projeto e o URL completo do recurso 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
Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
- RESOURCE_URL é o URL completo da imagem, no formato:
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Ohttps://
precisa ser incluído no início do URL. Se você precisar encontrar o URL de uma imagem, use a chamada em Ver todos os metadados de um 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 ID do CVE como 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 do GHSA.
O ID da vulnerabilidade está incluído como parte do campo noteName
. Ele começa com o prefixo CVE
para IDs de CVE e GHSA
para IDs de GHSA. Considere o seguinte exemplo de saída ao executar o 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
...
Neste exemplo, a primeira vulnerabilidade tem o ID CVE-2021-32798
, e a
segunda tem o ID GHSA-884p-74jh-xrg2
.
Depois de ter o ID da vulnerabilidade, execute o comando a seguir para recuperar uma lista de imagens afetadas no seu projeto que têm um ID de ocorrência VULN_ID:
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
Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
- VULN_ID é o ID da vulnerabilidade como um ID do CVE ou
um número de ID do GHSA, como
CVE-2021-32798
ouGHSA-884p-74jh-xrg2
.
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 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"
Em que:
- PROJECT_ID_1 é o ID do projeto Google Cloud do primeiro projeto que você quer analisar.
- PROJECT_ID_2 é o ID do projeto Google Cloud do segundo projeto que você quer analisar.
Ver 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
Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
A saída inclui informações de vulnerabilidade e outros tipos de metadados compatíveis associados ao seu projeto. Por exemplo, seu projeto pode ter detalhes de build ou declarações.
Verificar um pacote específico em um projeto
O Artifact Analysis cria dependências de pacotes para artefatos verificados. Para encontrar todos os artefatos que têm um pacote específico como dependência, filtre pelo nome do pacote:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(dependencyPackageName=\"PACKAGE_NAME\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
- PACKAGE_NAME é o nome do pacote.
Ver todos os metadados de pacote de uma imagem
Para conferir todos os tipos diferentes de metadados de pacote de uma imagem,
use o filtro kind=PACKAGE_NAME
com o ID do projeto
e o URL completo do recurso de imagem:
curl -G -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=(kind=\"PACKAGE\" AND resourceUrl=\"RESOURCE_URL\")" \
https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences
Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
- RESOURCE_URL é o URL completo da imagem, no formato
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Ohttps://
precisa ser incluído no início do URL. Se você precisar encontrar o URL de uma imagem, use a chamada de Ver todos os metadados de um projeto.
A saída inclui uma lista de dependências com o nome, a versão e as informações de licença.
Consultar uma ocorrência específica para todos os detalhes disponíveis
É possível executar uma consulta para mais detalhes sobre uma ocorrência. Por exemplo, se você estiver usando o Pub/Sub para receber notificações sobre ocorrências de vulnerabilidade, ele enviará detalhes básicos para ajudar a identificar a ocorrência que mudou e quando a mudança aconteceu.
O payload inclui um ID de ocorrência. Use o ID da ocorrência para consultar detalhes que ajudam a classificar 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
Em que:
- PROJECT_ID é o ID do projeto Google Cloud .
OCCURRENCE_ID pode ser um dos seguintes, dependendo da saída do comando em Ver todos os metadados de um projeto:
- Um valor numérico de uma lista de ocorrências.
- O valor numérico no final do URL de uma mensagem do Pub/Sub.
A saída inclui informações como tipo de pacote, gravidade da vulnerabilidade, pontuação do CVSS e informações sobre correções, se disponíveis.
A seguir
- Saiba mais sobre as opções de filtragem de metadados.
- Faça uma verificação manual sob demanda.
- Aprenda as práticas recomendadas para proteger sua cadeia de suprimentos de software.