UNPKG

n8n-nodes-pytenable

Version:

Un nodo de n8n para interactuar con la API de Tenable usando Pytenable en un sandbox de Docker.

77 lines (55 loc) 3.23 kB
# 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: 1. **Docker Instalado**: El servicio de Docker debe estar instalado y en ejecución en la misma máquina que los workers de n8n. 2. **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.sock` en la configuración de tu `docker-compose.yml`. ## Instalación Este nodo no se instala desde npm. Debe ser construido como parte de una imagen de n8n personalizada. 1. **Crea el Dockerfile del Runner de Python**: Crea un archivo llamado `Dockerfile.pytenable-runner` con el siguiente contenido. Este archivo define el entorno aislado donde se ejecutará tu código. ```dockerfile # Contenido del Dockerfile.pytenable-runner... ``` 2. **Construye la Imagen del Runner**: Ejecuta el siguiente comando para construir la imagen localmente. ```bash docker build -f Dockerfile.pytenable-runner -t pytenable-runner:latest . ``` 3. **Modifica el Dockerfile de n8n**: Añade las siguientes instrucciones a tu `Dockerfile` principal de n8n para copiar e instalar el nodo. ```dockerfile # ... (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 1. **Credenciales**: Configura tus credenciales de Tenable en n8n. Este nodo buscará credenciales de tipo `TenableApi`. 2. **Añadir el Nodo**: Busca el nodo "Pytenable" en el panel de nodos y añádelo a tu workflow. 3. **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. ```python # 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) ```