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
Markdown
# 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)
```