Este documento descreve como criar declarações de Vulnerability Exploitability eXchange (VEX).
Para cada imagem de contêiner enviada ao Artifact Registry, o Artifact Analysis pode armazenar uma declaração VEX associada. O VEX é um tipo de aviso de segurança que indica se um produto foi afetado por uma vulnerabilidade conhecida.
Cada instrução fornece:
- O editor da declaração VEX
- O artefato para o qual a declaração é escrita
- A avaliação de vulnerabilidades (status VEX) para vulnerabilidades conhecidas
Os editores de software podem criar declarações VEX para descrever a postura de segurança de um aplicativo. As declarações VEX observam as vulnerabilidades descobertas em artefatos específicos e fornecem contexto sobre o impacto delas nos clientes ou órgãos reguladores.
Os responsáveis pela segurança e pela aplicação de políticas podem usar o status do VEX para classificar os riscos nas cadeias de suprimentos de software e usar declarações do VEX para atestar a composição dos artefatos e ajudar as organizações a atender aos requisitos regulamentares.
Status VEX
O status VEX indica se um artefato foi afetado por uma vulnerabilidade conhecida.
O status pode ser um dos seguintes:
- Não afetado: essa vulnerabilidade não precisa de correção.
- Afetado: é recomendado realizar ações de correção.
- Corrigida: nesta versão do produto, a vulnerabilidade foi corrigida.
- Sob investigação: o status deste produto ainda não foi determinado. O editor vai fornecer um status atualizado em uma versão posterior.
Antes de começar
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
-
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Container Analysis, Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init
- Ter imagens de contêiner armazenadas em um repositório do Artifact Registry ou criar um repositório e enviar suas imagens.
-
Para criar e atualizar notas:
Editor de notas do Container Analysis (
roles/containeranalysis.notes.editor
) - PRODUCT_NAME Nome do produto legível para humanos da imagem. Usa um valor de string. O valor precisa ser o nome canônico completo do produto, incluindo o número da versão e outros atributos.
- LOCATION é a região ou o local multirregional do seu repositório.
- PROJECT_ID é o ID do projeto que contém o repositório.
- REPO_NAME é o nome do seu repositório do Docker no Artifact Registry.
- IMAGE_NAME é o nome da imagem;
- CVE_ID é o identificador da vulnerabilidade, como
CVE-2017-11164
. - PRODUCT_STATUS é a avaliação do risco de segurança.
Artifact Analysis é compatível com quatro tipos de status:
known_affected
,known_not_affected
,under_investigation
efixed
. - Faça upload das declarações VEX que você já tem ou das declarações VEX fornecidas por outros editores.
- Priorize problemas de vulnerabilidade usando o VEX. Saiba como ver declarações VEX e filtrar vulnerabilidades por status VEX.
Funções exigidas
Para ter as permissões necessárias para fazer upload de avaliações do VEX e verificar o status de vulnerabilidades do VEX, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Criar instruções VEX
Artifact Analysis é compatível com o padrão Common Security Advisory Format (CSAF) 2.0 em JSON. Para produzir uma nova declaração VEX, use o esquema CSAF.
Confira um exemplo de uma declaração VEX para uma imagem no Artifact Registry
com uma ramificação cve
para uma vulnerabilidade conhecida.
É necessário definir o valor de product_status
para cada CVE.
{
"document": {
"csaf_version": "2.0",
"lang": "en-US",
"publisher": {
"name": "Sample-Company",
"namespace": "https://sample-company.com"
},
"title": "Vex document 1.1"
},
"product_tree": {
"branches": [
{
"name": "https://LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME",
"product": {
"name": "PRODUCT_NAME",
"product_id": "IMAGE_NAME"
}
}
]
},
"vulnerabilities": [
{
"cve": "CVE_ID",
"product_status": {
"PRODUCT_STATUS": [
"IMAGE_NAME"
]
}
}
]
}
Onde
Para cada vulnerabilidade que você quiser listar na sua declaração VEX, crie uma ramificação cve
e defina o valor de product_status
.
O valor do campo name
em product_tree.branches.name
é o URI da imagem. Incluir esse valor associa a declaração VEX a uma imagem específica do Docker.