Salta ai contenuti

Comandi Snyk

Comandi CLI di Snyk completi e flussi di lavoro per la scansione della sicurezza tra codice open source, codice sorgente, container e infrastrutture as code.

Installazione

npm (Node.js)

# Installa globalmente
npm install -g snyk

# Installa nel progetto
npm install --save-dev snyk

# Verifica l'installazione
snyk --version

macOS (Homebrew)

# Installa via Homebrew
brew install snyk

# Aggiorna Snyk
brew upgrade snyk

# Verifica l'installazione
snyk --version

Windows (Scoop)

# Installa via Scoop
scoop install snyk

# Verifica l'installazione
snyk --version

Binario Standalone

# Scarica il CLI standalone (Linux/macOS)
curl https://static.snyk.io/cli/latest/snyk-linux -o snyk
chmod +x ./snyk
./snyk --version

# O per macOS
curl https://static.snyk.io/cli/latest/snyk-macos -o snyk
chmod +x ./snyk

Autenticazione

Autenticazione tramite Browser

# Apri il browser per l'autenticazione
snyk auth

# Default: apre il browser e crea il token di autenticazione
snyk auth --token <token>

Metodi di Token API

# Autenticati con token esplicito
snyk auth --token <your-api-token>

# Imposta il token tramite variabile d'ambiente
export SNYK_TOKEN=<your-api-token>
snyk test

# Verifica l'autenticazione corrente
snyk config get api

# Imposta l'organizzazione
snyk config set org=<org-id>

Disconnessione

# Cancella le credenziali memorizzate
snyk logout

# Cancella tutta l'autenticazione
rm ~/.snyk

Scansione Open Source (SCA)

Test di Base

# Scansiona il progetto corrente per vulnerabilità
snyk test

# Scansiona con output minimalista
snyk test --quiet

# Scansiona e mostra informazioni dettagliate
snyk test --verbose

# Scansiona un file specifico
snyk test --file=package.json

# Scansiona con tutti i livelli di vulnerabilità
snyk test --severity-threshold=low

Filtro per Gravità

# Mostra solo vulnerabilità critiche
snyk test --severity-threshold=critical

# Mostra critiche e alte
snyk test --severity-threshold=high

# Mostra critiche, alte e medie
snyk test --severity-threshold=medium

# Mostra tutte (critica, alta, media, bassa)
snyk test --severity-threshold=low

Supporto Linguaggi Multipli

# Scansiona progetti npm/Node.js
snyk test

# Scansiona progetti Python
snyk test --file=requirements.txt

# Scansiona Java (Maven)
snyk test --file=pom.xml

# Scansiona Java (Gradle)
snyk test --file=build.gradle

# Scansiona .NET (NuGet)
snyk test --file=packages.config

# Scansiona Ruby
snyk test --file=Gemfile.lock

# Scansiona PHP/Composer
snyk test --file=composer.lock

# Scansiona Go
snyk test --file=go.mod

Monitoraggio Progetti

# Crea uno snapshot delle vulnerabilità per il monitoraggio
snyk monitor

# Monitora con nome personalizzato
snyk monitor --project-name=my-app

# Monitora organizzazione specifica
snyk monitor --org=<org-id>

# Monitora con tag
snyk monitor --tags=production,critical

Scansione del Codice (SAST)

Scansione di Base del Codice

# Scansiona il codice per vulnerabilità (problemi di sicurezza)
snyk code test

# Scansiona con output minimalista
snyk code test --quiet

# Scansiona con output verboso
snyk code test --verbose

# Scansiona directory specifica
snyk code test --scan-unmanaged

Filtro per Gravità del Codice

# Solo problemi critici
snyk code test --severity-threshold=critical

# Critici e alti
snyk code test --severity-threshold=high

# Tutte le gravità
snyk code test --severity-threshold=low

Scansione Container

Test Immagini

# Scansiona immagine Docker per vulnerabilità
snyk container test <image-name>

