-
Confirma URL, alcance (--all para incluir inactivos; por defecto solo audita workflows activos) y si es todo el tenant o un --workflow-id puntual.
-
Si el usuario solo quiere inventario (cuántos workflows hay, cuántos activos, nombres, cantidad de nodos y triggers) sin correr las siete reglas, usa --summary: hace la misma paginación pero se salta la auditoría, ideal como primer vistazo en instancias grandes.
$env:N8N_API_KEY = "<api-key-del-usuario>"
python "scripts/audit_n8n_workflows.py" --url "https://n8n.midominio.com" --all --summary --json inventario.json
-
Para la auditoría completa:
$env:N8N_API_KEY = "<api-key-del-usuario>"
python "scripts/audit_n8n_workflows.py" --url "https://n8n.midominio.com" --json reporte.json --markdown reporte.md
Agrega --all para incluir workflows inactivos o --workflow-id <id> para auditar uno solo. El listado paginado (GET /workflows) ya trae nodes/connections/settings completos, así que el costo es O(páginas de 250), no O(workflows): una instancia con ~1000 workflows audita en pocos segundos.
-
Si el usuario quiere una copia local de los workflows (backup, versionar en git, revisar offline), agrega --export-dir <carpeta> a cualquiera de los dos modos anteriores. Escribe un .json por workflow (<nombre-sanitizado>__<id>.json, tal cual lo devuelve la API) sin hacer requests extra. Confirma la carpeta destino con el usuario antes de escribir si no la especificó explícitamente.
-
Si el usuario quiere el audit nativo de n8n (credenciales sin usar, nodos riesgosos u oficiales-inseguros, webhooks sin proteger, instancia desactualizada), usa --native-audit: es un modo aparte, no recorre workflows, solo pide POST /api/v1/audit y devuelve el reporte de n8n tal cual. Requiere que la API key tenga el scope securityAudit:generate; si no lo tiene, n8n devuelve 403 y el script corta con el detalle del error.
$env:N8N_API_KEY = "<api-key-del-usuario>"
python "scripts/audit_n8n_workflows.py" --url "https://n8n.midominio.com" --native-audit --json audit-nativo.json --markdown audit-nativo.md
Filtra con --audit-categories credentials,nodes,instance,database,filesystem (subset de las cinco) o --days-abandoned N para ajustar cuándo un workflow cuenta como abandonado. Este reporte es a nivel instancia, no por workflow: complementa las siete reglas (que son por workflow), no las reemplaza.
-
Si el usuario quiere saber qué workflows están fallando de verdad (no solo si tienen errorWorkflow configurado, sino si realmente erroran), usa --executions: pagina /api/v1/executions y agrega por workflow total/OK/error/tasa de error/último status/último error.
$env:N8N_API_KEY = "<api-key-del-usuario>"
python "scripts/audit_n8n_workflows.py" --url "https://n8n.midominio.com" --executions --status error --json ejecuciones.json --markdown ejecuciones.md
/api/v1/executions no tiene filtro de fecha, solo status, workflowId y paginación por cursor — y una instancia real puede tener millones de ejecuciones históricas. Por eso el script trae como máximo --max-executions (default 500, subible) y nunca hace un crawl completo por defecto; si corta antes de agotar el cursor, marca truncated: true y el markdown lo dice explícito — nunca lo omitas al reportar. Usa --status error para ver solo fallos recientes (el caso de uso más común) o --workflow-id <id> para ver el historial de uno solo.
-
Si el usuario quiere inventariar credenciales (cuántas hay, de qué tipo, con qué proyecto están compartidas y con qué rol), usa --credentials: pagina /api/v1/credentials, que por diseño de n8n nunca devuelve el valor de la credencial, solo metadata. Requiere que la API key pertenezca al owner/admin de la instancia (credential:list scope); si no, 403.
$env:N8N_API_KEY = "<api-key-del-usuario>"
python "scripts/audit_n8n_workflows.py" --url "https://n8n.midominio.com" --credentials --json credenciales.json --markdown credenciales.md
No dupliques lo que ya hace --native-audit (que ya distingue credenciales sin usar/sin usar en activos/sin ejecutar recientemente): --credentials es un inventario plano, no un detector de riesgo.
-
Revisa manualmente cada hallazgo WARN (nodos de alto riesgo): confirma si el comando/código ejecutado es necesario y si corre con el mínimo privilegio posible. El script no puede juzgar intención, solo presencia.
-
Para cada workflow, presenta las siete reglas en orden con [PASSED], [FAILED] o [WARN], evidencia (nombres de nodo, nunca valores de parámetros completos) y justificación.
-
Cierra con una tabla consolidada por workflow y un plan de acción priorizado: primero FAILED de seguridad (reglas 1, 2), después robustez (4, 5, 6, 7), luego WARN de revisión manual (regla 3). Si corriste --summary, cierra en cambio con el conteo total/activos/inactivos y sugiere una auditoría completa como siguiente paso. Si corriste --export-dir, confirma cuántos archivos se escribieron y dónde. Si corriste --native-audit, presenta cada risk report (Credentials/Nodes/Instance/Database/Filesystem) con sus secciones, cantidad de hallazgos y recomendación, priorizando por cantidad de ubicaciones afectadas. Si corriste --executions, ordena por tasa de error y aclara siempre si la muestra fue truncada. Si corriste --credentials, agrupa por tipo y señala credenciales sin compartir con ningún proyecto además del propietario, si corresponde.