Erster Scan in 2 Minuten.

Installieren Sie die Open-Source-CLI von WOMBATpass, laden Sie die Wombat-Controls herunter und scannen Sie eine Beispiel-Terraform-Datei. Keine Cloud-Zugangsdaten, keine Blackbox — nur statische Analyse Ihres Infrastructure-as-Code.

v1.1.0
WOMBATpass CLI
8
Säulen
100+
Controls
Docker
Compose-fähig
Apache 2.0
Code-Lizenz

Lieber ein Einzeiler? Das Installationsskript richtet CLI und Controls für Sie ein.

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

Ein klarer Weg für jeden Anwendungsfall.

Starten Sie mit dem 2-Minuten-Quickstart der CLI. Wechseln Sie den Tab, sobald Sie bereit für Dashboard, CI oder manuelles Setup sind.

Ihr erstes Ergebnis in 2 Minuten.

Folgen Sie den vier Schritten unten. Jeder Befehl ist so gestaltet, dass Sie schon beim ersten Versuch ein verlässliches, lesbares Ergebnis erhalten.

1

CLI installieren

WOMBATpass ist auf PyPI veröffentlicht als wafpass-core. Python 3.11+ wird empfohlen.

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

Controls herunterladen

Der Wombat-Controls-Katalog enthält die über 100 Regeln, mit denen WOMBATpass Ihren Code bewertet.

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

Empfohlen: Klonen Sie das Controls-Repository. Alternativ: Laden Sie das Controls-ZIP von der WOMBATpass-Seite herunter und entpacken Sie es nach controls/.

3

Beispiel-Terraform-Datei speichern

Legen Sie eine minimale main.tfan. Dieses Beispiel lässt bewusst einen öffentlichen S3-Bucket offen, damit WOMBATpass etwas zu melden hat.

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

Ersten Check ausführen

Richten Sie WOMBATpass auf das aktuelle Verzeichnis und geben Sie die JSON-Zusammenfassung aus.

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

Die Ausgabe sollte etwa so aussehen:

{
  "total_controls": 100,
  "passed": 98,
  "failed": 2,
  "pillars": {
    "security": { "passed": 18, "failed": 2 }
  }
}
98 bestanden: Ressourcen haben den Control erfüllt
2 fehlgeschlagen: Ressourcen haben einen Control verletzt (hier der öffentliche S3-Bucket)
100 Controls: insgesamt geprüfte Regeln über 8 Wombat-Säulen

Teilen: Dieses JSON in eine WOMBATpass Score-Karte verwandeln →

Dasselbe Ergebnis, visualisiert — wenn Sie später das Dashboard hinzufügen:

Das volle Dashboard lokal betreiben.

Das Monorepo WAF2p/pass liefert eine einheitliche docker-compose.ymlmit. Sie startet CLI, Server, Dashboard, PostgreSQL und Keycloak mit einem einzigen Befehl.

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
DienstURLBeschreibung
wafpass-dashboardhttp://localhost:3000React-Dashboard
wafpass-serverhttp://localhost:8000FastAPI REST API
Keycloak (SSO)http://localhost:8080Identity Provider (admin / admin)
postgreslocalhost:5432PostgreSQL-Datenbank

Sobald die Container gesund sind, befüllen Sie Ihre erste Dashboard-Ansicht mit dem Demo-Befehl oder indem Sie ein Scan-Ergebnis hochladen:

bash
$wombat demo # creates sample data and opens the dashboard $open http://localhost:3000
Vollständige docker-compose.yml anzeigen
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:

In CI / Pre-Commit einbinden.

Stoppen Sie nicht konforme Infrastruktur, bevor sie Ihren Main-Branch erreicht. WOMBATpass arbeitet ausschließlich mit den Dateien im Repository — CI-Checks sind schnell und brauchen keine Cloud-Secrets.

1

Pre-Commit-Hook installieren

Führen Sie das Installationsskript aus dem WOMBATpass-Repository einmal pro Klon aus. Danach wird jeder git commit automatisch geprüft.

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

WOMBATpass zu GitHub Actions hinzufügen

Nutzen Sie die offizielle WOMBATpass GitHub Action, um Pull Requests mit Fehlkonfigurationen scheitern zu lassen. Funktioniert mit öffentlichen und privaten Repositories.

WOMBATpass Action einrichten

Fortgeschrittenes / manuelles Setup.

Installieren Sie nur die Komponenten, die Sie brauchen. Starten Sie mit der CLI für CI/CD und ergänzen Sie Server und Dashboard, wenn Sie Persistenz und visuelle Analyse benötigen.

1

wafpass-CLI installieren

Zentrale Prüf-Engine: IaC parsen, Controls bewerten, Berichte erzeugen.

Über PyPI (empfohlen)

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

Aus dem Quellcode

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

wafpass-server installieren

FastAPI-Persistenzschicht: speichert Runs, Waiver, Secret-Findings und Audit-Ereignisse.

Über PyPI (empfohlen)

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

Konfigurieren & starten

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

API-Dokumentation verfügbar unter http://localhost:8000/api/docs

3

wafpass-dashboard installieren

React-Web-Dashboard: über 22 Compliance-Ansichten, Nachweis-Export, 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

Häufige Probleme & Lösungen.

Schnelle Antworten, falls etwas beim ersten Versuch nicht klappt.

Controls nicht gefunden

Wenn wombat check „controls directory not found“ meldet, zeigt die CLI automatisch eine Download-Anleitung an. Achten Sie darauf, dass der Ordner controls/ neben dem Verzeichnis liegt, in dem Sie scannen.

Port bereits belegt

Verwenden Sie einen anderen Port für Server oder Dashboard:

$uvicorn wafpass_server.main:app --port 8001 $npm run dev -- --port 5174
Fehler bei der Datenbankverbindung

Prüfen Sie, ob PostgreSQL läuft und Ihre DATABASE_URL korrekt ist:

$psql $DATABASE_URL -c "SELECT 1"
Docker-Build schlägt fehl

Beim Bauen aus dem Quellcode müssen alle drei Repositories nebeneinander im selben übergeordneten Verzeichnis geklont sein:

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