# Test con tag
snyk container test myapp:latest

# Test dal registro
snyk container test docker.io/node:16

# Test immagine locale per ID
snyk container test --image=<image-id>

Monitoraggio Container

# Crea uno snapshot delle vulnerabilità del container
snyk container monitor <image-name>

# Monitora con organizzazione
snyk container monitor <image-name> --org=<org-id>

# Monitora immagini multiple
snyk container monitor myapp:v1.0
snyk container monitor myapp:v1.1

Opzioni Avanzate Container

# Mostra tutte le vulnerabilità (incluse non corrette)
snyk container test <image> --show-vulnerable-paths

# Include le vulnerabilità dell'immagine di base
snyk container test <image> --detect-scan-errors

# Test senza caricare su Snyk
snyk container test <image> --skip-unresolved

Scansione Infrastructure as Code (IaC)

Scansione Terraform

# Scansiona file Terraform
snyk iac test

# Scansiona file specifico
snyk iac test main.tf

# Scansiona con filtro di gravità
snyk iac test --severity-threshold=high

# Test con framework
snyk iac test --framework=terraform

# Genera report leggibile per l'uomo
snyk iac test --report

Altri Formati IaC

# Scansiona CloudFormation
snyk iac test --framework=cloudformation template.yaml

# Scansiona manifest Kubernetes
snyk iac test --framework=k8s deployment.yaml

# Scansiona template ARM
snyk iac test --framework=arm

# Scansiona Dockerfile
snyk iac test Dockerfile

# Scansiona Helm chart
snyk iac test --framework=helm chart/

Monitoraggio IaC

# Monitora configurazione IaC
snyk iac describe

# Ottieni informazioni sulla conformità
snyk iac describe --framework=terraform

# Mostra configurazione dettagliata
snyk iac describe --nested

Correzione e Bonifica

Auto-Correggi Vulnerabilità

# Auto-correggi le vulnerabilità
snyk fix

# Dry-run per visualizzare i cambiamenti
snyk fix --dry-run

# Correggi per gravità specifica
snyk fix --severity-threshold=high

# Forza la sovrascrittura delle modifiche esistenti
snyk fix --force

Protezione Dipendenze

# Applica Snyk protect (aggiunge patch di sicurezza alle dipendenze)
snyk protect

# Verifica che la protezione sia applicata
snyk protect --verbose

# Rimuovi protezione
snyk protect --uninstall

Ignorare Vulnerabilità

Ignora Vulnerabilità Specifiche

# Ignora una vulnerabilità in modo interattivo
snyk ignore

# Ignora con motivo e scadenza specifici
snyk ignore --id=<vuln-id> --reason=<reason> --expiry=<date>

# Esempio: ignora per 30 giorni
snyk ignore --id=SNYK-JS-123456 --expiry=2026-04-30

# Imposta ignoramento permanente
snyk ignore --id=SNYK-JS-123456 --permanent

File Politiche

# Crea file politica .snyk
snyk policy --create

# Test con politica
snyk test --policy-path=.snyk

# Visualizza politica
cat .snyk

# Aggiorna politica
snyk ignore --id=SNYK-JS-123456 --reason="False positive"

Generazione SBOM

Software Bill of Materials

# Genera SBOM in formato JSON
snyk sbom

# Genera SBOM per immagine Docker
snyk sbom --format=json <image-name>

# Salva su file
snyk sbom > sbom.json

# Genera formato SPDX
snyk sbom --format=spdx

# Mostra in formato tabella
snyk sbom --format=table

Formati Output

Output JSON

# Test e output come JSON
snyk test --json > results.json

# Pretty-print JSON
snyk test --json-file-output=results.json

# Test del codice come JSON
snyk code test --json

Output SARIF

# Genera formato SARIF (per GitHub Code Scanning)
snyk test --sarif > results.sarif

# SARIF per scansione del codice
snyk code test --sarif > code-results.sarif

# Container SARIF
snyk container test <image> --sarif > container.sarif

