Eerste scan, in 2 minuten.
Installeer de open-source WOMBATpass-CLI, download de Wombat-controls en scan een voorbeeldbestand in Terraform. Geen cloudcredentials, geen black box — alleen statische analyse van je Infrastructure-as-Code.
Liever een one-liner? Het installatiescript zet de CLI en controls voor je klaar.
$curl -fsSL https://wombat-cli.dev/install.sh | sh
$irm https://wombat-cli.dev/install.ps1 | iex
Eén duidelijk pad voor elke use case.
Begin met de CLI-quickstart van 2 minuten. Wissel van tab zodra je klaar bent voor het dashboard, CI of een handmatige setup.
Je eerste resultaat in 2 minuten.
Volg de vier stappen hieronder. Elk commando is zo opgezet dat je bij de eerste poging een gegarandeerd, leesbaar resultaat krijgt.
De CLI installeren
WOMBATpass is op PyPI gepubliceerd als wafpass-core. Python 3.11+ wordt aanbevolen.
$pip install wafpass-core
$wombat --version
De controls downloaden
De Wombat-controlcatalogus bevat de 100+ regels waarmee WOMBATpass je code beoordeelt.
$git clone https://github.com/WAF2p/framework.git controls-src
$cp -r controls-src/modules/controls/controls ./controls
Aanbevolen: clone de controls-repository. Alternatief: download de controls-zip van de WOMBATpass-pagina en pak hem uit naar controls/.
Een voorbeeldbestand in Terraform opslaan
Maak een minimale main.tfaan. Dit voorbeeld laat bewust een publieke S3-bucket open, zodat WOMBATpass iets te melden heeft.
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
}
Je eerste check uitvoeren
Richt WOMBATpass op de huidige map en toon de JSON-samenvatting.
$wombat check . --output json | jq '.summary'
Je zou output als deze moeten zien:
{
"total_controls": 100,
"passed": 98,
"failed": 2,
"pillars": {
"security": { "passed": 18, "failed": 2 }
}
}
Hetzelfde resultaat, gevisualiseerd, als je later het dashboard toevoegt:
Draai het volledige dashboard lokaal.
De monorepo WAF2p/pass levert een uniforme docker-compose.ymlmee. Die start CLI, server, dashboard, PostgreSQL en Keycloak met één commando.
$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
| Service | URL | Beschrijving |
|---|---|---|
| wafpass-dashboard | http://localhost:3000 | React-dashboard |
| wafpass-server | http://localhost:8000 | FastAPI REST API |
| Keycloak (SSO) | http://localhost:8080 | Identity provider (admin / admin) |
| postgres | localhost:5432 | PostgreSQL-database |
Zodra de containers gezond zijn, vul je je eerste dashboardweergave met het demo-commando of door een scanresultaat te pushen:
$wombat demo # creates sample data and opens the dashboard
$open http://localhost:3000
Volledige docker-compose.yml bekijken
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:
Toevoegen aan CI / pre-commit.
Houd niet-conforme infrastructuur tegen voordat die je main-branch bereikt. WOMBATpass werkt alleen met de bestanden in de repository, dus CI-checks zijn snel en hebben geen cloudsecrets nodig.
De pre-commit-hook installeren
Voer het installatiescript uit de WOMBATpass-repository één keer per clone uit. Daarna wordt elke git commit automatisch gecontroleerd.
$bash hooks/install.sh # macOS / Linux / Git Bash
$.\hooks\install.ps1 # Windows PowerShell
WOMBATpass toevoegen aan GitHub Actions
Gebruik de officiële WOMBATpass GitHub Action om pull requests met misconfiguraties te laten falen. Werkt met publieke en private repositories.
WOMBATpass Action instellenGeavanceerde / handmatige setup.
Installeer alleen de componenten die je nodig hebt. Begin met de CLI voor CI/CD en voeg server en dashboard toe wanneer je persistentie en visuele analyse nodig hebt.
wafpass-CLI installeren
Centrale evaluatie-engine: IaC parsen, controls evalueren, rapporten genereren.
Via PyPI (aanbevolen)
$pip install wafpass-core
$uv add wafpass-core # recommended for Python projects
Vanuit de broncode
$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)
$brew install git python uv
$git clone https://github.com/WAF2p/pass.git && cd pass
$uv pip install -e .
$wombat --version # verify installation
wafpass-server installeren
FastAPI-persistentielaag: slaat runs, waivers, gevonden secrets en audit-events op.
Via PyPI (aanbevolen)
$pip install wafpass-server
$uv add wafpass-server # recommended for Python projects
Configureren & starten
$cp .env.example .env # set DATABASE_URL and JWT secret
$alembic upgrade head # apply database migrations
$uvicorn wafpass_server.main:app --reload --port 8000
API-documentatie beschikbaar op http://localhost:8000/api/docs
wafpass-dashboard installeren
React-webdashboard: 22+ complianceweergaven, bewijsexport, RBAC.
$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
Veelvoorkomende problemen & oplossingen.
Snelle antwoorden als iets niet meteen werkt.
Controls niet gevonden
Als wombat check "controls directory not found" meldt, toont de CLI automatisch downloadinstructies. Zorg dat de map controls/ naast de plek staat waar je scant.
Poort al in gebruik
Gebruik een andere poort voor de server of het dashboard:
$uvicorn wafpass_server.main:app --port 8001
$npm run dev -- --port 5174
Fouten bij de databaseverbinding
Controleer of PostgreSQL draait en of je DATABASE_URL klopt:
$psql $DATABASE_URL -c "SELECT 1"
Docker-build mislukt
Bij een build vanuit de broncode moeten alle drie de repositories naast elkaar in dezelfde bovenliggende map gecloned zijn:
$ls -1
pass/
wafpass-server/
wafpass-dashboard/
Je eerste check is gedaan. Wat nu?
Kies de volgende stap die bij je rol past: verdiep je in het framework, koppel WOMBATpass aan CI/CD of verken het volledige visuele dashboard.
Verken de 8 pijlers
Begrijp het Wombat-framework en de controls achter elke pijler.
Lees meer →Toevoegen aan GitHub Actions
Houd niet-conforme merges tegen voordat ze je main-branch bereiken.
Action instellen →Lees de documentatie
CLI-referentie, server-API, configuratie en geavanceerd gebruik.
Documentatie openen →