Ottieni oggi il tuo primo risultato di scansione WAFPass.
Installa la CLI WAFPass open source, scarica i controlli WAF++ e scansiona un file Terraform di esempio. Nessuna credenziale cloud, nessuna scatola nera — solo analisi statica sul tuo Infrastructure-as-Code.
Preferisci un comando solo? L’installer configura la CLI e i controlli per te.
curl -fsSL https://waf2p.dev/install.sh | sh
irm https://waf2p.dev/install.ps1 | iex
Un percorso chiaro per ogni esigenza.
Inizia con il quickstart CLI di 2 minuti. Passa alle altre schede quando sei pronto per la dashboard, CI o la configurazione manuale.
Ottieni il tuo primo risultato in 2 minuti
Segui i quattro passaggi qui sotto. Ogni comando è pensato per darti un risultato leggibile e garantito al primo tentativo.
Installa la CLI
WAFPass è pubblicato su PyPI come wafpass-core. Si consiglia Python 3.11+.
Scarica i controlli
Il catalogo dei controlli WAF++ contiene le 83+ regole che WAFPass usa per valutare il tuo codice.
Consigliato: clona il repo dei controlli. Alternativa: scarica lo zip dei controlli dalla pagina WAFPass ed estrailo in controls/.
Salva un file Terraform di esempio
Crea un main.tf minimale. Questo esempio lascia deliberatamente un bucket S3 pubblico in modo che WAFPass abbia 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
}
Esegui il tuo primo controllo
Punta WAFPass sulla directory corrente e stampa il riepilogo JSON.
Dovresti vedere un output come questo:
{
"total_controls": 83,
"passed": 81,
"failed": 2,
"pillars": {
"security": { "passed": 18, "failed": 2 }
}
}
Esegui la dashboard completa in locale
Il monorepo WAF2p/pass include un docker-compose.yml unificato. Avvia CLI, server, dashboard, PostgreSQL e Keycloak con un solo comando.
| Servizio | URL | Descrizione |
|---|---|---|
| wafpass-dashboard | http://localhost:3000 | Dashboard React |
| wafpass-server | http://localhost:8000 | API REST FastAPI |
| Keycloak (SSO) | http://localhost:8080 | Provider di identità (admin / admin) |
| postgres | localhost:5432 | Database PostgreSQL |
Quando i container sono pronti, popola la tua prima vista della dashboard con il comando demo o inviando un risultato di scansione:
Visualizza 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 raggiunga il tuo branch principale. WAFPass gira interamente sui file del repo, quindi i controlli CI sono veloci e non richiedono segreti cloud.
Installa il hook pre-commit
Esegui lo script di installazione dal repository WAFPass una volta per clone. Dopo di che, ogni git commit viene verificato automaticamente.
Aggiungi WAFPass a GitHub Actions
Usa l'azione GitHub ufficiale di WAFPass per far fallire le pull request che introducono errori di configurazione. Funziona con repository pubblici e privati.
Configurazione avanzata / manuale
Installa solo i componenti di cui hai bisogno. Inizia con la CLI per CI/CD, poi aggiungi server e dashboard quando ti servono persistenza ed esplorazione visiva.
Motore di valutazione core — analizza IaC, valuta i controlli, genera report
Da PyPI (consigliato)
Dal codice sorgente
macOS (serie Apple M)
Layer di persistenza FastAPI — memorizza esecuzioni, deroghe, risultati sui segreti ed eventi di audit
Da PyPI (consigliato)
Configura e avvia
Documentazione API disponibile presso http://localhost:8000/api/docs
Dashboard web React — 22+ viste di compliance, esportazione di evidenze, RBAC
Problemi comuni e soluzioni.
Risposte rapide se qualcosa non funziona al primo tentativo.
Controlli non trovati
Se wafpass check segnala "controls directory not found", la CLI mostrerà automaticamente le istruzioni per il download. Assicurati che la cartella controls/ si trovi accanto a dove esegui le scansioni.
Porta già in uso
Usa una porta diversa per il server o la dashboard:
Errori di connessione al database
Verifica che PostgreSQL sia in esecuzione e che il tuo DATABASE_URL sia corretto:
Build Docker fallisce
Assicurati che tutti e tre i repository siano clonati fianco a fianco nella stessa directory padre quando fai la build dal codice sorgente:
Hai eseguito il tuo primo controllo. E ora?
Scegli il passaggio successivo in base al tuo ruolo: approfondisci la conoscenza del framework, integra WAFPass in CI/CD o esplora la dashboard visiva completa.
Esplora gli 8 pilastri
Comprendi il framework WAF++ e i controlli dietro ogni pilastro.
Leggi di più → 02Aggiungi a GitHub Actions
Blocca le merge non conformi prima che raggiungano il tuo branch principale.
Configura l'azione → 03Leggi la documentazione
Riferimento CLI, API server, configurazione e utilizzo avanzato.
Apri la documentazione →