Report HTML

# Genera report HTML
snyk test --html > report.html

# Apri nel browser
snyk test --html > report.html && open report.html

Configurazione e Impostazioni

Comandi Config

# Mostra configurazione corrente
snyk config show

# Imposta endpoint API
snyk config set api=https://api.snyk.io

# Imposta organizzazione
snyk config set org=<org-id>

# Ottieni impostazione specifica
snyk config get api

# Annulla la configurazione
snyk config unset org

Variabili d’Ambiente

# Imposta token tramite variabile d'ambiente
export SNYK_TOKEN=<your-token>

# Imposta organizzazione
export SNYK_ORG=<org-id>

# Imposta endpoint API
export SNYK_API=https://api.snyk.io

# Imposta certificato CA personalizzato
export NODE_EXTRA_CA_CERTS=/path/to/ca.crt

# Disabilita verifica SSL (usa con cautela)
export NODE_TLS_REJECT_UNAUTHORIZED=0

File Politica .snyk

# File .snyk per ignorare vulnerabilità
version: v1.25.0
ignore:
  SNYK-JS-123456:
    - '*':
        reason: False positive
        expires: 2026-04-30
  SNYK-PY-789012:
    - '*':
        reason: Not applicable to our use case
        expires: 2026-06-30
patch:
  SNYK-JS-111111:
    - '*':
        patched: '2024-03-15'

Filtro e Organizzazione

Filtra Vulnerabilità

# Include vulnerabilità non corrette
snyk test --show-vulnerable-paths

# Mostra solo quelle correggibili
snyk test --show-vulnerable-paths=false

# Filtra per progetto
snyk test --project-name=<name>

# Filtra per tag
snyk monitor --tags=team:backend,env:prod

Contesto Organizzazione

# Test all'interno di un'organizzazione specifica
snyk test --org=<org-id>

# Imposta organizzazione predefinita
snyk config set org=<org-id>

# Mostra ID organizzazione
snyk org

# Elenca organizzazioni
snyk org list

Integrazione CI/CD

GitHub Actions

# .github/workflows/snyk.yml
name: Snyk Security Scan
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  snyk:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: snyk/actions/setup@master
      - env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        run: snyk test --severity-threshold=high

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v2
        with:
          sarif_file: results.sarif

GitLab CI

# .gitlab-ci.yml
snyk_scan:
  image: snyk/snyk:latest
  script:
    - snyk auth --token $SNYK_TOKEN
    - snyk test --severity-threshold=high --json > results.json
  artifacts:
    reports:
      sast: results.json

Jenkins Pipeline

pipeline {
    agent any
    environment {
        SNYK_TOKEN = credentials('snyk-token')
    }
    stages {
        stage('Snyk Test') {
            steps {
                sh 'npm install -g snyk'
                sh 'snyk auth $SNYK_TOKEN'
                sh 'snyk test --severity-threshold=high --json > results.json'
            }
        }
    }
    post {
        always {
            publishHTML target: [
                reportDir: '.',
                reportFiles: 'results.json',
                reportName: 'Snyk Report'
            ]
        }
    }
}

Combinazioni di Comandi Utili

Flusso di Lavoro Scansione Completa

# 1. Autenticati
snyk auth

# 2. Test dipendenze open source
snyk test --severity-threshold=high

# 3. Scansiona codice per problemi di sicurezza
snyk code test --severity-threshold=high

# 4. Scansiona container
snyk container test myapp:latest

# 5. Scansiona Infrastructure as Code
snyk iac test terraform/

# 6. Genera SBOM
snyk sbom > sbom.json

# 7. Crea snapshot di monitoraggio
snyk monitor --org=<org-id>

Flusso di Lavoro CI/CD

# Installa dipendenze
npm install

# Autenticati
snyk auth --token $SNYK_TOKEN

# Esegui tutte le scansioni con soglia rigida
snyk test --severity-threshold=critical --fail-on=all
snyk code test --severity-threshold=critical
snyk container test $DOCKER_IMAGE --severity-threshold=critical

