Analise encomendas automaticamente

Este documento explica como ativar a API Container Scanning, enviar uma imagem para o Artifact Registry e ver a lista de vulnerabilidades encontradas na imagem.

A análise de artefactos armazena informações de vulnerabilidade como notas. É criada uma ocorrência para cada instância de uma nota associada a uma imagem. Consulte a vista geral e os documentos de preços para mais informações.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Artifact Registry and Container Scanning APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Crie um repositório no Artifact Registry e envie um pacote com o código da sua aplicação para o repositório. Se não estiver familiarizado com a gestão de pacotes no Artifact Registry, consulte os seguintes tópicos:
    1. Armazene pacotes Java no Artifact Registry
    2. Armazene pacotes Node.js no Artifact Registry
    3. Armazene pacotes Python no Artifact Registry

A ativação desta API também ativa a análise de pacotes de idiomas no Artifact Registry. Consulte os tipos de pacotes suportados.

Veja as vulnerabilidades do pacote

A análise de artefactos analisa novos pacotes quando são carregados para o Artifact Registry. Esta análise extrai informações sobre o pacote e as respetivas dependências.

Pode ver ocorrências de vulnerabilidades para as suas imagens no Artifact Registry através da Google Cloud consola, da CLI do Google Cloud ou da API Container Analysis. Se uma imagem tiver vulnerabilidades, pode obter os detalhes.

A análise de artefactos continua a analisar imagens e pacotes desde que tenham sido extraídos nos últimos 30 dias. Após 30 dias, os metadados das imagens e dos pacotes digitalizados deixam de ser atualizados, e os resultados ficam desatualizados.

A análise de artefactos arquiva metadados desatualizados há mais de 90 dias. Estes metadados arquivados só podem ser avaliados através da API. Pode voltar a analisar uma imagem com metadados desatualizados ou arquivados ao extrair essa imagem. A atualização dos metadados pode demorar até 24 horas. Não é possível voltar a analisar pacotes com metadados desatualizados ou arquivados.

Veja ocorrências na Google Cloud consola

Para ver as vulnerabilidades num pacote:

  1. Obtenha a lista de repositórios.

    Abra a página Repositórios

  2. Na lista de repositórios, clique num repositório.

  3. Na lista de pacotes, clique num nome de pacote.

    Os totais de vulnerabilidades para cada pacote são apresentados na coluna Vulnerabilidades.

    Um pacote analisado com vulnerabilidades

  4. Para ver a lista de vulnerabilidades de um pacote, clique no link na coluna Vulnerabilidades.

    A secção Resultados da análise apresenta um resumo dos tipos de pacotes analisados, do total de vulnerabilidades, das vulnerabilidades com correções disponíveis, das vulnerabilidades sem correções e da gravidade efetiva.

    A página de resultados da análise apresenta vulnerabilidades, correções e gravidade efetiva

    A tabela de vulnerabilidades apresenta o nome das vulnerabilidades e exposições comuns (CVE) para cada vulnerabilidade encontrada, a gravidade efetiva, a pontuação do sistema de pontuação de vulnerabilidades comuns (CVSS), as correções (quando disponíveis), o nome do pacote que contém a vulnerabilidade e o tipo de pacote. Pode filtrar e ordenar estes ficheiros para verificar um ficheiro, um diretório ou um tipo de ficheiro específico por extensão de ficheiro. Google Cloud A Play Console apresenta até 1200 vulnerabilidades por página nesta tabela.

  5. Para ver detalhes sobre uma CVE específica, clique no nome da CVE.

  6. Para ver detalhes da ocorrência de vulnerabilidades, como o número da versão e a localização afetada, na linha com o nome da vulnerabilidade, clique em Ver ou Ver corrigido na linha com o nome da vulnerabilidade. O texto do link é Ver para vulnerabilidades sem uma correção e Ver corrigido para vulnerabilidades às quais foi aplicada uma correção.

Veja ocorrências através do gcloud

Para ver ocorrências de pacotes no Artifact Registry, execute o comando gcloud artifacts versions describe:

gcloud artifacts versions describe VERSION \
    --location=LOCATION --repository=REPOSITORY --package=PACKAGE --show-package-vulnerability

Onde:

  • VERSION é a versão do pacote para a qual está a ver ocorrências.
  • LOCATION é a localização regional ou multirregional do repositório.
  • REPOSITORY é o nome do repositório onde o pacote está armazenado.
  • PACKAGE é o nome do pacote no repositório. Não pode especificar uma etiqueta de pacote com este comando.

Veja ocorrências através da API

Para obter uma lista de ocorrências no 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

Para receber um resumo das vulnerabilidades no 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:vulnerabilitySummary

Para ver 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

Filtre ocorrências

Pode usar strings de filtro nos comandos gcloud e na API Artifact Analysis para filtrar ocorrências antes de as ver. As secções seguintes descrevem os filtros de pesquisa suportados.

Veja ocorrências de um tipo específico

Pode usar o valor kind para filtrar por tipo de ocorrência. Veja os tipos disponíveis.

