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

> Ingira os findings de vulnerabilidades do Tenable.io no CaseBender via sondagem automática (pull) usando a API de exportação de vulnerabilidades.

## Visão geral

A integração do Tenable.io (**INT-003**) ingere os findings de vulnerabilidades no CaseBender, os
enriquece com severidade baseada em CVSS e observáveis CVE, e os converte em alertas (e
opcionalmente casos).

<Tip>
  **Recomendado: ative a sondagem automática.** O CaseBender extrai novas
  vulnerabilidades diretamente do Tenable.io de forma agendada usando a API de
  exportação de vulnerabilidades — sem endpoint de entrada. Consulte
  [Sondagem automática](#entrada-sondagem-automatica).
</Tip>

<Note>
  A sondagem usa a **API de exportação de vulnerabilidades do Tenable.io**,
  autenticada com um **par de chaves de API** (access key + secret key).
</Note>

## Recursos

| Recurso                                 | Direção | Descrição                                                                       |
| --------------------------------------- | ------- | ------------------------------------------------------------------------------- |
| **Sondagem de vulnerabilidades (pull)** | Entrada | O CaseBender exporta vulnerabilidades de forma agendada e ingere novos findings |
| Extração de observáveis                 | Entrada | IPs de hosts, nomes de host e CVEs                                              |
| Mapeamento de severidade CVSS           | Entrada | Os findings são mapeados para a severidade do CaseBender a partir do CVSS       |
| Limite de severidade                    | Entrada | Opcionalmente extrai apenas findings a partir de uma severidade mínima          |

## Pré-requisitos

<Steps>
  <Step title="Criar chaves de API">
    No Tenable.io, vá em **Settings → My Account → API Keys** e gere um par de chaves. Copie a
    **Access Key** e a **Secret Key**.
  </Step>

  <Step title="Saída de rede">
    O sondador do CaseBender deve alcançar `https://cloud.tenable.com` (ou a URL da sua região
    privada do Tenable.io).
  </Step>
</Steps>

## Configurar a integração no CaseBender

<Steps>
  <Step title="Abrir o catálogo de integrações">
    Vá em **Settings → Integrations → Create** e escolha **Tenable.io** na categoria
    **Vulnerability Management**.
  </Step>

  <Step title="Inserir as chaves de API">
    | Campo                       | Descrição                                                                                              |
    | --------------------------- | ------------------------------------------------------------------------------------------------------ |
    | Access Key                  | Access key da API do Tenable.io                                                                        |
    | Secret Key                  | Secret key da API do Tenable.io                                                                        |
    | API URL (opcional)          | Padrão `https://cloud.tenable.com`                                                                     |
    | Minimum severity (opcional) | Um de `info`, `low`, `medium`, `high`, `critical` — apenas findings a partir deste valor são extraídos |
  </Step>

  <Step title="Ativar a sondagem automática (recomendado)">
    | Opção                         | Efeito                                                                                        |
    | ----------------------------- | --------------------------------------------------------------------------------------------- |
    | `pollingEnabled`              | Ativa a exportação + ingestão agendadas                                                       |
    | `pollingIntervalMinutes`      | Frequência de sondagem (padrão `15`; as exportações são assíncronas, então 15+ é recomendado) |
    | `pollingInitialLookbackHours` | Na primeira execução, importa findings atualizados nesta janela (padrão `24`)                 |
    | `pollMaxItemsPerRun`          | Limite de segurança de itens por execução (padrão `500`)                                      |
  </Step>

  <Step title="Configurar a criação automática de casos">
    | Opção                | Efeito                                                              |
    | -------------------- | ------------------------------------------------------------------- |
    | `autoCreateCases`    | Promove cada finding a um **Caso** (deduplicado por asset + plugin) |
    | `minSeverityForCase` | Cria casos automaticamente apenas a partir desta severidade         |
  </Step>
</Steps>

## Entrada (sondagem automática)

O Tenable expõe dados de vulnerabilidades incrementais por meio de um **job de exportação
assíncrono**. O CaseBender gerencia esse fluxo automaticamente:

<Steps>
  <Step title="Solicitar uma exportação">
    A cada intervalo, o CaseBender solicita uma exportação das vulnerabilidades `OPEN`/`REOPENED`
    atualizadas desde o último cursor (opcionalmente filtradas por severidade). Na primeira
    execução, a janela é `pollingInitialLookbackHours`.
  </Step>

  <Step title="Aguardar + retomar">
    O CaseBender aguarda (de forma limitada) a conclusão da exportação e baixa seus chunks. Se a
    exportação ainda estiver sendo gerada quando o orçamento de tempo do ciclo se esgotar, seu ID é
    salvo e o próximo ciclo a retoma — nenhum dado é perdido.
  </Step>

  <Step title="Cursor + deduplicação">
    Após uma exportação concluída, o cursor avança até o horário de execução. Os findings são
    **deduplicados por `asset.uuid` + `plugin.id`**, de modo que janelas sobrepostas nunca criam
    duplicatas.
  </Step>
</Steps>

<Info>
  Como as exportações são assíncronas, os findings podem aparecer alguns minutos após serem
  atualizados no Tenable. Isso é esperado para dados de vulnerabilidades e é controlado por
  `pollingIntervalMinutes`.
</Info>

## Considerações de segurança

* **Manejo de segredos** — as chaves de API são armazenadas nas configurações da integração; faça a
  rotação conforme a política da sua organização.
* **Privilégio mínimo** — use chaves vinculadas a uma conta de usuário com acesso de leitura a
  vulnerabilidades.
* **Rede** — restrinja a saída à URL da sua região do Tenable.io.

## Solução de problemas

<AccordionGroup>
  <Accordion title="A sondagem está ativada, mas nenhum finding aparece">
    Confirme que as chaves access/secret são válidas e que existem findings `OPEN`/`REOPENED`
    atualizados desde o cursor. As exportações levam tempo; permita pelo menos um intervalo completo.
    Reduza a `Minimum severity` se ela filtrar tudo.

    **Certifique-se de que todos os serviços do CaseBender estejam em execução** — com o Docker,
    `docker compose ps` deve mostrar os serviços `worker` e `misp-processor` como `Up`.
  </Accordion>

  <Accordion title="A exportação falhou">
    Um erro `Tenable export … failed` indica que o job de exportação falhou no lado do servidor. Ele
    será repetido no próximo intervalo. Verifique se as chaves têm permissão de exportação de
    vulnerabilidades.
  </Accordion>
</AccordionGroup>

## Documentação relacionada

* [Visão geral das integrações](./introduction.mdx)
* [Portal do desenvolvedor Tenable](https://developer.tenable.com/)
