Skip to main content
O Flowker protege seus workflows, dados e integrações por meio de autenticação via Access Manager e gestão de credenciais por conexão. O TLS para o tráfego da API é gerenciado pela sua implantação. Esta página cobre o modelo de segurança conforme implementado na versão atual.

Autenticação da plataforma


O Flowker delega a autenticação da plataforma ao Access Manager, habilitado com PLUGIN_AUTH_ENABLED. Quando habilitado, cada requisição a uma rota de API protegida deve carregar um Bearer token (JWT OIDC) e cada rota protegida aplica uma permissão por recurso e por ação — é assim que a autorização baseada em roles e em políticas é aplicada. Habilite o Access Manager em produção.
Como funciona:
  • Access Manager habilitado — cada requisição a uma rota de API protegida carrega um Bearer token e cada rota protegida aplica uma permissão por recurso e por ação.
  • Access Manager desabilitado — os endpoints não exigem autenticação. A identidade de um Bearer token, quando presente, ainda é lida em regime de melhor esforço, de modo que a requisição é atribuída ao sujeito declarado. Use este modo apenas para desenvolvimento local.
  • 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.

Autenticação de providers


Quando o Flowker chama um serviço externo, ele se autentica com as credenciais da configuração de provider pela qual o node chama. Suas credenciais de plataforma e suas credenciais de provider são gerenciadas separadamente. Tipos de autenticação suportados: O bloco config.auth da configuração de provider contém a autenticação que o serviço externo exige, como um par { type, config }. O Flowker a aplica em cada chamada que um node faz por essa conexão. Os campos secretos de config.auth — uma API key, um token bearer, uma senha, um client secret ou um segredo HMAC — são enviados ao backend de segredos e removidos da configuração persistida. Quando a leitura de segredos está configurada, uma leitura autorizada da configuração de provider pode resolvê-los para exibição. Restrinja essa permissão e trate a resposta como sensível. Qualquer outra coisa que você colocar no documento de configuração — um header, por exemplo — é armazenada junto com a configuração, e uma leitura pode devolvê-la. Coloque cada credencial em config.auth. Para rotacionar um segredo, envie o novo valor em uma atualização. Para manter o atual, omita o campo ou envie-o em branco: isso funciona enquanto auth.type não mudar. Uma atualização que muda auth.type deve levar um valor para cada segredo que o novo tipo exige e o anterior não exigia; caso contrário, o Flowker a rejeita com FLK-0952. Uma mudança entre dois tipos que usam o mesmo segredo, como de oidc_user para oidc_client_credentials, não precisa desse valor novamente.
Para os fluxos OIDC (oidc_client_credentials e oidc_user), o Flowker gerencia a aquisição e renovação de tokens automaticamente. Para oidc_client_credentials, forneça a URL do emissor, o client ID e o client secret. Para oidc_user, forneça a URL do emissor, o client ID, o nome de usuário e a senha; o client_secret é opcional para clientes públicos.

Segurança de rede


TLS:
  • Configure a terminação TLS para o tráfego da API do Flowker na sua implantação.
  • Use URLs base https:// para chamadas externas. O Flowker aceita uma URI para o base_url do provider HTTP genérico; não o restringe a HTTPS.
  • Transmita credenciais e payloads sensíveis apenas por links 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 um serviço externo falha repetidamente, o circuit breaker abre e para de enviar requisições — evitando que seus workflows fiquem travados em um serviço que não responde.
  • Transita pelos estados closedopenhalf-open
  • O circuito tem escopo por configuração de provider e por tenant, portanto falhas contra uma conexão não afetam outra
  • 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: O Flowker resolve o orçamento de retentativas de cada node com as duas primeiras regras. Depois a classe da falha decide se esse orçamento é gasto:
  1. Inscrição do node. Um retry.max_attempts maior que 1 liga as retentativas independentemente do método. O valor é a quantidade total de tentativas, e a plataforma o limita a 5. Um retry.max_attempts igual a 1 não é uma inscrição: fixa uma única tentativa.
  2. Método HTTP. Sem inscrição, POST e PATCH são tratados como não idempotentes e recebem uma única tentativa. GET, HEAD, OPTIONS, PUT, DELETE e qualquer outro verbo são retentados, com 3 tentativas totais por padrão.
  3. Classe da falha. O orçamento só é gasto em uma falha transitória: um erro de rede, um timeout na tentativa, qualquer status 5xx, ou o status 408 ou 429. Qualquer outro 4xx falha na primeira tentativa por mais alto que seja o orçamento. Um circuito aberto, uma execução cancelada, um corpo de requisição acima do limite de tamanho configurado e um corpo de resposta acima do mesmo limite também interrompem o laço.
O backoff é exponencial com jitter completo. Cada espera é um valor aleatório entre zero e um teto. O teto começa em 1 segundo e dobra a cada tentativa. retry.backoff_seconds define o primeiro teto, entre 1 e 60. A espera aleatória impede que muitas execuções retentem o mesmo serviço no mesmo momento.

Próximos passos


Guia de integração

Aprenda como criar configurações de provider e conectar serviços externos.

Observabilidade

Monitore o Flowker com traces, métricas e logs estruturados.