Rokad
Toda la documentación
Documentación de dhal

Reputación y despliegues distribuidos

Usa estado Redis o Valkey y configura reputación IP sin degradaciones silenciosas.

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

Las instancias que protegen las mismas rutas deben compartir contadores de límites y fallos de autenticación.

bash
npm install ioredis
ts
import Redis from "ioredis";
import { RedisRateLimitStore, RedisSignalStore, createDhal } from "@rokadhq/dhal";

const redis = new Redis(process.env.REDIS_URL!);

const protection = createDhal({
  configPath: "dhal.json",
  rateLimitStore: new RedisRateLimitStore(redis, {
    prefix: "production:dhal:rate-limit"
  }),
  signalStore: new RedisSignalStore(redis, {
    prefix: "production:dhal:signals"
  })
});
json
{
  "rateLimit": { "enabled": true, "store": "redis" }
}

Usa prefijos diferentes por aplicación y entorno. Protege Redis o Valkey con autenticación, aislamiento de red, TLS cuando esté disponible y una política de eviction adecuada.

Dhal v1 rechaza el arranque en modo de aplicación si se declara Redis sin proporcionar un rateLimitStore distribuido. Así evita degradar silenciosamente un límite global a contadores por proceso.

Reputación IP

json
{
  "ip": {
    "reputation": {
      "enabled": true,
      "provider": "abuseipdb",
      "apiKeyEnv": "ABUSEIPDB_API_KEY",
      "minScore": 75,
      "cacheTtlSeconds": 86400,
      "maxAgeInDays": 30,
      "mode": "async",
      "timeoutMs": 750
    }
  }
}

Guarda la clave en la variable ABUSEIPDB_API_KEY. Prefiere async para tráfico general. Usa blocking solo cuando la ruta tolere la latencia y el fallo de la dependencia.

Una configuración aplicada con reputación bloqueante no arranca si el proveedor no está disponible.

También puedes pasar una implementación de IpReputationProvider a createDhal() y sobrescribir la reputación por perfil de ruta.

Lista de control

  • Comparte límites y señales entre todas las instancias.
  • Separa prefijos por aplicación y entorno.
  • Monitoriza latencia y errores del datastore.
  • Prueba los fallos antes de aplicar bloqueos.
  • Mantén credenciales fuera de dhal.json.