Creare istruzioni VEX

Questo documento descrive come creare istruzioni Vulnerability Exploitability eXchange (VEX).

Per ogni immagine container di cui è stato eseguito il push in Artifact Registry, Artifact Analysis può archiviare un'istruzione VEX associata. VEX è un tipo di avviso di sicurezza che indica se un prodotto è interessato da una vulnerabilità nota.

Ogni istruzione fornisce:

  • Il publisher dell'istruzione VEX
  • L'artefatto per cui è scritta l'istruzione
  • La valutazione della vulnerabilità (stato VEX) per eventuali vulnerabilità note

I publisher di software possono creare istruzioni VEX per descrivere la postura di sicurezza di un'applicazione. Le istruzioni VEX annotano eventuali vulnerabilità rilevate in artefatti specifici e forniscono il contesto relativo al loro impatto sui clienti o sugli organismi di regolamentazione.

Gli autori di norme e sicurezza possono utilizzare lo stato VEX per assegnare la priorità ai rischi nelle supply chain software e utilizzare le istruzioni VEX per attestare la composizione dei loro artefatti per aiutare le organizzazioni a soddisfare i requisiti normativi.

Stato VEX

Lo stato VEX indica se un artefatto è interessato da una vulnerabilità nota.

Lo stato può essere uno dei seguenti:

  • Non interessato: non è necessario alcun intervento in merito a questa vulnerabilità.
  • Interessato: sono consigliate azioni di correzione.
  • Corretto: in questa versione del prodotto è stata applicata una correzione per risolvere la vulnerabilità.
  • Indagine in corso: lo stato di questo prodotto è ancora da determinare. Il publisher fornirà uno stato aggiornato in una release futura.

Prima di iniziare

  1. Accedi al tuo Account Google.

    Se non ne hai già uno, registrati per un nuovo account.

  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Installa Google Cloud CLI.

  6. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  7. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Installa Google Cloud CLI.

  12. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  13. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  14. Assicurati di avere immagini container archiviate in un repository Artifact Registry oppure crea un repository ed esegui il push delle immagini.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per caricare le valutazioni VEX e controllare lo stato VEX delle vulnerabilità, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Creare istruzioni VEX

Artifact Analysis supporta lo standard Common Security Advisory Format (CSAF) 2.0 in JSON. Per produrre una nuova istruzione VEX, utilizza lo schema CSAF.

Di seguito è riportato un esempio di istruzione VEX per un'immagine in Artifact Registry con un ramo cve per una vulnerabilità nota.

Devi definire il valore di product_status per ogni 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"
        ]
      }
    }
  ]
}

Dove

  • PRODUCT_NAME Nome del prodotto leggibile per l'immagine. Accetta un valore stringa. Il valore deve essere il nome canonico completo del prodotto, inclusi il numero di versione e altri attributi.
  • LOCATION è la località regionale o multiregionale del repository.
  • PROJECT_ID è l'ID del progetto che contiene il repository.
  • REPO_NAME è il nome del repository Docker in Artifact Registry.
  • IMAGE_NAME è il nome dell'immagine.
  • CVE_ID è l'identificatore della vulnerabilità, ad esempio CVE-2017-11164.
  • PRODUCT_STATUS è la valutazione del rischio per la sicurezza. Artifact Analysis supporta quattro tipi di stato: known_affected, known_not_affected, under_investigation e fixed.

Per ogni vulnerabilità che vuoi elencare nell'istruzione VEX, devi creare un ramo cve e definire il valore di product_status.

Il valore del campo name in product_tree.branches.name è l'URI dell'immagine. L'inclusione di questo valore associa l'istruzione VEX a un'immagine Docker specifica.

Passaggi successivi