En este documento se describe cómo crear declaraciones de Vulnerability Exploitability eXchange (VEX).
Por cada imagen de contenedor que se envía a Artifact Registry, Artifact Analysis puede almacenar una declaración VEX asociada. VEX es un tipo de aviso de seguridad que indica si un producto se ve afectado por una vulnerabilidad conocida.
Cada extracto proporciona lo siguiente:
- El editor de la declaración VEX
- El artefacto para el que se escribe la declaración.
- La evaluación de vulnerabilidades (estado de VEX) de las vulnerabilidades conocidas
Los editores de software pueden crear declaraciones VEX para describir la postura de seguridad de una aplicación. Las declaraciones VEX indican las vulnerabilidades descubiertas en artefactos específicos y proporcionan contexto sobre su impacto en los clientes o los organismos reguladores.
Los responsables de la seguridad y de la aplicación de políticas pueden usar el estado de VEX para evaluar los riesgos de sus cadenas de suministro de software y usar las declaraciones de VEX para certificar la composición de sus artefactos, lo que ayuda a las organizaciones a cumplir los requisitos normativos.
Estado de VEX
El estado de VEX indica si un artefacto se ve afectado por una vulnerabilidad conocida.
El estado puede ser uno de los siguientes:
- No se ve afectado: no es necesario tomar ninguna medida en relación con esta vulnerabilidad.
- Afectado: se recomiendan acciones de corrección.
- Corregido: en esta versión del producto, se ha aplicado una corrección para solucionar la vulnerabilidad.
- En investigación: aún no se ha determinado el estado de este producto. El editor proporcionará un estado actualizado en una versión posterior.
Antes de empezar
-
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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
- Tener imágenes de contenedor almacenadas en un repositorio de Artifact Registry o crear un repositorio y enviar las imágenes.
-
Para crear y actualizar notas, sigue estos pasos:
Editor de notas de Container Analysis (
roles/containeranalysis.notes.editor
) - PRODUCT_NAME Nombre del producto legible por humanos de la imagen. Toma un valor de cadena. El valor debe ser el nombre canónico completo del producto, incluido el número de versión y otros atributos.
- LOCATION es la ubicación regional o multirregional de tu repositorio.
- PROJECT_ID es el ID del proyecto que contiene tu repositorio.
- REPO_NAME es el nombre de tu repositorio de Docker en Artifact Registry.
- IMAGE_NAME es el nombre de la imagen.
- CVE_ID es el identificador de la vulnerabilidad, como
CVE-2017-11164
. - PRODUCT_STATUS es la evaluación del riesgo de seguridad.
Artifact Analysis admite cuatro tipos de estado:
known_affected
,known_not_affected
,under_investigation
yfixed
. - Sube declaraciones VEX. Puedes subir tus declaraciones VEX o las que te hayan proporcionado otros editores.
- Prioriza los problemas de vulnerabilidad con VEX. Consulta cómo ver las declaraciones de VEX y filtrar las vulnerabilidades por estado de VEX.
Roles obligatorios
Para obtener los permisos que necesitas para subir evaluaciones de VEX y comprobar el estado de VEX de las vulnerabilidades, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear instrucciones VEX
Artifact Analysis admite el estándar Common Security Advisory Format (CSAF) 2.0 en JSON. Para generar una nueva declaración VEX, usa el esquema CSAF.
A continuación, se muestra un ejemplo de una declaración VEX para una imagen de Artifact Registry
con una cve
rama para una vulnerabilidad conocida.
Debe definir el 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"
]
}
}
]
}
Dónde
Por cada vulnerabilidad que quiera incluir en su declaración VEX, debe crear una rama cve
y definir el valor de product_status
.
El valor del campo name
de product_tree.branches.name
es el URI de la imagen. Si incluye este valor, la declaración VEX se asociará a una imagen de Docker específica.