> ## 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

> Acquisisci i finding di vulnerabilità di Tenable.io in CaseBender tramite polling automatico (pull) utilizzando l'API di export delle vulnerabilità.

## Panoramica

L'integrazione di Tenable.io (**INT-003**) acquisisce i finding di vulnerabilità in CaseBender, li
arricchisce con gravità basata sul CVSS e osservabili CVE, e li trasforma in avvisi (ed
eventualmente casi).

<Tip>
  **Consigliato: abilita il polling automatico.** CaseBender estrae nuove
  vulnerabilità direttamente da Tenable.io in modo pianificato utilizzando l'API di
  export delle vulnerabilità — senza endpoint in entrata. Vedi
  [Polling automatico](#entrata-polling-automatico).
</Tip>

<Note>
  Il polling utilizza l'**API di export delle vulnerabilità di Tenable.io**,
  autenticata con una **coppia di chiavi API** (access key + secret key).
</Note>

## Funzionalità

| Funzionalità                           | Direzione | Descrizione                                                                          |
| -------------------------------------- | --------- | ------------------------------------------------------------------------------------ |
| **Polling delle vulnerabilità (pull)** | Entrata   | CaseBender esporta le vulnerabilità in modo pianificato e acquisisce i nuovi finding |
| Estrazione di osservabili              | Entrata   | IP degli host, nomi host e CVE                                                       |
| Mappatura della gravità CVSS           | Entrata   | I finding vengono mappati alla gravità di CaseBender dal CVSS                        |
| Soglia di gravità                      | Entrata   | Estrae eventualmente solo i finding a partire da una gravità minima                  |

## Prerequisiti

<Steps>
  <Step title="Crea le chiavi API">
    In Tenable.io, vai su **Settings → My Account → API Keys** e genera una coppia di chiavi. Copia
    l'**Access Key** e la **Secret Key**.
  </Step>

  <Step title="Uscita di rete">
    Il poller di CaseBender deve raggiungere `https://cloud.tenable.com` (o l'URL della tua regione
    privata Tenable.io).
  </Step>
</Steps>

## Configurare l'integrazione in CaseBender

<Steps>
  <Step title="Apri il catalogo delle integrazioni">
    Vai su **Settings → Integrations → Create** e scegli **Tenable.io** nella categoria
    **Vulnerability Management**.
  </Step>

  <Step title="Inserisci le chiavi API">
    | Campo                          | Descrizione                                                                                                      |
    | ------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
    | Access Key                     | Access key dell'API di Tenable.io                                                                                |
    | Secret Key                     | Secret key dell'API di Tenable.io                                                                                |
    | API URL (facoltativo)          | Predefinito `https://cloud.tenable.com`                                                                          |
    | Minimum severity (facoltativo) | Uno tra `info`, `low`, `medium`, `high`, `critical` — vengono estratti solo i finding a partire da questo valore |
  </Step>

  <Step title="Abilita il polling automatico (consigliato)">
    | Opzione                       | Effetto                                                                                     |
    | ----------------------------- | ------------------------------------------------------------------------------------------- |
    | `pollingEnabled`              | Attiva export + acquisizione pianificati                                                    |
    | `pollingIntervalMinutes`      | Frequenza di polling (predefinito `15`; gli export sono asincroni, quindi si consiglia 15+) |
    | `pollingInitialLookbackHours` | Alla prima esecuzione, importa i finding aggiornati in questa finestra (predefinito `24`)   |
    | `pollMaxItemsPerRun`          | Limite di sicurezza di elementi per esecuzione (predefinito `500`)                          |
  </Step>

  <Step title="Configura la creazione automatica dei casi">
    | Opzione              | Effetto                                                           |
    | -------------------- | ----------------------------------------------------------------- |
    | `autoCreateCases`    | Promuove ogni finding a **Caso** (deduplicato per asset + plugin) |
    | `minSeverityForCase` | Crea automaticamente casi solo a partire da questa gravità        |
  </Step>
</Steps>

## Entrata (polling automatico)

Tenable espone i dati di vulnerabilità incrementali tramite un **job di export asincrono**.
CaseBender gestisce questo flusso automaticamente:

<Steps>
  <Step title="Richiedi un export">
    A ogni intervallo, CaseBender richiede un export delle vulnerabilità `OPEN`/`REOPENED`
    aggiornate dall'ultimo cursore (eventualmente filtrate per gravità). Alla prima esecuzione, la
    finestra è `pollingInitialLookbackHours`.
  </Step>

  <Step title="Attendi + riprendi">
    CaseBender attende (in modo limitato) il completamento dell'export e ne scarica i chunk. Se
    l'export è ancora in costruzione quando scade il budget di tempo del ciclo, il suo ID viene
    salvato e il ciclo successivo lo riprende — nessun dato viene perso.
  </Step>

  <Step title="Cursore + deduplicazione">
    Dopo un export completato, il cursore avanza all'ora di esecuzione. I finding vengono
    **deduplicati per `asset.uuid` + `plugin.id`**, quindi finestre sovrapposte non creano mai
    duplicati.
  </Step>
</Steps>

<Info>
  Poiché gli export sono asincroni, i finding possono apparire alcuni minuti dopo l'aggiornamento in
  Tenable. Questo è previsto per i dati di vulnerabilità ed è controllato da
  `pollingIntervalMinutes`.
</Info>

## Considerazioni sulla sicurezza

* **Gestione dei segreti** — le chiavi API sono memorizzate nelle impostazioni dell'integrazione;
  ruotale secondo la policy della tua organizzazione.
* **Privilegio minimo** — usa chiavi legate a un account utente con accesso in lettura alle
  vulnerabilità.
* **Rete** — limita l'uscita all'URL della tua regione Tenable.io.

## Risoluzione dei problemi

<AccordionGroup>
  <Accordion title="Il polling è abilitato ma non appaiono finding">
    Conferma che le chiavi access/secret siano valide e che esistano finding `OPEN`/`REOPENED`
    aggiornati dal cursore. Gli export richiedono tempo; concedi almeno un intervallo completo.
    Riduci la `Minimum severity` se filtra tutto.

    **Assicurati che tutti i servizi di CaseBender siano in esecuzione** — con Docker,
    `docker compose ps` deve mostrare i servizi `worker` e `misp-processor` come `Up`.
  </Accordion>

  <Accordion title="L'export è fallito">
    Un errore `Tenable export … failed` indica che il job di export è fallito lato server. Verrà
    ritentato all'intervallo successivo. Verifica che le chiavi abbiano il permesso di export delle
    vulnerabilità.
  </Accordion>
</AccordionGroup>

## Documentazione correlata

* [Panoramica delle integrazioni](./introduction.mdx)
* [Portale per sviluppatori Tenable](https://developer.tenable.com/)
