Obtenha o seu primeiro resultado WAFPass hoje.
Instale a WAFPass CLI de código aberto, transfira os controlos WAF++ e analise um ficheiro Terraform de exemplo. Sem credenciais de nuvem, sem caixa preta — apenas análise estática na sua Infraestrutura-como-Código.
Prefere um comando único? O instalador configura a CLI e os controlos por si.
curl -fsSL https://waf2p.dev/install.sh | sh
irm https://waf2p.dev/install.ps1 | iex
Um caminho claro para cada caso de uso.
Comece pelo início rápido de 2 minutos da CLI. Mude de separador quando estiver pronto para o painel, CI ou configuração manual.
Obtenha o seu primeiro resultado em 2 minutos
Siga os quatro passos abaixo. Cada comando foi concebido para lhe dar um resultado garantido e legível à primeira tentativa.
Instale a CLI
O WAFPass é publicado no PyPI como wafpass-core. Recomenda-se Python 3.11+.
Transfira os controlos
O catálogo de controlos WAF++ contém as 83+ regras que o WAFPass usa para avaliar o seu código.
Recomendado: clonar o repositório de controlos. Alternativa: transferir o zip dos controlos a partir da página WAFPass e extraí-lo para controls/.
Guarde um ficheiro Terraform de exemplo
Crie um main.tf mínimo. Este exemplo deixa deliberadamente um bucket S3 público para que o WAFPass tenha algo para assinalar.
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
}
Execute a sua primeira verificação
Aponte o WAFPass para o diretório actual e imprima o resumo JSON.
Deverá ver um resultado como este:
{
"total_controls": 83,
"passed": 81,
"failed": 2,
"pillars": {
"security": { "passed": 18, "failed": 2 }
}
}
Execute o painel completo localmente
O monorepo WAF2p/pass inclui um docker-compose.yml unificado. Levanta a CLI, o servidor, o painel, o PostgreSQL e o Keycloak num único comando.
| Serviço | URL | Descrição |
|---|---|---|
| wafpass-dashboard | http://localhost:3000 | Painel React |
| wafpass-server | http://localhost:8000 | API REST FastAPI |
| Keycloak (SSO) | http://localhost:8080 | Fornecedor de identidade (admin / admin) |
| postgres | localhost:5432 | Base de dados PostgreSQL |
Assim que os contentores estiverem saudáveis, preencha a primeira vista do painel com o comando de demonstração ou enviando um resultado de análise:
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:
Adicionar a CI / pré-commit
Bloqueie infraestrutura não conforme antes de chegar ao branch principal. O WAFPass executa inteiramente sobre os ficheiros no repositório, por isso as verificações de CI são rápidas e não precisam de segredos de nuvem.
Instale o gancho pré-commit
Execute o script de instalação do repositório WAFPass uma vez por clone. Depois disso, cada git commit é verificado automaticamente.
Adicione o WAFPass às GitHub Actions
Use a GitHub Action oficial do WAFPass para falhar pulls que introduzam más configurações. Funciona com repositórios públicos e privados.
Configuração avançada / manual
Instale apenas os componentes de que precisa. Comece pela CLI para CI/CD e adicione o servidor e o painel quando precisar de persistência e exploração visual.
Motor de avaliação principal — analisar IaC, avaliar controlos, gerar relatórios
A partir do PyPI (recomendado)
A partir do código fonte
macOS (Apple M-series)
Camada de persistência FastAPI — guarda execuções, renúncias, achados de segredos e eventos de auditoria
A partir do PyPI (recomendado)
Configurar e iniciar
Documentação da API disponível em http://localhost:8000/api/docs
Painel web React — 22+ vistas de conformidade, exportação de evidências, RBAC
Problemas comuns e correções.
Respostas rápidas se algo não funcionar à primeira tentativa.
Controlos não encontrados
Se wafpass check reportar "controls directory not found", a CLI mostrará instruções de transferência automaticamente. Certifique-se de que a pasta controls/ fica junto de onde executa as análises.
Porta já em uso
Use uma porta diferente para o servidor ou painel:
Erros de ligação à base de dados
Verifique se o PostgreSQL está a correr e se o seu DATABASE_URL está correcto:
Falha na compilação Docker
Certifique-se de que os três repositórios são clonados lado a lado no mesmo diretório pai ao compilar a partir do código fonte:
Executou a sua primeira verificação. E agora?
Escolha o próximo passo de acordo com o seu papel: aprofundar conhecimentos do framework, ligar o WAFPass a CI/CD ou explorar o painel visual completo.
Explore os 8 pilares
Compreenda o framework WAF++ e os controlos por trás de cada pilar.
Ler mais → 02Adicionar às GitHub Actions
Bloqueie merges não conformes antes que eles cheguem ao seu branch principal.
Configurar a ação → 03Ler a documentação
Referência da CLI, API do servidor, configuração e utilização avançada.
Abrir documentação →