Prima scansione, in 2 minuti.

Installa la CLI open source di WOMBATpass, scarica i controlli Wombat e scansiona un file Terraform di esempio. Nessuna credenziale cloud, nessuna scatola nera: solo analisi statica della tua Infrastructure as Code.

v1.1.0
WOMBATpass CLI
8
Pilastri
100+
Controlli
Docker
Pronto per Compose
Apache 2.0
Licenza del codice

Preferisci una riga sola? Lo script di installazione configura CLI e controlli per te.

macOS / Linux
bash
$curl -fsSL https://wombat-cli.dev/install.sh | sh
Windows
powershell
$irm https://wombat-cli.dev/install.ps1 | iex

Un percorso chiaro per ogni caso d'uso.

Inizia con il quickstart della CLI da 2 minuti. Cambia scheda quando sei pronto per dashboard, CI o configurazione manuale.

Ottieni il tuo primo risultato in 2 minuti.

Segui i quattro passaggi qui sotto. Ogni comando è pensato per darti un risultato garantito e leggibile al primo tentativo.

1

Installa la CLI

WOMBATpass è pubblicato su PyPI come wafpass-core. Si consiglia Python 3.11+.

bash
$pip install wafpass-core $wombat --version
2

Scarica i controlli

Il catalogo dei controlli Wombat contiene le oltre 100 regole che WOMBATpass usa per valutare il tuo codice.

bash
$git clone https://github.com/WAF2p/framework.git controls-src $cp -r controls-src/modules/controls/controls ./controls

Consigliato: clona il repository dei controlli. In alternativa: scarica lo zip dei controlli dalla pagina di WOMBATpass ed estrailo in controls/.

3

Salva un file Terraform di esempio

Crea un main.tfminimo. Questo esempio lascia volutamente un bucket S3 pubblico, così WOMBATpass ha qualcosa da segnalare.

provider "aws" {
  region = "eu-central-1"
}

resource "aws_s3_bucket" "public" {
  bucket = "wafpp-first-check-demo"
}

resource "aws_s3_bucket_public_access_block" "public" {
  bucket                  = aws_s3_bucket.public.id
  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}
4

Esegui il tuo primo controllo

Punta WOMBATpass sulla directory corrente e stampa il riepilogo JSON.

bash
$wombat check . --output json | jq '.summary'

Dovresti vedere un output simile a questo:

{
  "total_controls": 100,
  "passed": 98,
  "failed": 2,
  "pillars": {
    "security": { "passed": 18, "failed": 2 }
  }
}
98 superati: risorse conformi al controllo
2 falliti: risorse che hanno violato un controllo (qui, il bucket S3 pubblico)
100 controlli: totale delle regole valutate sugli 8 pilastri Wombat

Lo stesso risultato, visualizzato, se in seguito aggiungi la dashboard:

Esegui la dashboard completa in locale.

Il monorepo WAF2p/pass include un docker-compose.ymlunificato. Avvia CLI, server, dashboard, PostgreSQL e Keycloak con un solo comando.

bash
$git clone https://github.com/WAF2p/pass.git $cd pass $cp .env.example .env $# Edit .env, set POSTGRES_PASSWORD, WAFPASS_JWT_SECRET, etc. $docker compose up -d
ServizioURLDescrizione
wafpass-dashboardhttp://localhost:3000Dashboard React
wafpass-serverhttp://localhost:8000FastAPI REST API
Keycloak (SSO)http://localhost:8080Identity provider (admin / admin)
postgreslocalhost:5432Database PostgreSQL

Quando i container sono in salute, popola la tua prima vista della dashboard con il comando demo o caricando un risultato di scansione:

