Rokad
Toda la documentación
Documentación de dhal

Configuración

Comprende dhal.json, los modos operativos, la seguridad de ejecución y la precedencia.

Ver repositorio
Documentación de dhal
Página 2 de 9

Dhal v1 utiliza schemaVersion: "1". El archivo predeterminado es dhal.json, aunque los adaptadores y createDhal() aceptan otro configPath.

Precedencia

La configuración efectiva se construye en este orden:

  1. valores predeterminados incorporados;
  2. archivo indicado por configPath;
  3. sobrescritura config pasada al motor o adaptador.

Los objetos se combinan recursivamente y los arrays se sustituyen.

ts
import { createDhal } from "@rokadhq/dhal";

const protection = createDhal({
  configPath: "dhal.json",
  config: {
    mode: "monitor",
    response: { message: "Solicitud rechazada" }
  }
});

Configuración mínima

json
{
  "schemaVersion": "1",
  "mode": "monitor",
  "trustProxy": false,
  "runtime": {
    "onInternalError": "allow",
    "internalErrorStatusCode": 500,
    "maxInspectionMs": 25,
    "bypass": {
      "enabled": true,
      "paths": ["/health", "/ready"],
      "methods": ["OPTIONS"]
    }
  },
  "rateLimit": {
    "enabled": true,
    "store": "memory",
    "keyBy": ["ip", "route"],
    "default": { "windowSeconds": 60, "max": 120 },
    "routes": {}
  }
}

Secciones principales

CampoFunción
modeComportamiento global off, monitor, block o strict.
trustProxyConfía en cabeceras de reenvío para resolver la IP.
runtimeErrores internos, presupuesto de inspección y bypass.
identityCabeceras de usuario, tenant y clave API.
ipListas permitidas/bloqueadas y reputación.
rateLimitLímites globales y por ruta.
rulesFirmas, bots, payload, API, cabeceras y credenciales.
routesSobrescrituras por ruta.
policySeveridad, supresiones, muestreo y requisitos CI.
observabilityRedacción, eventos, OTel y webhooks.
responseEstado y mensaje de bloqueo.

Seguridad de ejecución

Usa onInternalError: "allow" durante la adopción inicial cuando la disponibilidad sea prioritaria. Usa comportamiento fail-closed solo después de validar dependencias y fallos.

Mantén los bypass limitados a endpoints que no procesen entrada no confiable.

Confianza en proxies

Activa trustProxy únicamente cuando un proxy confiable sobrescriba las cabeceras de reenvío y el acceso directo a la aplicación esté bloqueado. Una configuración incorrecta permite falsificar la IP usada por límites, reputación y auditoría.

Secretos

Los campos como apiKeyEnv y secretEnv contienen nombres de variables de entorno, no secretos. Guarda las credenciales en variables de entorno o un gestor de secretos.

Validación

bash
npx dhal test-config
npx dhal migrate --check

El esquema JSON también está disponible como @rokadhq/dhal/dhal.schema.json y mediante getDhalConfigJsonSchema().