IBM Cloud Docs
Configurazione delle scansioni di IBM Cloud Code Risk Analyzer

Configurazione delle scansioni di IBM Cloud Code Risk Analyzer

Puoi utilizzare IBM Cloud Code Risk Analyzer per analizzare il tuo codice per le vulnerabilità e convalidare la conformità rispetto alle regole specificate.

Quando Code Risk Analyzer valuta la tua applicazione:

  • Viene generata una distinta base del software (SBOM) che elenca le dipendenze e le informazioni di licenze disponibili di tutti i package di terze parti. Può essere generato in formato cycloneDX-specific, se necessario.

  • I pacchetti elencati nel file SBOM vengono sottoposti a scansione per rilevare eventuali vulnerabilità. Questo file può essere creato in formato cycloneDX-specific. In alternativa, puoi abilitare la correzione automatica delle vulnerabilità rilevate per le applicazioni scritte in Node.js, Maven o Gradle.

  • Tutti i tuoi file Kubernetes vengono analizzati per la conformità.

  • Tutti i tuoi piani Terraform vengono analizzati per la conformità.

Code Risk Analyzer è disponibile in tutte le regioni IBM Cloud in cui sono supportate le toolchain. Per ulteriori informazioni, consultare la documentazione del plug-in.

Configurazione delle scansioni

Per generare il file SBOM, una scansione di Code Risk Analyzer accede alle risorse utente nel percorso di directory specificato ed esegue un rilevamento approfondito per identificare tutte le dipendenze, incluse quelle di tipo trasitivo. Non ci sono variabili di ambiente della pipeline specifiche necessarie per generare il file SBOM e rilevare le vulnerabilità, ma se il percorso contiene un Dockerfile, l'immagine di base viene estratta e le immagini vengono create per ogni fase di build specificata nel file.

Se il tuo Dockerfile richiede ARGS, imposta un singolo ARG come variabile di ambiente in uno script personalizzato e fornisci l'ubicazione dello script personalizzato come pipeline vairable.

Tabella 1. Docker variabili di ambiente script
Variabili di ambiente Descrizione Obbligatorio o facoltativo Scopo
cra-custom-script-path Percorso dello script nel tuo repository. Facoltativo Imposta variabili di ambiente necessarie allo script Docker.

Per ulteriori informazioni, consultare Script personalizzati

Per impostazione predefinita, i file Terraform non vengono analizzati. Per eseguire la scansione del tuo file Terraform, devi impostare le seguenti variabili di ambiente della pipeline.

Tabella 2. Variabili di ambiente dell'analisi Terraform
Variabili di ambiente Descrizione Obbligatorio o facoltativo Scopo
opt-in-tfsec Vero o falso. Per impostazione predefinita è impostata su False. Facoltativo Esegue la scansione dei file Terraform per la protezione.
opt-in-cra-tf-validate Vero o falso. Per impostazione predefinita è impostata su False. Facoltativo Convalida i file Terraform.

La scansione di Code Risk Analyzer utilizza la chiave API fornita per accedere alla CLI IBMCloud ed attiva una build Docker. La sessione CLI IBM Cloud esistente continua ad essere utilizzata per il resto di questo passo CRA. Tuttavia, la sessione della CLI IBM Cloud scade dopo 20 minuti per un accesso della chiave API standard. Se il processo di build impiega più di 20 minuti, il passo CRA avrà esito negativo con un messaggio di errore 401 poiché la sessione è scaduta. È stata introdotta una variabile di ambiente ibmcloud-enable-session-keep-alive per mantenere attiva la sessione della CLI IBMCloud per operazioni così lunghe.

Tabella 3. Sessione IBMCloud Live per lavori di lunga durata
Variabili di ambiente Descrizione Immettere Obbligatorio o facoltativo Scopo
ibmcloud-enable-session-keep-alive 0 o 1. Impostare su 0 per impostazione predefinita. selezionare Facoltativo Mantenere attiva la sessione CLI IBMCloud per lavori di lunga durata nella scansione di Code Risk Analyzer.

Per impostazione predefinita, il comando deployment - analyze di Code Risk Analyzer esegue i controlli di configurazione sui manifest di distribuzione Kubernetes. Il comando deployment - analyze di Code Risk Analyzer viene eseguito con l'opzione --strict impostata. Per ignorare i file durante la distribuzione di Code Risk Analyzer - analizzare la scansione, è necessario utilizzare le seguenti variabili di ambiente.

