O Artifact Analysis oferece duas maneiras de verificar imagens: verificação automática e verificação sob demanda. Este documento descreve os detalhes dos recursos para os dois tipos de verificação.
Artifact Analysis também oferece gerenciamento de metadados. Para saber mais sobre como usar a verificação e o armazenamento de metadados para proteger seu pipeline de CI/CD de ponta a ponta, consulte a Visão geral da análise de artefatos.
Consulte Preços para saber mais sobre os custos associados à verificação de imagens de contêineres.
Esta visão geral pressupõe que você já sabe usar repositórios do Docker no Artifact Registry ou no Container Registry (descontinuado).
Verificação automática
O Artifact Analysis realiza verificações de vulnerabilidades nos seus artefatos no Artifact Registry ou no Container Registry (descontinuado). Artifact Analysis também identifica dependências e licenças para ajudar você a entender a composição do software.
A verificação automática inclui duas tarefas principais: verificação automática e análise contínua.
Verificação por push
O Artifact Analysis verifica novas imagens quando elas são enviadas para o Artifact Registry ou o Container Registry. Essa verificação extrai informações sobre os pacotes no contêiner. As imagens são verificadas apenas uma vez, com base no resumo da imagem. Isso significa que a adição ou modificação de tags não acionará novas verificações.
O Artifact Analysis só detecta vulnerabilidades em pacotes monitorados publicamente quanto a vulnerabilidades de segurança.
Quando a varredura de uma imagem é concluída, o resultado de vulnerabilidade é uma coleção das ocorrências de vulnerabilidade de uma imagem.
Análise contínua
O Artifact Analysis cria ocorrências de vulnerabilidades encontradas quando você faz upload da imagem. Após a verificação inicial, ele monitora continuamente os metadados de imagens digitalizadas no Artifact Registry e no Container Registry em busca de novas vulnerabilidades.
O Artifact Analysis recebe informações de vulnerabilidade novas e atualizadas de origens de vulnerabilidade várias vezes por dia. Quando novos dados de vulnerabilidade chegam, o Artifact Analysis atualiza os metadados das imagens digitalizadas para mantê-los atualizados. O Artifact Analysis atualiza as ocorrências de vulnerabilidade existentes, cria novas ocorrências de vulnerabilidade para novas notas e exclui ocorrências que não são mais válidas.
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 ficarão desatualizados. Além disso, o Artifact Analysis arquiva metadados que estão desatualizados há mais de 90 dias, e eles não estarão disponíveis no console do Google Cloud, no gcloud ou usando a API. Para verificar novamente uma imagem com metadados desatualizados ou arquivados, extraia essa imagem. A atualização de metadados pode levar até 24 horas.
Listas de manifestos
Também é possível usar verificação de vulnerabilidades com listas de manifesto. Uma lista de manifestos é uma lista de ponteiros para manifestos de várias plataformas. Elas permitem que uma única imagem funcione com várias arquiteturas ou variações de um sistema operacional.
A verificação de vulnerabilidades do Artifact Analysis só tem suporte para imagens amd64 do Linux. Se a lista de manifestos apontar para mais de uma imagem Linux amd64, somente a primeira será verificada. Se não houver ponteiros para imagens Linux amd64, você não vai receber resultados de verificação.
Verificação sob demanda
A verificação sob demanda permite verificar imagens de contêiner localmente no computador ou no registro usando a CLI gcloud. Isso oferece a flexibilidade de personalizar seu pipeline de CI/CD, dependendo de quando você precisa acessar os resultados de vulnerabilidade.
Tipos de pacotes com suporte
Quando você envia imagens de contêiner para repositórios do Docker no Artifact Registry, o Artifact Analysis pode verificar vulnerabilidades em vários tipos de pacotes de SO e de linguagem de aplicativo.
O Container Registry foi descontinuado. Com o Container Registry, a verificação automática só verifica pacotes do SO. Se você estiver usando o Container Registry, saiba como fazer a transição para o Artifact Registry.
As tabelas a seguir comparam os tipos de pacotes que Artifact Analysis pode verificar com cada serviço de verificação:
Pacotes de SO com suporte
Verificação automática com o Artifact Registry | Verificação automática com o Container Registry (descontinuado) | Verificação sob demanda | |
---|---|---|---|
AlmaLinux OS | |||
Alpine | |||
CentOS | |||
Chainguard | |||
Debian | |||
Distroless do Google | |||
Red Hat Enterprise Linux (RHEL) | |||
Imagem de base universal (UBI) do Red Hat | |||
Rocky Linux | |||
SUSE Linux Enterprise Server (SLES) | |||
Ubuntu | |||
Wolfi |
Pacotes de idioma do aplicativo com suporte
Verificação automática com o Artifact Registry | Verificação automática com o Container Registry (descontinuado) | Verificação sob demanda | |
---|---|---|---|
Pacotes do Go | |||
Pacotes Java | |||
Pacotes Node.js | |||
Pacotes PHP | |||
Pacotes do Python | |||
Pacotes do Ruby | |||
Pacotes Rust | |||
Pacotes .NET |
O Artifact Analysis só verifica pacotes de linguagem de aplicativo no Artifact Registry quando eles são contêinerizados e armazenados em um repositório de formato do Docker. Os outros formatos de repositório do Artifact Registry não são compatíveis.
Para mais informações sobre os recursos disponíveis para cada produto de registro, consulte a tabela de comparação.
Artifact Analysis não é compatível com contêineres do Windows Server.
Interfaces do Artifact Analysis
No console do Google Cloud, é possível conferir vulnerabilidades de imagem e metadados de imagem para contêineres no Artifact Registry.
Use a CLI gcloud para visualizar vulnerabilidades e metadados de imagens.
Você também pode usar a API REST Artifact Analysis para realizar qualquer uma dessas ações. Assim como em outras APIs do Cloud Platform, você precisa autenticar o acesso usando o OAuth2. Depois da autenticação, você também pode usar a API para criar notas e ocorrências personalizadas e conferir ocorrências de vulnerabilidade.
A API Artifact Analysis é compatível com gRPC e REST/JSON. É possível fazer chamadas para a API usando as bibliotecas de cliente ou usando cURL para REST/JSON.
Controlar a implantação de imagens vulneráveis
É possível usar a autorização binária para criar uma lista de permissões de vulnerabilidade com base nas informações de vulnerabilidade fornecidas pelo Artifact Analysis como parte do pipeline do Cloud Build. Se as vulnerabilidades violarem a política na lista de permissões, a compilação vai falhar.
Você também pode integrar o Artifact Analysis com a autorização binária para criar atestados, o que pode impedir que imagens de contêiner com problemas de segurança conhecidos sejam executadas no ambiente de implantação.
Origens de vulnerabilidade
A seção a seguir lista as origens de vulnerabilidade que Artifact Analysis usa para extrair dados de CVE.
Verificações de pacotes do SO
O Artifact Analysis usa as seguintes fontes:
- AlmaLinux OS
- Alpine
- CentOS: o Red Hat e o CentOS compartilham a mesma fonte de dados de vulnerabilidade. Como os pacotes CentOS são publicados após os pacotes do Red Hat, uma correção disponível para uma vulnerabilidade no Red Hat pode demorar um pouco para ficar disponível no CentOS.
- Chainguard (link em inglês)
- Debian (em inglês)
- O Google Distroless é baseado no Debian e usa os dados de vulnerabilidade do Debian.
- National Vulnerability Database (em inglês)
- Red Hat Enterprise Linux (RHEL) [em inglês]
- Imagem base universal (UBI, na sigla em inglês) do Red Hat
- Rocky Linux
- SUSE Linux Enterprise Server (SLES) [em inglês]
- Ubuntu
- Wolfi
Verificações de pacotes de idiomas
O Artifact Analysis oferece suporte à verificação de vulnerabilidades para pacotes de linguagem em uma imagem de contêiner. Os dados de vulnerabilidade são extraídos do GitHub Advisory Database.
Na maioria dos casos, cada vulnerabilidade recebe um ID do CVE, que passa a ser o identificador principal dessa vulnerabilidade. Nos casos em que não há um ID de CVE atribuído a uma vulnerabilidade, um ID da GHSA é atribuído como identificador. Se essa vulnerabilidade receber um ID de CVE mais tarde, o ID da vulnerabilidade será atualizado para corresponder à CVE. Consulte Verificar uma vulnerabilidade específica em um projeto para mais informações.
Versões compatíveis do SO
O Artifact Analysis é compatível com a verificação de vulnerabilidades das seguintes versões do software do sistema operacional:
- AlmaLinux OS: versões 8, 9 e versões secundárias
- Alpine Linux - Versões: 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18, 3.19, 3.20
- CentOS: versões 6, 7, 8 e versões secundárias
- Chainguard: atualizações graduais em uma faixa de lançamento.
- Debian GNU/Linux - Versões: 9, 10, 11, 12
- Red Hat Enterprise Linux (RHEL): as versões 6, 7, 8, 9 e as versões secundárias têm suporte para verificações automáticas de registro.
- Imagem base universal (UBI) do Red Hat: versões 8, 9 e versões secundárias
- Rocky Linux: versões 8, 9 e versões secundárias
- SUSE Linux Enterprise Server (SLES): versões 12, 15 e versões secundárias. O SLES para SAP também tem suporte às mesmas versões.
- Ubuntu: 12.04, 12.10, 13.04, 14.04, 14.10, 15.04, 15.10, 16.04, 16.10, 17.04, 17.10, 18.04, 18.10, 20.04, 20.10, 21.04, 21.10, 22.04, 22.10, 23.04, 23.10, 24.04
- Wolfi: atualizações graduais em uma única faixa de lançamento.
Limitações
- Artifact Analysis gera resultados de verificação de vulnerabilidades do RHEL com base na versão secundária mais recente de cada versão principal lançada. Pode haver imprecisões nos resultados da verificação para versões secundárias mais antigas do RHEL.
- A verificação sob demanda não é compatível com o RHEL versão 9.
Gerenciadores de pacotes e controle de versão semântico
- Go: Artifact Analysis informa vulnerabilidades para pacotes na biblioteca padrão do Go e pacotes externos do Go não incluídos na biblioteca padrão. As vulnerabilidades são relatadas com um rótulo diferente para cada tipo de pacote.
- Java: Artifact Analysis oferece suporte a pacotes Maven que seguem as convenções de nomenclatura do Maven. Se a versão do pacote incluir espaços, ela não será verificada.
- Node.js: a correspondência de versão do pacote segue a especificação do controle de versão semântico.
- PHP: Artifact Analysis verifica os pacotes do Composer. Consulte Controle de versões semântico do Composer.
- Python: a correspondência de versão do Python segue a semântica do PEP 440.
- Ruby: o Artifact Analysis verifica os pacotes RubyGems. Consulte Controle de versões semânticas do RybyGems.
- Rust: o Artifact Analysis verifica pacotes Cargo. Consulte Controle de versões semânticas do Rust.
- .NET: o Artifact Analysis verifica os pacotes do NuGet. Consulte Controle de versões semântico do NuGet.