Quando ouve falar de uma nova vulnerabilidade, é importante agir rapidamente. Esta página fornece uma lista de chamadas API e filtros essenciais que são pré-criados para si. Use estas chamadas API para obter resultados de análises do Artifact Analysis e recolher informações sobre o estado dos seus artefactos.
Este conteúdo foi concebido para utilização com metadados de análise automática. Se as suas imagens tiverem excedido o período de 30 dias de análise contínua, pode executar uma nova análise enviando novamente para o Artifact Registry.
Todos os exemplos nesta página acedem diretamente à API, mas também pode usar as bibliotecas cliente da Container Analysis ou os comandos gcloud.
Autorizações necessárias
Todos estes exemplos usam o método da API ListOccurrences
. Para chamar este método, precisa da função Container Analysis Occurrences Viewer
(roles/containeranalysis.occurrences.viewer)
para o projeto que está a analisar.
Se estiver a analisar projetos que lhe pertencem, já tem as autorizações necessárias.
Se estiver a analisar projetos que não lhe pertencem, use as instruções de gestão de acesso do IAM para conceder autorizações.
Para mais informações sobre os tipos de acesso para fornecedores e clientes que usam a análise de artefactos, consulte as autorizações.
Veja 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
Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
- RESOURCE_URL é o URL completo da imagem no formato:
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Ohttps://
tem de ser incluído no início do URL. Se precisar de encontrar o URL de uma imagem, pode usar a chamada em Ver todos os metadados de um projeto.
O resultado 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.
Verifique se existe uma vulnerabilidade específica num projeto
Na maioria dos casos, a análise de artefactos usa o ID CVE como o identificador de vulnerabilidade. No entanto, existem algumas vulnerabilidades listadas na base de dados de avisos do GitHub que não têm um ID CVE associado. Neste caso, a análise de artefactos usa o ID da GHSA.
O ID da vulnerabilidade está incluído como parte do campo noteName
. Começa com o prefixo CVE
para IDs CVE e GHSA
para IDs GHSA. Considere o seguinte resultado de exemplo 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
...
Neste exemplo, a primeira vulnerabilidade tem o ID CVE-2021-32798
e a segunda vulnerabilidade tem o ID GHSA-884p-74jh-xrg2
.
Depois de ter o ID da vulnerabilidade, pode executar o seguinte comando para obter uma lista de imagens afetadas no seu projeto que tenham um ID de ocorrência de 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
Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
- VULN_ID é o ID da vulnerabilidade como um ID CVE ou um número de ID GHSA, como
CVE-2021-32798
ouGHSA-884p-74jh-xrg2
.
Pesquise vulnerabilidades em vários projetos
Use globbing do curl para fazer consultas em vários projetos.
Por exemplo, o seguinte fragmento define uma variável para conter dois IDs de projetos e, em seguida, envia uma chamada API para cada projeto para procurar 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"
Onde:
- PROJECT_ID_1 é o Google Cloud ID do projeto do primeiro projeto que quer examinar.
- PROJECT_ID_2 é o Google Cloud ID do projeto do segundo projeto que quer examinar.
Veja todos os metadados de um projeto
Pedir todas as ocorrências associadas ao ID do seu 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
Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
A saída inclui informações sobre vulnerabilidades e outros tipos de metadados suportados associados ao seu projeto. Por exemplo, o seu projeto pode ter detalhes de compilação ou atestações.
Verifique se existe um pacote específico num projeto
A análise de artefactos cria dependências de pacotes para artefactos analisados. Para encontrar todos os artefactos que têm um pacote específico como dependência, pode filtrar 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
Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
- PACKAGE_NAME é o nome do pacote.
Veja todos os metadados do pacote de uma imagem
Para ver todos os diferentes tipos de metadados de pacotes 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
Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
- RESOURCE_URL é o URL completo da imagem, no formato
https://HOST_NAME/PROJECT_ID/IMAGE_ID@sha256:HASH
. Ohttps://
tem de ser incluído no início do URL. Se precisar de encontrar o URL de uma imagem, pode usar 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 das dependências.
Consultar uma ocorrência específica para todos os detalhes disponíveis
Pode executar uma consulta para ver mais detalhes sobre uma ocorrência. Por exemplo, se estiver a usar o Pub/Sub para receber notificações sobre ocorrências de vulnerabilidades, o Pub/Sub envia detalhes básicos para ajudar a identificar a ocorrência que foi alterada e quando a alteração ocorreu.
A carga útil inclui um ID de ocorrência. Pode usar o ID de ocorrência para consultar detalhes que ajudam a fazer a triagem de problemas e a 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
Onde:
- PROJECT_ID é o ID do seu Google Cloud projeto.
OCCURRENCE_ID pode ser qualquer uma das seguintes opções, dependendo do resultado do comando de 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 o tipo de pacote, a gravidade da vulnerabilidade, a pontuação CVSS e informações sobre correções, se disponíveis.
O que se segue?
- Saiba mais acerca das opções de filtragem de metadados.
- Execute uma análise manual a pedido.
- Saiba quais são as práticas recomendadas para proteger a sua cadeia de abastecimento de software.