É possível fornecer seus próprios metadados de vulnerabilidade ao Container Analysis para atender a uma necessidade comercial específica. Por exemplo, uma organização que gerencia a segurança dos contêineres do Docker de seus clientes pode usar o Container Analysis para armazenar e recuperar metadados relacionados à segurança dessas imagens.
Siga as etapas abaixo para fornecer metadados de vulnerabilidade personalizados relacionados a suas imagens usando a API Container Analysis. Use as mesmas instruções para armazenar e recuperar qualquer tipo de metadado compatível com o Container Analysis.
Antes de começar
Ative a API Container Scanning. Isso ativa a verificação de vulnerabilidades e a API Container Analysis. Ative a API para um projeto existente ou crie um novo projeto e, em seguida, ative a API. É possível desativar manualmente a verificação de vulnerabilidades posteriormente.
Como criar notas e ocorrências de vulnerabilidade para projetos
Nesta seção explicamos como provedores de vulnerabilidades de terceiros podem criar notas e ocorrências para os projetos dos usuários.
Como provedor, você criará uma nota no seu projeto para cada tipo de vulnerabilidade. Além disso, criará uma ocorrência no projeto do cliente quando essa vulnerabilidade ocorrer.
Como criar notas
Permissões do IAM:
Para executar essa tarefa, você precisa ter as seguintes permissões do IAM no projeto do provedor (que é o projeto em que as notas são criadas):
containeranalysis.notes.create
Como alternativa, conceda o seguinte papel predefinido do IAM, que fornece automaticamente todas as permissões necessárias:
- Papel "Editor de notas" do Container Analysis no seu projeto.
Para criar uma nota:
API
Crie um arquivo denominado
note.json
com a descrição e os detalhes da vulnerabilidade. No código a seguir, veja um arquivonote.json
de exemplo:{ "shortDescription": "A brief Description of the note", "longDescription": "A longer description of the note", "kind": "PACKAGE_VULNERABILITY", "vulnerabilityType": { "details": [ { "package": "libexempi3", "cpeUri": "cpe:/o:debian:debian_linux:7", "minAffectedVersion": { "name": "2.5.7", "revision": "1"}, "maxAffectedVersion": { "name": "2.5.9", "revision": "1"}, }, { "cpeUri": "something else" } ] } }
Execute o seguinte comando curl para criar uma nota em que [PROVIDER_PROJECT_ID] é o código do projeto:
curl -X POST -H "Content-Type: application/json" -H \ "Authorization: Bearer $(gcloud auth print-access-token)" \ https://containeranalysis.googleapis.com/v1/projects/[PROVIDER_PROJECT_ID]/notes?note_id=[NOTE_ID] -d @note.json
Java
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Java.
Go
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Go.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Node.js (em inglês).
Ruby
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Ruby (em inglês).
Python
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Python (em inglês).
Como criar ocorrências das notas
Permissões do IAM:
Para executar esta tarefa, você precisa ter as seguintes permissões do IAM:
containeranalysis.occurrences.create
no projeto do seu clientecontaineranalysis.notes.attachOccurrence
no seu projeto
Como alternativa, conceda o seguinte papel predefinido do IAM, que fornece automaticamente todas as permissões necessárias:
- Papel "Editor de ocorrências" do Container Analysis no projeto do cliente
- Papel "Anexador de notas" do Container Analysis no seu projeto
Para criar ocorrências de uma nota:
API
Crie um arquivo denominado
occurrence.json
com o seguinte conteúdo:{ "resourceUrl": "<resource_url>", "noteName": "projects/<provider-project-id>/notes/<note_id>", "kind": "PACKAGE_VULNERABILITY", "vulnerabilityDetails": { "packageIssue": [{ "affectedLocation": { "cpeUri": "7", "package": "a", "version": { "epoch": "1" "name": "namestring" "revision": "r" }, }, "fixedLocation": { "cpeUri": "cpe:/o:debian:debian_linux:7", "package": "a", "version": { "epoch": "2" "name": "namestring" "revision": "1" } } }] } }
Execute o seguinte comando curl em que [CUSTOMER_PROJECT_ID] é o código do projeto do seu cliente:
curl -v -X POST -H "Content-Type: application/json" -H \ "Authorization: Bearer $(gcloud auth print-access-token)" \ https://containeranalysis.googleapis.com/v1/projects/[CUSTOMER_PROJECT_ID]/occurrences -d @occurrence.json
Java
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Java.
Go
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Go.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Node.js (em inglês).
Ruby
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Ruby (em inglês).
Python
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Python (em inglês).
Receber todas as ocorrências de uma nota específica
É possível ver todas as ocorrências de uma vulnerabilidade específica nos projetos do cliente usando notes.occurrences.list()
.
Permissões do IAM:
Para executar esta tarefa, você precisa ter as seguintes permissões do IAM:
containeranalysis.notes.listOccurrences
no seu projeto
Como alternativa, conceda o seguinte papel predefinido do IAM, que fornece automaticamente todas as permissões necessárias:
- Papel "Leitor de ocorrências" do Container Analysis no seu projeto
Para ver todas as ocorrências de uma nota:
API
Para listar todas as ocorrências de uma nota, envie uma solicitação GET da seguinte maneira:
GET https://containeranalysis.googleapis.com/v1/projects/PROJECT_ID/notes/NOTE_ID/occurrences
Consulte o endpoint da API projects.notes.occurrences.list
para mais detalhes.
Java
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Java.
Go
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Go.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Node.js (em inglês).
Ruby
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Ruby (em inglês).
Python
Para saber como instalar e usar a biblioteca de cliente do Container Registry, consulte Bibliotecas de cliente do Container Registry. Para mais informações, consulte a documentação de referência da API Container Registry Python (em inglês).
A seguir
- Para instruções sobre como ver, filtrar e receber notificações sobre vulnerabilidades das imagens no Container Registry, consulte o respectivo artigo.