Os exemplos seguintes demonstram como filtrar ocorrências de vulnerabilidades de pacotes:

gcloud

A filtragem de ocorrências não é suportada na CLI do Google Cloud para a análise baseada em pacotes.

API

Na consulta da API, use a seguinte expressão de filtro:

kind="PACKAGE_VULNERABILITY" AND resourceUrl="RESOURCE_URL"

Onde:

  • PACKAGE_VULNERABILITY é o tipo de ocorrência.
  • RESOURCE_URL é o URL completo do pacote no formato projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID:
    • PROJECT_ID é o Google Cloud ID do projeto da consola.
    • LOCATION é a localização regional ou multirregional do repositório.
    • REPOSITORY é o nome do repositório onde a imagem está armazenada.
    • PACKAGE_ID é o nome do pacote onde a imagem está armazenada.
    • PACKAGE_TYPE é o tipo de pacote de idiomas da aplicação. Os tipos disponíveis são: pythonPackages, mavenArtifacts e npmPackages.
    • VERSION é o número da versão do pacote.

Pode usar a função hasPrefix para filtrar com um âmbito mais amplo.

Por exemplo, os seguintes filtros para ocorrências de um tipo específico em várias versões do mesmo pacote:

kind="NOTE_KIND" AND has_prefix(resourceUrl, "RESOURCE_URL_PREFIX")

Onde:

  • RESOURCE_URL_PREFIX especifica uma substring de um URL de recurso.
    • Para filtrar todas as versões de um pacote, omita a versão. Use o formato:projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID
    • Para filtrar todos os pacotes num projeto, especifique apenas a localização do recurso e o projeto. Use o formato: projects/PROJECT_ID/locations/LOCATION

Veja ocorrências de vulnerabilidades

Pode ver listas de ocorrências de vulnerabilidades através da CLI gcloud ou da API Artifact Analysis.

gcloud

Para obter uma lista de ocorrências de vulnerabilidades para um pacote, use a flag --show-package-vulnerability:

gcloud artifacts versions describe VERSION_ID --repository=REPOSITORY_ID
  --package=GROUP_ID:ARTIFACT_ID --show-package-vulnerability

Onde:

  • VERSION é o número da versão do pacote.
  • REPOSITORY é o nome do repositório onde o pacote está armazenado.
  • GROUP_ID é o identificador do grupo do seu pacote.
  • ARTIFACT_ID é o identificador do artefacto do seu pacote.

API

Na consulta da API, use a seguinte expressão de filtro:

GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=kind%3D%22VULNERABILITY%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22

Onde:

  • ENCODED_RESOURCE_URL é o caminho codificado para a sua imagem. Para saber mais sobre a codificação, consulte o artigo Codificação URL.

Para mais informações sobre a utilização da API, consulte projects.occurrences.get.

Veja imagens associadas a uma nota específica

Pode obter uma lista de recursos associados a um ID de nota específico. Por exemplo, pode listar imagens com uma vulnerabilidade CVE específica.

Para apresentar uma lista de todas as imagens num projeto associadas a uma nota específica, use a seguinte expressão de filtro:

gcloud

A filtragem de ocorrências não é suportada na CLI do Google Cloud para a análise baseada em pacotes.

API

GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/occurrences?filter=noteProjectId%3D%22goog-vulnz%22%20AND%20resourceUrl%3D%22ENCODED_RESOURCE_URL%22%20AND%20noteId%3D%22NOTE_ID%22

Onde:

  • goog-vulnz é o PROVIDER_PROJECT_ID para a análise de vulnerabilidades da Artifact Analysis. Se estiver a usar a análise de artefactos num projeto personalizado, pode substituir este valor pelo ID do seu próprio projeto de fornecedor.
  • ENCODED_RESOURCE_URL é o caminho codificado para a sua imagem. Para saber mais sobre a codificação, consulte o artigo Codificação URL.
  • NOTE_ID é o ID da nota. Por exemplo, quando vê uma vulnerabilidade nos resultados da análise de artefactos, utiliza frequentemente a formatação do ID CVE semelhante a CVE-2019-12345.

Para verificar uma imagem específica para uma nota específica, use a seguinte expressão de filtro:

gcloud

A filtragem de ocorrências não é suportada na CLI do Google Cloud para a análise baseada em pacotes.

API

Na sua consulta da API, adicione a seguinte expressão de filtro:

resourceUrl="RESOURCE_URL" AND noteProjectId="goog-vulnz" \
AND noteId="NOTE_ID"

Onde:

  • RESOURCE_URL é o URL completo do pacote no formato projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/packages/PACKAGE_ID/PACKAGE_TYPE/VERSION_ID.
  • goog-vulnz é o PROVIDER_PROJECT_ID para a análise de vulnerabilidades da Artifact Analysis.
  • NOTE_ID é o ID da nota. As notas relacionadas com a segurança são, muitas vezes, formatadas como CVE-2019-12345.

O que se segue?