bash
$wombat demo # creates sample data and opens the dashboard $open http://localhost:3000
Mostra il docker-compose.yml completo
services:

  # ── PostgreSQL ────────────────────────────────────────────
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER:     ${POSTGRES_USER:-wafpass}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-wafpass}
      POSTGRES_DB:       ${POSTGRES_DB:-wafpass}
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./keycloak/init.sql:/docker-entrypoint-initdb.d/01-keycloak-db.sql:ro
    ports:
      - "${POSTGRES_PORT:-5432}:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-wafpass} -d ${POSTGRES_DB:-wafpass}"]
      interval: 5s
      timeout: 5s
      retries: 10

  # ── wafpass-server ────────────────────────────────────────
  wafpass-server:
    build:
      context: .
      dockerfile: wafpass-server/Dockerfile
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      DATABASE_URL:               postgresql+asyncpg://${POSTGRES_USER:-wafpass}:${POSTGRES_PASSWORD:-wafpass}@postgres:5432/${POSTGRES_DB:-wafpass}
      WAFPASS_ENV:                ${WAFPASS_ENV:-local}
      CORS_ORIGINS:               ${API_URL:-http://localhost:3000},http://wafpass-dashboard,http://cloud.waf2p
      WAFPASS_CONTROLS_DIR:       ${WAFPASS_CONTROLS_DIR:-/app/controls}
      WAFPASS_JWT_SECRET:         ${WAFPASS_JWT_SECRET:-change-me-in-production}
      WAFPASS_JWT_EXPIRE_MINUTES: ${WAFPASS_JWT_EXPIRE_MINUTES:-60}
      WAFPASS_JWT_REFRESH_DAYS:   ${WAFPASS_JWT_REFRESH_DAYS:-7}
      WAFPASS_ADMIN_USERNAME:     ${WAFPASS_ADMIN_USERNAME:-admin}
      WAFPASS_ADMIN_PASSWORD:     ${WAFPASS_ADMIN_PASSWORD:-admin}
      WAFPASS_ADMIN_ROLE:         ${WAFPASS_ADMIN_ROLE:-admin}
      WAFPASS_API_KEY:            ${WAFPASS_API_KEY:-key}
    ports:
      - "8000:8000"

  # ── Keycloak (SSO / IdP — dev mode) ──────────────────────
  keycloak:
    image: quay.io/keycloak/keycloak:26.1
    command: start-dev
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      KC_DB:                   postgres
      KC_DB_URL:               jdbc:postgresql://postgres:5432/${KEYCLOAK_DB:-keycloak}
      KC_DB_USERNAME:          ${KEYCLOAK_DB_USER:-keycloak}
      KC_DB_PASSWORD:          ${KEYCLOAK_DB_PASSWORD:-keycloak}
      KEYCLOAK_ADMIN:          ${KEYCLOAK_ADMIN_USER:-admin}
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD:-admin}
      KC_HTTP_ENABLED:         "true"
      KC_HOSTNAME_STRICT:      "false"
      KC_HEALTH_ENABLED:       "true"
    ports:
      - "${KEYCLOAK_PORT:-8080}:8080"
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost:8080/health/ready || exit 1"]
      interval: 15s
      timeout: 5s
      retries: 20
      start_period: 60s

  # ── wafpass-dashboard ─────────────────────────────────────
  wafpass-dashboard:
    build:
      context: ./wafpass-dashboard
      dockerfile: Dockerfile
    restart: unless-stopped
    depends_on:
      - wafpass-server
    ports:
      - "3000:80"

volumes:
  postgres_data:

Aggiungi a CI / pre-commit.

Blocca l'infrastruttura non conforme prima che arrivi al branch principale. WOMBATpass lavora solo sui file del repository, quindi i controlli in CI sono rapidi e non richiedono segreti cloud.

1

Installa l'hook pre-commit

Esegui lo script di installazione dal repository WOMBATpass una volta per clone. Da quel momento ogni git commit viene controllato automaticamente.

bash
$bash hooks/install.sh # macOS / Linux / Git Bash $.\hooks\install.ps1 # Windows PowerShell
2

Aggiungi WOMBATpass a GitHub Actions

Usa la GitHub Action ufficiale di WOMBATpass per far fallire le pull request che introducono configurazioni errate. Funziona con repository pubblici e privati.

Configura WOMBATpass Action

Configurazione avanzata / manuale.

Installa solo i componenti che ti servono. Inizia con la CLI per CI/CD, poi aggiungi server e dashboard quando ti servono persistenza ed esplorazione visiva.

1

Installa la CLI wafpass

Motore di valutazione principale: analizza l'IaC, valuta i controlli, genera report.

Da PyPI (consigliato)

bash
$pip install wafpass-core $uv add wafpass-core # recommended for Python projects

Dal sorgente

bash
$git clone https://github.com/WAF2p/pass.git $cd pass $uv pip install -e . # recommended $pip install -e ".[pdf]" # with PDF report support

macOS (Apple M-series)

bash
$brew install git python uv $git clone https://github.com/WAF2p/pass.git && cd pass $uv pip install -e . $wombat --version # verify installation
2

Installa wafpass-server

Livello di persistenza FastAPI: archivia esecuzioni, deroghe, segreti individuati ed eventi di audit.

Da PyPI (consigliato)

bash
$pip install wafpass-server $uv add wafpass-server # recommended for Python projects

Configura e avvia

bash
$cp .env.example .env # set DATABASE_URL and JWT secret $alembic upgrade head # apply database migrations $uvicorn wafpass_server.main:app --reload --port 8000

Documentazione API disponibile su http://localhost:8000/api/docs

3

Installa wafpass-dashboard

Dashboard web React: oltre 22 viste di conformità, esportazione delle evidenze, RBAC.

bash
$git clone https://github.com/WAF2p/wafpass-dashboard.git $cd wafpass-dashboard $npm install $cp .env.example .env.local # set VITE_API_URL $npm run dev # dev server at http://localhost:5173

Problemi comuni e soluzioni.

Risposte rapide se qualcosa non funziona al primo tentativo.

Controlli non trovati

Se wombat check segnala "controls directory not found", la CLI mostra automaticamente le istruzioni per il download. Assicurati che la cartella controls/ si trovi accanto al punto da cui esegui le scansioni.

Porta già in uso

Usa un'altra porta per il server o la dashboard:

$uvicorn wafpass_server.main:app --port 8001 $npm run dev -- --port 5174
Errori di connessione al database

Verifica che PostgreSQL sia in esecuzione e che la tua DATABASE_URL sia corretta:

$psql $DATABASE_URL -c "SELECT 1"
La build Docker fallisce

Quando compili dal sorgente, i tre repository devono essere clonati uno accanto all'altro nella stessa directory padre:

$ls -1 pass/ wafpass-server/ wafpass-dashboard/