> ## Documentation Index
> Fetch the complete documentation index at: https://docs.casebender.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tenable.io

> Ingiera los hallazgos de vulnerabilidades de Tenable.io en CaseBender mediante sondeo automático (pull) usando la API de exportación de vulnerabilidades.

## Descripción general

La integración de Tenable.io (**INT-003**) ingiere los hallazgos de vulnerabilidades en
CaseBender, los enriquece con severidad basada en CVSS y observables CVE, y los convierte en
alertas (y opcionalmente casos).

<Tip>
  **Recomendado: active el sondeo automático.** CaseBender extrae nuevas
  vulnerabilidades directamente de Tenable.io de forma programada usando la API de
  exportación de vulnerabilidades — sin endpoint entrante. Véase
  [Sondeo automático](#entrada-sondeo-automatico-recomendado).
</Tip>

<Note>
  El sondeo usa la **API de exportación de vulnerabilidades de Tenable.io**,
  autenticada con un **par de claves de API** (access key + secret key).
</Note>

## Capacidades

| Capacidad                             | Dirección | Descripción                                                                        |
| ------------------------------------- | --------- | ---------------------------------------------------------------------------------- |
| **Sondeo de vulnerabilidades (pull)** | Entrante  | CaseBender exporta vulnerabilidades de forma programada e ingiere nuevos hallazgos |
| Extracción de observables             | Entrante  | IP de hosts, nombres de host y CVE                                                 |
| Mapeo de severidad CVSS               | Entrante  | Los hallazgos se mapean a la severidad de CaseBender desde CVSS                    |
| Umbral de severidad                   | Entrante  | Opcionalmente extrae solo hallazgos a partir de una severidad mínima               |

## Requisitos previos

<Steps>
  <Step title="Crear claves de API">
    En Tenable.io, vaya a **Settings → My Account → API Keys** y genere un par de claves. Copie la
    **Access Key** y la **Secret Key**.
  </Step>

  <Step title="Salida de red">
    El sondeador de CaseBender debe alcanzar `https://cloud.tenable.com` (o la URL de su región
    privada de Tenable.io).
  </Step>
</Steps>

## Configurar la integración en CaseBender

<Steps>
  <Step title="Abrir el catálogo de integraciones">
    Vaya a **Settings → Integrations → Create** y elija **Tenable.io** en la categoría
    **Vulnerability Management**.
  </Step>

  <Step title="Introducir las claves de API">
    | Campo                       | Descripción                                                                                           |
    | --------------------------- | ----------------------------------------------------------------------------------------------------- |
    | Access Key                  | Access key de la API de Tenable.io                                                                    |
    | Secret Key                  | Secret key de la API de Tenable.io                                                                    |
    | API URL (opcional)          | Por defecto `https://cloud.tenable.com`                                                               |
    | Minimum severity (opcional) | Uno de `info`, `low`, `medium`, `high`, `critical` — solo se extraen hallazgos a partir de este valor |
  </Step>

  <Step title="Activar el sondeo automático (recomendado)">
    | Opción                        | Efecto                                                                                                  |
    | ----------------------------- | ------------------------------------------------------------------------------------------------------- |
    | `pollingEnabled`              | Activa la exportación + ingesta programadas                                                             |
    | `pollingIntervalMinutes`      | Frecuencia de sondeo (por defecto `15`; las exportaciones son asíncronas, por lo que se recomienda 15+) |
    | `pollingInitialLookbackHours` | En la primera ejecución, importa hallazgos actualizados dentro de esta ventana (por defecto `24`)       |
    | `pollMaxItemsPerRun`          | Límite de seguridad de elementos por ejecución (por defecto `500`)                                      |
  </Step>

  <Step title="Configurar la creación automática de casos">
    | Opción               | Efecto                                                                |
    | -------------------- | --------------------------------------------------------------------- |
    | `autoCreateCases`    | Promueve cada hallazgo a un **Caso** (deduplicado por asset + plugin) |
    | `minSeverityForCase` | Solo crea casos automáticamente a partir de esta severidad            |
  </Step>
</Steps>

## Entrada (sondeo automático, recomendado)

Tenable expone datos incrementales de vulnerabilidades mediante un **trabajo de exportación
asíncrono**. CaseBender gestiona ese flujo automáticamente:

<Steps>
  <Step title="Solicitar una exportación">
    En cada intervalo, CaseBender solicita una exportación de vulnerabilidades `OPEN`/`REOPENED`
    actualizadas desde el último cursor (opcionalmente filtradas por severidad). En la primera
    ejecución, la ventana es `pollingInitialLookbackHours`.
  </Step>

  <Step title="Esperar + reanudar">
    CaseBender espera (de forma acotada) a que la exportación finalice y descarga sus fragmentos.
    Si la exportación sigue generándose cuando se agota el presupuesto de tiempo del ciclo, su ID
    se guarda y el siguiente ciclo la reanuda — no se pierden datos.
  </Step>

  <Step title="Cursor + deduplicación">
    Tras una exportación completada, el cursor avanza al momento de la ejecución. Los hallazgos se
    **deduplican por `asset.uuid` + `plugin.id`**, por lo que las ventanas superpuestas nunca
    crean duplicados.
  </Step>
</Steps>

<Info>
  Como las exportaciones son asíncronas, los hallazgos pueden aparecer unos minutos después de
  actualizarse en Tenable. Esto es esperable para datos de vulnerabilidades y se controla con
  `pollingIntervalMinutes`.
</Info>

## Consideraciones de seguridad

* **Manejo de secretos** — las claves de API se almacenan en la configuración de la integración;
  rótelas según la política de su organización.
* **Privilegio mínimo** — use claves vinculadas a una cuenta de usuario con acceso de lectura a
  vulnerabilidades.
* **Red** — restrinja la salida a la URL de su región de Tenable.io.

## Solución de problemas

<AccordionGroup>
  <Accordion title="El sondeo está activado pero no aparecen hallazgos">
    Confirme que las claves access/secret son válidas y que existen hallazgos `OPEN`/`REOPENED`
    actualizados desde el cursor. Las exportaciones tardan; permita al menos un intervalo
    completo. Reduzca la `Minimum severity` si filtra todo.

    **Asegúrese de que todos los servicios de CaseBender estén en ejecución** — con Docker,
    `docker compose ps` debe mostrar los servicios `worker` y `misp-processor` como `Up`.
  </Accordion>

  <Accordion title="La exportación falló">
    Un error `Tenable export … failed` indica que el trabajo de exportación falló en el servidor.
    Se reintentará en el siguiente intervalo. Verifique que las claves tienen permiso de
    exportación de vulnerabilidades.
  </Accordion>
</AccordionGroup>

## Documentación relacionada

* [Descripción general de integraciones](./introduction.mdx)
* [Portal para desarrolladores de Tenable](https://developer.tenable.com/)
