n8n-nodes-pytenable
v1.0.1
Published
Un nodo de n8n para interactuar con la API de Tenable usando Pytenable en un sandbox de Docker.
Maintainers
Readme
n8n Node: Pytenable
Un nodo para la comunidad de n8n que permite interactuar con las APIs de Tenable.io y Tenable.sc utilizando la librería pytenable de Python en un entorno de ejecución seguro y aislado basado en Docker.
Prerrequisitos
Para utilizar este nodo, tu instancia de n8n debe cumplir con los siguientes requisitos:
- Docker Instalado: El servicio de Docker debe estar instalado y en ejecución en la misma máquina que los workers de n8n.
- Acceso al Socket de Docker: El contenedor del worker de n8n debe tener acceso al socket de Docker del host. Esto se logra montando el volumen
- /var/run/docker.sock:/var/run/docker.socken la configuración de tudocker-compose.yml.
Instalación
Este nodo no se instala desde npm. Debe ser construido como parte de una imagen de n8n personalizada.
Crea el Dockerfile del Runner de Python: Crea un archivo llamado
Dockerfile.pytenable-runnercon el siguiente contenido. Este archivo define el entorno aislado donde se ejecutará tu código.# Contenido del Dockerfile.pytenable-runner...Construye la Imagen del Runner: Ejecuta el siguiente comando para construir la imagen localmente.
docker build -f Dockerfile.pytenable-runner -t pytenable-runner:latest .Modifica el Dockerfile de n8n: Añade las siguientes instrucciones a tu
Dockerfileprincipal de n8n para copiar e instalar el nodo.# ... (instrucciones FROM n8nio/n8n...) USER root RUN apk add --no-cache curl # Instalar nodo personalizado WORKDIR /home/node/nodes COPY ./n8n-nodes-pytenable-main . # Asegúrate de que el nombre de la carpeta sea correcto RUN npm install WORKDIR /home/node RUN chown -R node:node /home/node/nodes USER node
Uso
- Credenciales: Configura tus credenciales de Tenable en n8n. Este nodo buscará credenciales de tipo
TenableApi. - Añadir el Nodo: Busca el nodo "Pytenable" en el panel de nodos y añádelo a tu workflow.
- Configurar:
- Modo de Operación: Elige si el código se ejecuta una vez para todos los ítems de entrada o una vez por cada ítem.
- Código Python: Escribe tu script. Tienes acceso a las siguientes variables:
_credentials: Un diccionario con tus credenciales de Tenable._items: Una lista de todos los ítems de entrada (solo en modo "Ejecutar una vez para todos los items")._item: El ítem actual en el bucle (solo en modo "Ejecutar una vez por cada item").
Ejemplo de Código
Este script utiliza pytenable para listar los 5 primeros scans en Tenable.io y los devuelve como salida del nodo.
# Se asume que las credenciales están configuradas.
# pytenable y sus dependencias ya están instalados en el entorno.
from tenable.io import TenableIO
# tio se inicializa automáticamente en el wrapper,
# pero lo creamos aquí para mayor claridad.
tio = TenableIO(_credentials['apikey'], _credentials['apisecret'])
# Obtenemos la lista de scans y la devolvemos
scans = tio.scans.list(limit=5)
# El nodo espera una lista de diccionarios como salida
return list(scans)