Neste documento, descrevemos 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 extrato fornece:
- O editor da declaração VEX
- O artefato para o qual a declaração foi 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 VEX para atestar a composição dos artefatos, ajudando 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.
- Corrigido: 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
-
Faça login na sua Conta do Google.
Se você ainda não tiver uma, inscreva-se agora.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Container Analysis, Artifact Registry APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Container Analysis, Artifact Registry APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - Ter imagens de contêiner armazenadas em um repositório do Artifact Registry ou criar um repositório e enviar suas imagens.
Funções exigidas
Para ter as permissões necessárias para fazer upload de avaliações do VEX e verificar o status do VEX das vulnerabilidades, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Para criar e atualizar notas:
Editor de notas do Container Analysis (
roles/containeranalysis.notes.editor)
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 declarações VEX
O 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 abaixo um exemplo de 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
- PRODUCT_NAME Nome do produto legível por humanos para a 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 seu repositório.
- REPO_NAME é o nome do 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_investigationefixed.
Para cada vulnerabilidade que você quer listar na sua declaração VEX, é necessário
criar uma ramificação cve e definir 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 Docker
específica.
A seguir
- Faça upload de declarações VEX suas ou fornecidas por outros editores.
- Priorize problemas de vulnerabilidade usando o VEX. Saiba como ver declarações VEX e filtrar vulnerabilidades por status VEX.