Dhal v1 verwendet schemaVersion: "1". Die Standarddatei ist dhal.json; Adapter und createDhal() akzeptieren jedoch einen anderen configPath.
Priorität
Die wirksame Konfiguration entsteht in dieser Reihenfolge:
- integrierte Standardwerte;
- Datei aus
configPath; - Inline-Überschreibung
configam Motor oder Adapter.
Objekte werden rekursiv zusammengeführt, Arrays ersetzt.
import { createDhal } from "@rokadhq/dhal";
const protection = createDhal({
configPath: "dhal.json",
config: {
mode: "monitor",
response: { message: "Request abgelehnt" }
}
});Minimale Konfiguration
{
"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": {}
}
}Hauptbereiche
| Feld | Zweck |
|---|---|
mode | Globales Verhalten off, monitor, block oder strict. |
trustProxy | Vertraut Forwarding-Headern zur IP-Ermittlung. |
runtime | Interne Fehler, Inspektionsbudget und Bypass. |
identity | Header für Benutzer, Tenant und API-Schlüssel. |
ip | Allow-/Blocklisten und Reputation. |
rateLimit | Globale und routenbezogene Limits. |
rules | Signaturen, Bots, Payload, API, Header und Credentials. |
routes | Routenbezogene Überschreibungen. |
policy | Schweregrad, Suppressions, Sampling und CI. |
observability | Redaction, Events, OTel und Webhooks. |
response | Status und Meldung bei Blockierung. |
Laufzeitsicherheit
Verwenden Sie während der Einführung onInternalError: "allow", wenn Verfügbarkeit Vorrang hat. Fail-closed sollte erst nach Tests von Abhängigkeiten und Fehlerfällen eingesetzt werden.
Bypasses sollten nur Endpoints umfassen, die keine nicht vertrauenswürdigen Anwendungsdaten verarbeiten.
Proxy-Vertrauen
Aktivieren Sie trustProxy nur hinter einem vertrauenswürdigen Proxy, der Forwarding-Header überschreibt und direkten Zugriff auf die Anwendung verhindert. Eine falsche Einstellung kann IP-basierte Limits, Reputation und Audit schwächen.
Secrets und Validierung
apiKeyEnv und secretEnv enthalten Namen von Umgebungsvariablen, keine Secrets.
npx dhal test-config
npx dhal migrate --checkDas JSON-Schema steht unter @rokadhq/dhal/dhal.schema.json und über getDhalConfigJsonSchema() bereit.