Créer des instructions VEX

Ce document explique comment créer des instructions Vulnerability Exploitability eXchange (VEX).

Pour chaque image de conteneur transférée vers Artifact Registry, Artifact Analysis peut stocker une déclaration VEX associée. VEX est un type d'avis de sécurité qui indique si un produit est affecté par une faille connue.

Chaque relevé fournit les informations suivantes :

  • Éditeur de la déclaration VEX
  • L'artefact pour lequel la déclaration est rédigée
  • L'évaluation des failles (état VEX) pour toutes les failles connues

Les éditeurs de logiciels peuvent créer des instructions VEX pour décrire la posture de sécurité d'une application. Les déclarations VEX indiquent les failles découvertes dans des artefacts spécifiques et fournissent un contexte sur leur impact pour les clients ou les organismes de réglementation.

Les responsables de l'application des règles et de la sécurité peuvent utiliser l'état VEX pour trier les risques dans leurs chaînes d'approvisionnement logiciel et utiliser les déclarations VEX pour attester de la composition de leurs artefacts afin d'aider les organisations à répondre aux exigences réglementaires.

État VEX

L'état VEX indique si un artefact est affecté par une faille connue.

Les états possibles sont les suivants :

  • Non affecté : aucune correction n'est requise concernant cette faille.
  • Affecté : des actions correctives sont recommandées.
  • Corrigé : dans cette version du produit, un correctif a été appliqué pour traiter la faille.
  • En cours d'examen : l'état de ce produit n'est pas encore déterminé. L'éditeur fournira un état actualisé dans une prochaine version.

Avant de commencer

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Make sure that billing is enabled for your Google Cloud project.

  10. Enable the Container Analysis, Artifact Registry APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Avoir des images de conteneurs stockées dans un dépôt Artifact Registry ou créer un dépôt et transférer vos images.
  15. Rôles requis

    Pour obtenir les autorisations nécessaires pour importer des évaluations VEX et vérifier l'état VEX des failles, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

    Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

    Créer des instructions VEX

    Artifact Analysis est compatible avec la norme Common Security Advisory Format (CSAF) 2.0 au format JSON. Pour générer une nouvelle déclaration VEX, utilisez le schéma CSAF.

    Voici un exemple d'instruction VEX pour une image dans Artifact Registry avec une branche cve pour une faille connue.

    Vous devez définir la valeur de product_status pour chaque 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"
            ]
          }
        }
      ]
    }
    

    • PRODUCT_NAME Nom de produit lisible pour l'image. Accepte une valeur de chaîne. La valeur doit correspondre au nom canonique complet du produit, y compris le numéro de version et les autres attributs.
    • LOCATION correspond à la région ou à l'emplacement multirégional de votre dépôt.
    • PROJECT_ID est l'ID du projet contenant votre dépôt.
    • REPO_NAME est le nom de votre dépôt Docker dans Artifact Registry.
    • IMAGE_NAME correspond au nom de l'image.
    • CVE_ID est l'identifiant de la faille, tel que CVE-2017-11164.
    • PRODUCT_STATUS correspond à l'évaluation du risque de sécurité. Artifact Analysis accepte quatre types d'état : known_affected, known_not_affected, under_investigation et fixed.

    Pour chaque faille que vous souhaitez lister dans votre déclaration VEX, vous devez créer une branche cve et définir la valeur de product_status.

    La valeur du champ name dans product_tree.branches.name correspond à l'URI de l'image. Si vous incluez cette valeur, l'instruction VEX sera associée à une image Docker spécifique.

    Étapes suivantes