Obtén tu primer resultado de escaneo con WAFPass hoy.
Instala la CLI de código abierto de WAFPass, descarga los controles WAF++ y escanea un archivo Terraform de ejemplo. Sin credenciales en la nube, sin caja negra: solo análisis estático sobre tu infraestructura como código.
¿Prefieres un one-liner? El instalador configura la CLI y los controles por ti.
curl -fsSL https://waf2p.dev/install.sh | sh
irm https://waf2p.dev/install.ps1 | iex
Una ruta clara para cada caso de uso.
Empieza con el inicio rápido de 2 minutos en CLI. Cambia de pestaña cuando estés listo para el dashboard, CI o la configuración manual.
Obtén tu primer resultado en 2 minutos
Sigue los cuatro pasos a continuación. Cada comando está diseñado para darte un resultado legible y garantizado en tu primer intento.
Instala el CLI
WAFPass se publica en PyPI como wafpass-core. Se recomienda Python 3.11+.
Descarga los controles
El catálogo de controles WAF++ contiene las 83+ reglas que WAFPass usa para evaluar tu código.
Recomendado: clona el repositorio de controles. Alternativa: descarga el zip de controles desde la página de WAFPass y extráelo en controls/.
Guarda un archivo Terraform de ejemplo
Crea un main.tf mínimo. Este ejemplo deja deliberadamente un bucket S3 público para que WAFPass 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
}
Ejecuta tu primer check
Apunta WAFPass al directorio actual e imprime el resumen JSON.
Deberías ver una salida como esta:
{
"total_controls": 83,
"passed": 81,
"failed": 2,
"pillars": {
"security": { "passed": 18, "failed": 2 }
}
}
Ejecuta el dashboard completo en local
El monorepo WAF2p/pass incluye un docker-compose.yml unificado. Levanta el CLI, servidor, dashboard, PostgreSQL y Keycloak en un solo comando.
| Servicio | URL | Descripción |
|---|---|---|
| wafpass-dashboard | http://localhost:3000 | Dashboard React |
| wafpass-server | http://localhost:8000 | API REST FastAPI |
| Keycloak (SSO) | http://localhost:8080 | Proveedor de identidad (admin / admin) |
| postgres | localhost:5432 | Base de datos PostgreSQL |
Una vez los contenedores estén saludables, genera tu primera vista del dashboard con el comando demo o enviando un resultado de escaneo:
Ver 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 infraestructura no conforme antes de que llegue a tu rama principal. WAFPass se ejecuta directamente sobre los archivos del repo, así que los checks en CI son rápidos y no requieren secretos en la nube.
Instala el hook de pre-commit
Ejecuta el script de instalación del repositorio WAFPass una vez por clonación. Después, cada git commit se verifica automáticamente.
Añade WAFPass a GitHub Actions
Usa la GitHub Action oficial de WAFPass para fallar pulls que introduzcan configuraciones erróneas. Funciona con repositorios públicos y privados.
Configuración avanzada / manual
Instala solo los componentes que necesitas. Empieza con el CLI para CI/CD y añade servidor y dashboard cuando necesites persistencia y exploración visual.
Motor de evaluación principal — parsea IaC, evalúa controles, genera informes
Desde PyPI (recomendado)
Desde fuente
macOS (Apple M-series)
Capa de persistencia FastAPI — almacena ejecuciones, exenciones, hallazgos de secretos y eventos de auditoría
Desde PyPI (recomendado)
Configurar e iniciar
Documentación de la API disponible en http://localhost:8000/api/docs
Dashboard web React — 22+ vistas de cumplimiento, exportación de evidencias, RBAC
Problemas comunes y soluciones.
Respuestas rápidas si algo no funciona a la primera.
Controles no encontrados
Si wafpass check reporta "controls directory not found", el CLI mostrará instrucciones de descarga automáticamente. Asegúrate de que la carpeta controls/ esté junto al lugar donde ejecutas los escaneos.
Puerto ya en uso
Usa un puerto diferente para el servidor o el dashboard:
Errores de conexión a la base de datos
Verifica que PostgreSQL esté en ejecución y que tu DATABASE_URL sea correcta:
La compilación de Docker falla
Asegúrate de que los tres repositorios estén clonados lado a lado en el mismo directorio padre al compilar desde fuente:
Has ejecutado tu primer check. ¿Qué sigue?
Elige el siguiente paso que coincida con tu rol: profundiza en el conocimiento del framework, conecta WAFPass a CI/CD o explora el dashboard visual completo.
Explora los 8 pilares
Comprende el framework WAF++ y los controles detrás de cada pilar.
Leer más → 02Añadir a GitHub Actions
Bloquea merges no conformes antes de que lleguen a tu rama principal.
Configurar action → 03Lee la documentación
Referencia de CLI, API del servidor, configuración y uso avanzado.
Abrir docs →