Tabella 4. Variabili di ambiente di scansione IBMCloud CRA CIS
Variabili di ambiente Descrizione Obbligatorio o facoltativo Scopo
cra-cis-fileignore-path Il percorso del file .fileignore nel tuo repository. Facoltativo Specificare il percorso del file .fileignore che contiene le informazioni dei file da ignorare durante la distribuzione di Code Risk Analyzer - analyze scan.

Omissione delle vulnerabilità per distribuire la tua app

Il Code Risk Analyzer è progettato per trovare pacchetti vulnerabili prima di una bacheca adivsory. In circostanze eccezionali, potrebbe essere necessario distribuire l'applicazione anche se i pacchetti vulnerabili sono stati rilevati e non sono ancora stati corretti. Quando possibile, è necessario aggiornare i pacchetti o rimuoverli prima di ridistribuire il proprio codice.

Per ignorare file specifici e completare il push alla produzione, è possibile creare un file denominato .cra/.cveignore nella root del repository sottoposto a scansione con il seguente schema:

[
  {
    "cve": "string",
    "alwaysOmit": "bool",
    "untilRemediationAvailable": "bool",
    "expiration": "string"
  },
]

Il seguente frammento di codice visualizza un esempio di file .cveignore :

[
  {
    "cve": "CVE-2021-27290",
    "alwaysOmit": true
  },
  {
    "cve": "CVE-2020-8244",
    "untilRemediationAvailable": true,
  },
  {
    "cve": "CLAIR-JAVA-ORGAPACHEHTTPCOMPONENTS-31517",
    "expiration": "2022-02-10T22:08:41+04:00",
    "comment": "Additional security measures are in place"
  }
]

Questo file era noto come .craveomit. Il formato file originale è stato obsoleto e sostituito da .cra/.cveignore. Aggiornare il codice per utilizzare il file più recente.

Puoi trovare ulteriori informazioni sulla documentazione del plugin di Code Risk Analyzer oppure puoi anche controllare la documentazione CRA obsoleta.

Correzione automatica delle vulnerabilità

Puoi utilizzare Code Risk Analyzer come parte della pipeline Continuous Compliance (CC) non solo per trovare ma anche per correggere automaticamente le vulnerabilità. Code Risk Analyzer funziona come parte del passo compliance-check della pipeline. Per impostazione predefinita, la correzione automatica è disattivata.

La correzione automatica è disponibile solo per la pipeline CC.

Quando la correzione automatica è attivata, il Code Risk Analyzer tenta di aggiornare un pacchetto vulnerabile a una versione non vunlnerable creando una richiesta di pull con le correzioni identificate rispetto al ramo predefinito del tuo repository. Per impostazione predefinita, Code Risk Analyzer aggiornerà le versioni secondarie e di patch per il pacchetto vulnerabile principale e per i pacchetti dipendenti, ma non aggiornerà la versione principale di un pacchetto. Se la richiesta di pull è accettabile, puoi approvarla e unirla manualmente. Ogni volta che la pipeline viene eseguita, viene generata una nuova richiesta di pull, quindi assicurati di rivedere e unire man mano che vengono aperti per evitare duplicazioni.

La correzione automatica è disponibile sia per i repository Enterprise GitHub che GitLab e può modificare i file specificati nella seguente tabella.

Tabella 1. Ecosistemi supportati
Ecosystem File modificabili
Nodejs package.json e package-lock.json
Gradle build.gradle, gradle.lockfile e buildscript-gradle.lockfile
Maven pom.xml

Per iniziare a correggere automaticamente le vulnerabilità, imposta le seguenti variabili di ambiente facoltative per la tua pipeline.

Tabella 2. Ecosistemi supportati
Variabile Descrizione Impostazioni predefinite
opt-in-cra-auto-remediation Abilita la correzione automatica per la pipeline. false
Per iniziare la correzione, impostare questa variabile su true.
opt-in-cra-auto-remediation-force Forza un aggiornamento del package principale come parte della richiesta di pull aperta. false
Per forzare un aggiornamento del pacchetto principale, impostare questa variabile su true.
opt-in-cra-auto-remediation-enabled-repos Specifica i repository specifici in cui si desidera abilitare la correzione automatica. Abilitato per tutti i repository restituiti quando viene richiamato list_repos. Per specificare repository specifici, fornire un elenco separato da virgole di nomi di repository.