# Genera report
snyk test --json > sca-results.json
snyk code test --sarif > code-results.sarif
snyk container test $IMAGE --json > container.json

# Monitora per il tracciamento continuo
snyk monitor --org=$SNYK_ORG --project-name=$CI_PROJECT_NAME

Flusso di Lavoro Correzione e Deploy

# Test dello stato attuale
snyk test

# Auto-correggi ciò che può essere corretto
snyk fix

# Rivedi i cambiamenti
git diff

# Test dopo le correzioni
snyk test

# Commit e push
git commit -am "chore: fix security vulnerabilities"
git push

Debug e Risoluzione Problemi

Modalità Debug

# Output verboso per il debug
snyk test --verbose

# Modalità debug (registrazione molto dettagliata)
snyk test --debug

# Verifica autenticazione
snyk auth --debug

# Verifica pacchetti installati
snyk test --print-deps

Problemi Comuni

# Cancella cache
rm -rf ~/.snyk

# Forza re-autenticazione
snyk logout && snyk auth

# Test senza caricare i risultati
snyk test --skip-unresolved

# Verifica versione CLI di Snyk
snyk --version

# Aggiorna alla versione più recente
npm install -g snyk@latest

Riepilogo Test

# Mostra solo riepilogo
snyk test --quiet

# Conta vulnerabilità
snyk test --json | jq '.vulnerabilities | length'

# Ottieni gravità più alta
snyk test --json | jq '.metadata.severityHeader'

Riferimento Variabili d’Ambiente

VariabileScopoEsempio
SNYK_TOKENToken di autenticazione APIexport SNYK_TOKEN=abc123
SNYK_ORGID organizzazione predefinitoexport SNYK_ORG=org-id
SNYK_APIEndpoint API personalizzatoexport SNYK_API=https://custom.snyk.io
SNYK_INTEGRATION_NAMEIdentificatore integrazione in CI/CDexport SNYK_INTEGRATION_NAME=github-actions
NODE_EXTRA_CA_CERTSCertificato CA personalizzatoexport NODE_EXTRA_CA_CERTS=/path/ca.crt
HTTP_PROXYImpostazioni proxy HTTPexport HTTP_PROXY=http://proxy:8080
HTTPS_PROXYImpostazioni proxy HTTPSexport HTTPS_PROXY=https://proxy:8080

Migliori Pratiche

Sicurezza

  • Autenticati sempre con un token API sicuro (non committare mai i token)
  • Usa --severity-threshold=critical nel CI/CD di produzione
  • Aggiorna regolarmente CLI di Snyk all’ultima versione
  • Rivedi e approva le auto-correzioni prima di eseguire il merge
  • Mantieni i file di politica .snyk sotto controllo di versione
  • Usa politiche a livello di organizzazione per la coerenza
  • Monitora continuamente le vulnerabilità con snyk monitor

Prestazioni

  • Usa il flag --quiet per CI/CD per ridurre l’output
  • Usa la cache delle dipendenze tra le esecuzioni dove possibile
  • Esegui scansioni dei container su tag specifici, non su tutti
  • Usa --skip-unresolved per saltare i problemi non correggibili
  • Filtra per gravità per concentrarti su problemi attuabili
  • Scansiona solo i percorsi interessati quando possibile

Flusso di Lavoro

  • Integra in controlli PR per evitare l’unione di codice non sicuro
  • Usa snyk fix per automatizzare l’applicazione di patch
  • Rivedi le decisioni di snyk ignore prima di committare
  • Usa snyk monitor per il tracciamento continuo
  • Configura avvisi per nuove vulnerabilità
  • Documenta eccezioni con motivi e date di scadenza
  • Revisione regolare delle vulnerabilità ignorate

Risorse

Documentazione Ufficiale

Comunità e Supporto

Strumenti Correlati


Ultimo aggiornamento: 2026-03-30