Creare istruzioni VEX

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

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

Ogni estratto conto fornisce:

  • Il publisher della dichiarazione VEX
  • L'artefatto per cui viene scritta la dichiarazione
  • La valutazione delle vulnerabilità (stato VEX) per eventuali vulnerabilità note

Gli editori di software possono creare istruzioni VEX per descrivere la postura di sicurezza di un'applicazione. Le istruzioni VEX annotano le vulnerabilità rilevate in artefatti specifici e forniscono il contesto del loro impatto sui clienti o sugli enti normativi.

Gli addetti all'applicazione di sicurezza e policy possono utilizzare lo stato VEX per valutare i rischi nelle loro supply chain del 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. 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. Avere immagini container archiviate in un repository Artifact Registry oppure creare un repository ed eseguire il push delle immagini.
  15. 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

    L'Artifact Analysis supporta lo standard Common Security Advisory Format (CSAF) 2.0 in JSON. Per produrre una nuova dichiarazione 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 tuo repository.
    • PROJECT_ID è l'ID del progetto che contiene il tuo 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 nella tua dichiarazione 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