OpenWAF Egress se sitúa entre tus agentes IA y sus proveedores. Los agentes llaman a la pasarela con un token sustituto y la pasarela añade la credencial real del proveedor, inspecciona la petición y bloquea inyecciones, fugas de datos y destinos no permitidos. Leer exige el rol readonly y escribir admin, ambos de toda la organización; crear y cambiar agentes, destinos y credenciales y leer los eventos exige que la organización tenga activada la función egress (si no, 403 feature_disabled). Consulta OpenWAF Egress.
Devuelve el estado del egress de la organización. Se puede leer sin la función egress (enabled a falso). Sin la función, leer y borrar agentes, destinos y credenciales sigue funcionando para que la organización pueda retirar sus claves.
Rol necesario:readonly o superior. De toda la organización.
Crea un destino propio HTTPS. base_url debe ser https:// en el puerto 443 con un nombre DNS público (sin dirección IP, usuario, consulta ni fragmento). En cada petición la pasarela comprueba además que el nombre solo resuelve a direcciones públicas (ssrf_blocked).
Rol necesario:admin o superior. De toda la organización.
import { OpenWAF } from"./openwaf";
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKENconst result = await owf.deleteEgressTarget({
target: "openai"
});
from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev") # token de OPENWAF_TOKEN
result = owf.delete_egress_target(target="openai")
PUT /v1/orgs/{org}/egress/targets/{target}/credential
Guarda o sustituye la credencial del proveedor de un destino. Es de solo escritura, se guarda en un almacén de secretos dedicado, nunca se registra ni se devuelve; la respuesta solo lleva su huella (sha256: y 12 caracteres hexadecimales).
Rol necesario:admin o superior. De toda la organización.
import { OpenWAF } from"./openwaf";
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKENconst result = await owf.deleteEgressCredential({
target: "openai"
});
from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev") # token de OPENWAF_TOKEN
result = owf.delete_egress_credential(target="openai")
Crea un agente que puede llamar a algunos destinos a través de la pasarela. Su token sustituto solo se devuelve en esta respuesta. name forma parte de las URL de la pasarela del agente y no se puede cambiar.
Rol necesario:admin o superior. De toda la organización.
import { OpenWAF } from"./openwaf";
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKENconst result = await owf.getEgressAgent({
agent: "4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c"
});
from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev") # token de OPENWAF_TOKEN
result = owf.get_egress_agent(agent="4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c")
import { OpenWAF } from"./openwaf";
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKENconst result = await owf.deleteEgressAgent({
agent: "4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c"
});
from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev") # token de OPENWAF_TOKEN
result = owf.delete_egress_agent(agent="4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c")
POST /v1/orgs/{org}/egress/agents/{agent}/rotate-token
Da al agente un token sustituto nuevo, que solo se devuelve en esta respuesta. El anterior deja de valer en cuanto las pasarelas cargan la nueva configuración.
Rol necesario:admin o superior. De toda la organización.
curl-X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c/rotate-token" \
-H"Authorization: Bearer $OPENWAF_TOKEN"
import { OpenWAF } from"./openwaf";
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKENconst result = await owf.rotateEgressAgentToken({
agent: "4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c"
});
from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev") # token de OPENWAF_TOKEN
result = owf.rotate_egress_agent_token(agent="4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c")
Lista las peticiones bloqueadas por la pasarela de egress, de la más reciente a la más antigua, con los mismos filtros y forma que Listar eventos. Cada bloqueo es un evento con actionblock, attack_typeegress, el código en rule_name (injection_detected, data_leak_blocked, ssrf_blocked, egress_blocked, body_too_large), el destino en host, el nombre del agente en user_agent y los identificadores de detección en msg. Nunca incluye el cuerpo de la petición.
Rol necesario:readonly o superior. De toda la organización. Exige la función egress.
Id de la organización. Cada ruta comprueba que es la del token (si no, 404).
since
consulta
string (date-time)
No
RFC 3339; por defecto until - 24 h.
until
consulta
string (date-time)
No
RFC 3339, exclusivo; por defecto ahora. Rango máximo 31 días.
action
consulta
string
No
Repetible (cualquiera de los valores, como mucho 20). Uno de block, log, challenge, allow.
ip
consulta
string
No
IPv4 o IPv6 (se normaliza); repetible.
host
consulta
string
No
Nombre exacto (sin distinguir mayúsculas); repetible. De 1 a 253 caracteres.
path
consulta
string
No
Ruta exacta (1-2048 bytes); repetible. De 1 a 2048 caracteres.
status
consulta
integer
No
Estado HTTP de la respuesta; repetible. De 100 a 599.
rule_name
consulta
string
No
rule_name exacto (el código de un bloqueo de egress, p. ej. injection_detected); repetible. De 1 a 200 caracteres.
not_action
consulta
string
No
Excluye esas acciones; repetible. Uno de block, log, challenge, allow.
not_ip
consulta
string
No
Excluye esas IP; repetible.
not_host
consulta
string
No
Excluye esos nombres; repetible. De 1 a 253 caracteres.
not_path
consulta
string
No
Excluye esas rutas exactas; repetible. De 1 a 2048 caracteres.
not_status
consulta
integer
No
Excluye esos estados HTTP; repetible. De 100 a 599.
not_rule_name
consulta
string
No
Excluye esos rule_name; repetible. De 1 a 200 caracteres.
q
consulta
string
No
Texto libre (sin distinguir mayúsculas) en host, ruta, IP, método, rule_name, attack_type, msg, user agent, país, rule_id y status. Como mucho 200 caracteres.
limit
consulta
integer
No
Número máximo de elementos. Por defecto 100. De 1 a 1000.
import { OpenWAF } from"./openwaf";
const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKENconst result = await owf.listEgressEvents({
rule_name: "injection_detected"
});
from openwaf import OpenWAF
owf = OpenWAF(base_url="https://dash.openwaf.dev") # token de OPENWAF_TOKEN
result = owf.list_egress_events(rule_name="injection_detected")
Emite como Server-Sent Events los bloqueos de la pasarela de egress, con las mismas tramas, reanudación y límites que Stream de eventos y los eventos de Listar eventos de egress.
Rol necesario:readonly o superior. De toda la organización. Exige la función egress.
Id de la organización. Cada ruta comprueba que es la del token (si no, 404).
Last-Event-ID
cabecera
string
No
id del último evento recibido de un stream; tiene prioridad sobre cursor.
cursor
consulta
string
No
id de un evento de un stream anterior: se empieza justo después.
action
consulta
string
No
Repetible (cualquiera de los valores, como mucho 20). Uno de block, log, challenge, allow.
ip
consulta
string
No
IPv4 o IPv6 (se normaliza); repetible.
host
consulta
string
No
Nombre exacto (sin distinguir mayúsculas); repetible. De 1 a 253 caracteres.
path
consulta
string
No
Ruta exacta (1-2048 bytes); repetible. De 1 a 2048 caracteres.
status
consulta
integer
No
Estado HTTP de la respuesta; repetible. De 100 a 599.
rule_name
consulta
string
No
rule_name exacto (el código de un bloqueo de egress, p. ej. injection_detected); repetible. De 1 a 200 caracteres.
not_action
consulta
string
No
Excluye esas acciones; repetible. Uno de block, log, challenge, allow.
not_ip
consulta
string
No
Excluye esas IP; repetible.
not_host
consulta
string
No
Excluye esos nombres; repetible. De 1 a 253 caracteres.
not_path
consulta
string
No
Excluye esas rutas exactas; repetible. De 1 a 2048 caracteres.
not_status
consulta
integer
No
Excluye esos estados HTTP; repetible. De 100 a 599.
not_rule_name
consulta
string
No
Excluye esos rule_name; repetible. De 1 a 200 caracteres.
q
consulta
string
No
Texto libre (sin distinguir mayúsculas) en host, ruta, IP, método, rule_name, attack_type, msg, user agent, país, rule_id y status. Como mucho 200 caracteres.