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

# Segurança

> Proteja workflows, dados e integrações do Flowker com autenticação por API Key, credenciais por executor e endpoints forçados a HTTPS.

export const GDSL = ({children}) => <Tooltip headline="DSL" tip="Domain-Specific Language — uma linguagem de programação projetada para um domínio específico. O Flowker usa uma DSL para definir workflows financeiros de forma declarativa." cta="Ver glossário" href="/pt/glossary">
    {children}
  </Tooltip>;

O Flowker protege seus workflows, dados e integrações por meio de autenticação por API Key, gestão de credenciais por executor e aplicação de HTTPS. Esta página cobre o modelo de segurança conforme implementado na versão atual.

## Autenticação da plataforma

***

O Flowker oferece dois modos de autenticação de plataforma, selecionados por configuração:

* **API Key** — uma chave estática enviada no header `X-API-Key`, habilitada com `API_KEY_ENABLED`.
* **Access Manager** — autenticação baseada em tokens, habilitada com `PLUGIN_AUTH_ENABLED`. Quando ambos os modos estão habilitados, o Access Manager tem prioridade.

Habilite pelo menos um modo em produção.

```bash theme={null}
curl -X GET https://sua-instancia-flowker/v1/workflows \
  -H "X-API-Key: sua-api-key"
```

**Como funciona:**

* **Modo API Key** — o middleware valida a chave em cada requisição; uma chave válida concede acesso a todos os endpoints. Configure a chave via variáveis de ambiente ou configuração de bootstrap.
* **Modo Access Manager** — cada requisição carrega um Bearer token e cada rota aplica uma permissão por recurso e por ação. É assim que a autorização baseada em roles e em políticas é aplicada.
* Credenciais inválidas ou ausentes retornam `401 Unauthorized`.

**Exceção de probes de saúde:**

Os probes de liveness e readiness são excluídos da autenticação. Eles são projetados para monitoramento de infraestrutura (probes do Kubernetes, balanceadores de carga) e não expõem dados sensíveis.

<Note>
  Além da API Key estática, o Flowker pode delegar a autenticação e a autorização por recurso e por ação ao Access Manager. Habilite-o via configuração; quando habilitado, as requisições carregam um Bearer token e cada rota aplica sua própria permissão de recurso/ação.
</Note>

## Autenticação de executors

***

Quando o Flowker chama serviços externos por meio de executors, cada configuração de executor especifica seu próprio método de autenticação. Isso significa que suas credenciais de plataforma e suas credenciais de provedor são gerenciadas separadamente.

**Tipos de autenticação suportados:**

| Tipo                      | Descrição                                                                  | Caso de uso                                                |
| ------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `none`                    | Sem autenticação                                                           | Serviços internos atrás de VPN ou service mesh             |
| `api_key`                 | API Key enviada como header ou parâmetro de query                          | APIs de terceiros com acesso baseado em chave              |
| `bearer`                  | Bearer token no header `Authorization`                                     | Serviços que usam tokens estáticos ou pré-gerados          |
| `basic`                   | Autenticação HTTP Basic (usuário:senha)                                    | Sistemas legados ou APIs internas                          |
| `oidc_client_credentials` | Fluxo de credenciais de cliente OAuth 2.0                                  | Integrações máquina a máquina com provedores de identidade |
| `oidc_user`               | Fluxo de token de usuário OAuth 2.0                                        | Integrações que agem em nome de um usuário específico      |
| `oauth2_token_endpoint`   | Client credentials OAuth 2.0 contra um token endpoint (sem discovery OIDC) | Provedores estilo OAuth2 sem metadados de discovery OIDC   |

As credenciais de autenticação são armazenadas na configuração do executor e utilizadas automaticamente quando o executor é chamado durante a execução do workflow.

```json theme={null}
{
  "name": "fraud-check",
  "description": "Scoring de fraude via Tracer",
  "baseUrl": "https://tracer.example.com",
  "endpoints": [
    {
      "name": "analyze",
      "path": "/v1/transactions/analyze",
      "method": "POST",
      "timeout": 30
    }
  ],
  "authentication": {
    "type": "bearer",
    "config": {
      "token": "eyJhbGciOiJSUzI1NiIs..."
    }
  }
}
```

<Note>
  Para os fluxos OIDC (`oidc_client_credentials` e `oidc_user`), o Flowker gerencia a aquisição e renovação de tokens automaticamente. Você só precisa fornecer a URL do emissor, o client ID e o client secret na configuração do executor.
</Note>

## Segurança de rede

***

**Aplicação de HTTPS:**

* Todos os endpoints da API exigem HTTPS em produção
* Chamadas de executors a provedores externos utilizam HTTPS
* Dados sensíveis (credenciais, payloads de requisição/resposta) são sempre transmitidos por canais criptografados

**Configuração de CORS:**

O Flowker suporta configuração de CORS personalizável:

* As origens permitidas são configuráveis por implantação
* Credenciais não são permitidas em requisições cross-origin (`AllowCredentials` está desabilitado)
* Respostas de preflight são cacheadas para performance

## Resiliência

***

O Flowker protege contra falhas em cascata de serviços externos usando padrões de circuit breaker e retentativas.

**Circuit breaker:**

Quando o serviço externo de um executor falha repetidamente, o circuit breaker abre e para de enviar requisições — evitando que seus workflows fiquem travados em um provedor que não responde.

* Transita pelos estados `closed` → `open` → `half-open`
* Os limiares são configurados globalmente (falhas consecutivas antes de abrir)
* O estado half-open permite um número limitado de requisições de teste antes de fechar completamente

**Retentativas:**

Chamadas falhas a executors são retentadas com backoff exponencial:

* Contagem fixa de 5 tentativas com backoff exponencial (1s, 2s, 4s, 8s)
* Backoff exponencial entre tentativas
* Apenas falhas transitórias acionam retentativas (erros de rede, respostas 5xx)

## Trilha de auditoria

***

Cada ação no Flowker é registrada no log de auditoria — alterações em workflows, eventos de execução, chamadas a executors e atualizações de configuração. Isso fornece uma cadeia completa de evidências para conformidade e visibilidade operacional.

* Os eventos de auditoria são consultáveis via o endpoint [`/v1/audit-events`](/pt/reference/flowker/search-audit-events) com filtros por tipo de evento, ação, resultado, recurso e intervalo de datas
* Cada entrada inclui um hash criptográfico que a vincula à entrada anterior, formando uma cadeia à prova de adulterações
* A integridade da cadeia de hash é verificável via o endpoint [`/v1/audit-events/{id}/verify`](/pt/reference/flowker/verify-audit-hash-chain)
* Os logs incluem timestamps, identificação do ator (com endereço IP), tipo de ação e recursos afetados

Para detalhes sobre consulta de dados de auditoria, veja a [referência da API de eventos de auditoria](/pt/reference/flowker/search-audit-events).

## Próximos passos

***

<CardGroup cols={2}>
  <Card title="Guia de integração" icon="plug" href="/pt/flowker/integration-guide">
    Aprenda como configurar executors e conectar serviços externos.
  </Card>

  <Card title="Observabilidade" icon="chart-line" href="/pt/flowker/flowker-observability-guide">
    Monitore o Flowker com traces, métricas e logs estruturados.
  </Card>
</CardGroup>
