Primer escaneo, en 2 minutos.
Instala la CLI open source de WOMBATpass, descarga los controles de Wombat y escanea un archivo de Terraform de ejemplo. Sin credenciales cloud, sin cajas negras: solo análisis estático de tu Infrastructure as Code.
¿Prefieres una sola línea? El instalador configura la CLI y los controles por ti.
$curl -fsSL https://wombat-cli.dev/install.sh | sh
$irm https://wombat-cli.dev/install.ps1 | iex
Un camino claro para cada caso de uso.
Empieza con el quickstart de la CLI de 2 minutos. Cambia de pestaña cuando estés listo para el panel, la CI o la configuración manual.
Obtén tu primer resultado en 2 minutos.
Sigue los cuatro pasos de abajo. Cada comando está pensado para darte un resultado garantizado y legible al primer intento.
Instalar la CLI
WOMBATpass está publicado en PyPI como wafpass-core. Se recomienda Python 3.11+.
$pip install wafpass-core
$wombat --version
Descargar los controles
El catálogo de controles de Wombat contiene las más de 100 reglas con las que WOMBATpass evalúa tu código.
$git clone https://github.com/WAF2p/framework.git controls-src
$cp -r controls-src/modules/controls/controls ./controls
Recomendado: clona el repositorio de controles. Alternativa: descarga el zip de controles desde la página de WOMBATpass y extráelo en controls/.
Guardar un archivo de Terraform de ejemplo
Crea un main.tfmínimo. Este ejemplo deja a propósito un bucket S3 público para que WOMBATpass tenga algo que señalar.
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
}
Ejecutar tu primera comprobación
Apunta WOMBATpass al directorio actual e imprime el resumen en JSON.
$wombat check . --output json | jq '.summary'
Deberías ver una salida como esta:
{
"total_controls": 100,
"passed": 98,
"failed": 2,
"pillars": {
"security": { "passed": 18, "failed": 2 }
}
}
El mismo resultado, visualizado, si más adelante añades el panel:
Ejecuta el panel completo en local.
El monorepo WAF2p/pass incluye un docker-compose.ymlunificado. Levanta la CLI, el servidor, el panel, PostgreSQL y Keycloak con un solo comando.
$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
| Servicio | URL | Descripción |
|---|---|---|
| wafpass-dashboard | http://localhost:3000 | Panel en React |
| wafpass-server | http://localhost:8000 | FastAPI REST API |
| Keycloak (SSO) | http://localhost:8080 | Proveedor de identidad (admin / admin) |
| postgres | localhost:5432 | Base de datos PostgreSQL |
Cuando los contenedores estén sanos, llena tu primera vista del panel con el comando demo o subiendo un resultado de escaneo:
$wombat demo # creates sample data and opens the dashboard
$open http://localhost:3000
Ver el 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:
Añadir a CI / pre-commit.
Bloquea la infraestructura no conforme antes de que llegue a tu rama principal. WOMBATpass trabaja solo con los archivos del repositorio, así que las comprobaciones de CI son rápidas y no necesitan secretos cloud.
Instalar el hook de pre-commit
Ejecuta el script de instalación del repositorio de WOMBATpass una vez por clon. Después, cada git commit se comprueba automáticamente.
$bash hooks/install.sh # macOS / Linux / Git Bash
$.\hooks\install.ps1 # Windows PowerShell
Añadir WOMBATpass a GitHub Actions
Usa la GitHub Action oficial de WOMBATpass para hacer fallar los pull requests que introduzcan errores de configuración. Funciona con repositorios públicos y privados.
Configurar WOMBATpass ActionConfiguración avanzada / manual.
Instala solo los componentes que necesites. Empieza con la CLI para CI/CD y añade el servidor y el panel cuando necesites persistencia y exploración visual.
Instalar la CLI wafpass
Motor de evaluación principal: analiza IaC, evalúa controles y genera informes.
Desde PyPI (recomendado)
$pip install wafpass-core
$uv add wafpass-core # recommended for Python projects
Desde el código fuente
$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
Instalar wafpass-server
Capa de persistencia con FastAPI: almacena ejecuciones, excepciones, secretos detectados y eventos de auditoría.
Desde PyPI (recomendado)
$pip install wafpass-server
$uv add wafpass-server # recommended for Python projects
Configurar e iniciar
$cp .env.example .env # set DATABASE_URL and JWT secret
$alembic upgrade head # apply database migrations
$uvicorn wafpass_server.main:app --reload --port 8000
Documentación de la API disponible en http://localhost:8000/api/docs
Instalar wafpass-dashboard
Panel web en React: más de 22 vistas de cumplimiento, exportación de evidencias y 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
Problemas habituales y soluciones.
Respuestas rápidas si algo no funciona al primer intento.
No se encuentran los controles
Si wombat check indica "controls directory not found", la CLI muestra automáticamente las instrucciones de descarga. Asegúrate de que la carpeta controls/ esté junto al lugar desde donde ejecutas los escaneos.
Puerto ya en uso
Usa otro puerto para el servidor o el panel:
$uvicorn wafpass_server.main:app --port 8001
$npm run dev -- --port 5174
Errores de conexión a la base de datos
Comprueba que PostgreSQL está en marcha y que tu DATABASE_URL es correcta:
$psql $DATABASE_URL -c "SELECT 1"
Falla la build de Docker
Al compilar desde el código fuente, asegúrate de que los tres repositorios estén clonados uno junto a otro en el mismo directorio padre:
$ls -1
pass/
wafpass-server/
wafpass-dashboard/
Ya hiciste tu primera comprobación. ¿Y ahora?
Elige el siguiente paso según tu rol: profundizar en el framework, integrar WOMBATpass en CI/CD o explorar el panel visual completo.
Explorar los 8 pilares
Entiende el framework Wombat y los controles detrás de cada pilar.
Leer más →Añadir a GitHub Actions
Bloquea los merges no conformes antes de que lleguen a tu rama principal.
Configurar la action →Leer la documentación
Referencia de la CLI, API del servidor, configuración y uso avanzado.
Abrir la documentación →