Krijg vandaag je eerste WAFPass-scanresultaat.
Installeer de open-source WAFPass CLI, download de WAF++-controls en scan een voorbeeld-Terraform-bestand. Geen cloud-credentials, geen black box — alleen statische analyse op je Infrastructure-as-Code.
Liever een one-liner? Het installatiescript installeert de CLI en controls voor je.
curl -fsSL https://waf2p.dev/install.sh | sh
irm https://waf2p.dev/install.ps1 | iex
Eén duidelijk pad voor elke use case.
Begin met de 2-minuten CLI-quickstart. Wissel van tabblad wanneer je klaar bent voor het dashboard, CI of handmatige setup.
Krijg je eerste resultaat in 2 minuten
Volg de vier stappen hieronder. Elk commando is ontworpen om je gegarandeerd een leesbaar resultaat te geven bij je eerste poging.
Installeer de CLI
WAFPass wordt gepubliceerd op PyPI als wafpass-core. Python 3.11+ wordt aanbevolen.
Download de controls
De WAF++ controls-catalogus bevat de 83+ regels die WAFPass gebruikt om je code te evalueren.
Aanbevolen: clone de controls-repository. Alternatief: download de controls-zip van de WAFPass-pagina en pak deze uit in controls/.
Bewaar een voorbeeld-Terraform-bestand
Maak een minimaal main.tf. Dit voorbeeld laat expres een publieke S3-bucket staan, zodat WAFPass iets heeft om te markeren.
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
}
Voer je eerste check uit
Richt WAFPass op de huidige map en print de JSON-samenvatting.
Je ziet output zoals deze:
{
"total_controls": 83,
"passed": 81,
"failed": 2,
"pillars": {
"security": { "passed": 18, "failed": 2 }
}
}
Draai het volledige dashboard lokaal
De WAF2p/pass-monorepo levert een unified docker-compose.yml. Het start de CLI, server, dashboard, PostgreSQL en Keycloak in één commando.
| Service | URL | Beschrijving |
|---|---|---|
| wafpass-dashboard | http://localhost:3000 | React-dashboard |
| wafpass-server | http://localhost:8000 | FastAPI REST API |
| Keycloak (SSO) | http://localhost:8080 | Identiteitsprovider (admin / admin) |
| postgres | localhost:5432 | PostgreSQL-database |
Zodra de containers healthy zijn, seed je eerste dashboard-view met de demo-opdracht of door een scanresultaat te pushen:
Bekijk volledige docker-compose.yml
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:
Voeg toe aan CI / pre-commit
Blokkeer niet-conforme infrastructuur voordat deze je main branch bereikt. WAFPass draait volledig op de bestanden in de repo, dus CI-checks zijn snel en hebben geen cloud-secrets nodig.
Installeer de pre-commit hook
Voer het installatiescript van de WAFPass-repository één keer per clone uit. Daarna wordt elke git commit automatisch gecontroleerd.
Voeg WAFPass toe aan GitHub Actions
Gebruik de officiële WAFPass GitHub Action om pull requests die misconfiguraties introduceren te laten falen. Werkt met publieke en private repositories.
Geavanceerde / handmatige setup
Installeer alleen de componenten die je nodig hebt. Begin met de CLI voor CI/CD, voeg daarna de server en het dashboard toe wanneer je persistentie en visuele exploratie nodig hebt.
Core evaluation engine — parse IaC, evalueer controls, genereer rapporten
Van PyPI (aanbevolen)
Van bron
macOS (Apple M-series)
FastAPI persistence layer — slaat runs, ontheffingen, secrets-bevindingen en audit-events op
Van PyPI (aanbevolen)
Configureer & start
API-docs beschikbaar op http://localhost:8000/api/docs
React web dashboard — 22+ compliance-views, evidence-export, RBAC
Veelvoorkomende problemen & oplossingen.
Snelle antwoorden als iets niet meteen werkt.
Controls niet gevonden
Als wafpass check "controls directory not found" rapporteert, toont de CLI automatisch download-instructies. Zorg dat de controls/-map naast de plek staat waar je scans uitvoert.
Poort al in gebruik
Gebruik een andere poort voor de server of het dashboard:
Database-verbindingsfouten
Controleer dat PostgreSQL draait en dat je DATABASE_URL klopt:
Docker-build mislukt
Zorg dat alle drie de repositories naast elkaar in dezelfde parent-directory zijn gekloond wanneer je vanuit bron bouwt:
Je hebt je eerste check uitgevoerd. Wat nu?
Kies de volgende stap die bij je rol past: verdiep je framework-kennis, integreer WAFPass in CI/CD, of verken het volledige visuele dashboard.
Verken de 8 pijlers
Begrijp het WAF++-framework en de controls achter elke pijler.
Lees meer → 02Voeg toe aan GitHub Actions
Blokkeer niet-conforme merges voordat ze je main branch bereiken.
Action instellen → 03Lees de docs
CLI-reference, server-API, configuratie en geavanceerd gebruik.
Open docs →