Container Analysis

O Container Analysis é um serviço que fornece verificação de vulnerabilidades e armazenamento de metadados para artefatos de software. O serviço realiza verificações de vulnerabilidade em artefatos de software criados, como as imagens no Container Registry. Em seguida, armazena os metadados resultantes e os disponibiliza para consumo por meio de uma API. Os metadados podem vir de várias fontes, incluindo verificação de vulnerabilidades, outros serviços do Cloud e provedores de terceiros.

Esta página descreve a verificação de vulnerabilidades, os tipos de metadados compatíveis com o Container Analysis e alguns conceitos e terminologias importantes.

Verificação de vulnerabilidades

Vulnerabilidades de software são pontos fracos que podem causar uma falha acidental do sistema ou ser explorados intencionalmente.

O Container Analysis realiza verificações de vulnerabilidades em imagens no Container Registry e monitora as informações de vulnerabilidade para mantê-las atualizadas. Esse processo consiste em duas tarefas principais:

  • Verificação incremental: o Container Analysis verifica as novas imagens quando elas são enviadas para o Container Registry. A verificação coleta metadados com base no manifesto do contêiner e atualiza esses metadados toda vez que você refizer o upload da imagem.

  • Análise contínua: o Container Analysis monitora continuamente os metadados de imagens digitalizadas no Container Registry para detectar novas vulnerabilidades. Conforme o Container Analysis recebe informações de vulnerabilidade novas e atualizadas de origens de vulnerabilidade, ela analisa novamente os contêineres para manter atualizadas a lista de ocorrências de vulnerabilidade de imagens já verificadas. Ele cria novas ocorrências para novas notas e exclui ocorrências que não são mais válidas. Esse tipo de análise refere-se apenas a vulnerabilidades de pacote e não inclui outros tipos de metadados.

Quando a varredura de uma imagem é concluída, o resultado de vulnerabilidade é uma coleção das ocorrências de vulnerabilidade de uma imagem.

Origem de vulnerabilidade

A API Container Analysis é compatível com a verificação de vulnerabilidades de pacotes para distribuições Linux e recebe os dados de CVE das origens a seguir:

Níveis de gravidade de vulnerabilidades

O Container Analysis usa os níveis de gravidade a seguir:

  • Crítica
  • Alta
  • Média
  • Baixa
  • Mínima

Os níveis de gravidade são rótulos qualitativos que refletem fatores como capacidade de exploração, escopo, impacto e maturidade da vulnerabilidade. Por exemplo, se uma vulnerabilidade permitir que um usuário remoto acesse facilmente um sistema e execute um código arbitrário sem autenticação ou interação com o usuário, essa vulnerabilidade será classificada como Crítica.

Dois tipos de gravidade estão associados a cada vulnerabilidade:

  • Gravidade efetiva: o nível de gravidade atribuído pela distribuição Linux. Se os níveis de gravidade específicos da distribuição estiverem indisponíveis, o Container Analysis usará o nível de gravidade atribuído pelo provedor da nota.

  • Pontuação CVSS: a pontuação do sistema de pontuação de vulnerabilidade comum (CVSS, na sigla em inglês) e o nível de gravidade associado. Consulte a especificação CVSS 3.0 (em inglês) para saber mais sobre como as pontuações do CVSS são calculadas.

Para uma determinada vulnerabilidade, a gravidade derivada de uma pontuação CVSS calculada pode não corresponder à gravidade efetiva. As distribuições Linux que atribuem níveis de gravidade usam seus próprios critérios para avaliar os impactos específicos de uma vulnerabilidade nas distribuições.

Como associar metadados a imagens

Uma parte de alto nível de metadados, como uma vulnerabilidade ou informações de criação, é chamada de nota. Quando o Container Analysis analisa uma imagem, cada instância de uma nota encontrada é identificada como uma ocorrência.

Nota

Uma nota descreve uma parte de metadados de alto nível. Por exemplo, você poderia criar uma nota sobre uma vulnerabilidade específica depois de analisar um pacote do Linux. Você também usaria uma nota para armazenar informações sobre o criador de um processo de criação. As notas geralmente são de propriedade e criadas pelos provedores que realizam a análise. Geralmente, as notas são encontradas ao analisar as imagens do contêiner, e ocorrem várias vezes em diferentes projetos.

Recomenda-se armazenar notas e ocorrências em projetos separados, permitindo um controle de acesso mais refinado.

As notas só podem ser editadas pelo proprietário delas, e são somente leitura para clientes que tenham acesso às ocorrências que as referenciam.

Ocorrência

Uma ocorrência é representada quando uma nota foi encontrada em uma imagem, podendo ser considerada uma instanciação de uma nota. Por exemplo, uma ocorrência de uma nota sobre uma vulnerabilidade descreveria o pacote em que a vulnerabilidade foi encontrada, as etapas de correção específicas e assim por diante. Como alternativa, uma ocorrência de uma nota sobre detalhes de criação descreveria as imagens de contêiner resultantes de uma criação.

Normalmente, as ocorrências são armazenadas em projetos separados daqueles em que as notas são criadas. O acesso de gravação a ocorrências só pode ser concedido a usuários que têm acesso para vincular uma nota à ocorrência. Qualquer usuário pode ter acesso de leitura a ocorrências.

Ocorrências de descoberta incluem informações coletadas durante a varredura inicial de imagens de contêiner. Ao analisar os contêineres, o Container Analysis atualiza as ocorrências de descoberta para registrar o status da varredura. As ocorrências de descoberta são criadas para todas as imagens atuais quando a API Container Analysis é ativada pela primeira vez. Para as novas imagens, elas são criadas no momento do envio para o Container Registry.

Tipos de metadados compatíveis

A tabela a seguir mostra todos os tipos de metadados compatíveis com o Container Analysis e disponíveis para imagens do Container Registry no formato de notas. Provedores de metadados de terceiros podem armazenar e recuperar todos os tipos de metadados a seguir para as imagens dos respectivos clientes.

Tipo de metadados Fornecido pelo Container Analysis para imagens do Container Registry
Vulnerabilidade, que fornece informações sobre vulnerabilidade de imagens do contêiner. Sim O Container Analysis recebe as informações de vulnerabilidade de origens externas.
Criação, que fornece informações sobre a procedência da criação. Sim. O Container Analysis só fornece essas informações quando você usa o Cloud Build para criar a imagem.
Implantação, que traz informações sobre eventos de implantação de imagem. Não
Imagem, que são os metadados sobre a imagem do contêiner, por exemplo, informações sobre as diferentes camadas de uma imagem. Não
Pacote, que contém informações sobre os pacotes instalados na sua imagem. Não
Atestado, que é o papel lógico que pode atestar as imagens. Não
Descoberta, que contém informações sobre a verificação inicial de imagens. Sim. O Container Analysis fornece essas informações apenas para vulnerabilidades.

Provedores e clientes

Provedores são as empresas que fornecem metadados para as imagens dos clientes. Os provedores podem usar o Container Analysis para armazenar e recuperar metadados para as imagens de seus clientes. Por exemplo, uma empresa que gerencia a segurança de contêineres do Docker dos seus clientes pode usar o Container Analysis para armazenar e recuperar metadados relacionados à segurança das imagens. Para mais informações, consulte Como fornecer metadados para projetos.

Os clientes usam os metadados fornecidos pelo Google para as imagens no Container Registry ou por provedores de terceiros.

Conta de serviço padrão do Container Analysis

O Container Analysis analisa suas imagens de contêiner usando uma conta de serviço, uma conta especial do Google que coleta informações sobre suas imagens no seu nome. O e-mail da conta de serviço da Análise de contêiner é service-[PROJECT_NUMBER]@container-analysis.iam.gserviceaccount.com. Essa conta usa o papel Agente de serviço do Container Analysis.

Se você ativar a verificação de vulnerabilidades, a API Container Scanning usada por esse recurso também usará uma Conta do Google especial. O e-mail dessa conta de serviço é service-[PROJECT_NUMBER]@gcp-sa-containerscanning.iam.gserviceaccount.com. A conta usa o papel de Agente de serviço do Container Scanner.

É possível visualizar as contas de serviço do projeto por meio do menu IAM do Console do Cloud.

Interfaces do Container Analysis

No Console do Cloud, você pode ver vulnerabilidades de imagem e metadados de imagem para contêineres no Container Registry.

Você pode usar a ferramenta gcloud para visualizar vulnerabilidades e metadados de imagem.

A API REST Container Analysis também pode ser usada para executar 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ê pode usar a API para criar novas notas e ocorrências, ver ocorrências de vulnerabilidade etc.

A API Container Analysis é compatível com gRPC e REST/JSON. Você pode fazer chamadas à API usando as bibliotecas de cliente ou usando cURL para REST/JSON.

Como controlar a implantação de imagens vulneráveis

É possível integrar a autorização binária com a verificação de vulnerabilidades para impedir que imagens com problemas de segurança conhecidos sejam executadas no seu ambiente de implantação.

A seguir