AutoflowGuia do implantador
0 / 60
Buscar

Trilha 08 · Integrações e implantação

Infraestrutura e implantação

Você não precisa ser engenheiro de infraestrutura, mas precisa saber o que roda, onde, o que cada peça faz e o que perguntar à TI do cliente — principalmente em órgãos públicos, que muitas vezes exigem hospedagem própria. Esta lição é o roteiro de um ambiente novo.

As peças

Clique em cada peça para ver o que faz e por quê.

Container Função Exposição
postgres (16) Dados do Autoflow + bancos do Camunda e do Keycloak só local
minio Arquivos (documentos, imagens) só local; servidos pela API
migrate Roda as migrações do banco (sob demanda) —
api (NestJS) Cérebro: APIs interna, pública, portal e plataforma + filas via nginx
web App da empresa via nginx
super Console de suporte host próprio + allowlist de IP
portal Portal externo host próprio
camunda (7.24) Motor BPMN/DMN nunca exposto
keycloak (26) Identidade; realms do produto e do portal via nginx em /auth

Todos os containers escutam só em 127.0.0.1; o nginx do servidor termina o HTTPS e encaminha.

Por que o Camunda nunca fica exposto?

O motor não sabe nada sobre clientes, permissões ou unidades — quem garante isso é a API. Se o Camunda fosse acessível, alguém poderia concluir tarefas ou ler variáveis de qualquer cliente. A regra “o navegador nunca fala com o motor” é a base da segurança multiempresa.

Três endereços (hosts)

  • Produto (ex.: autoflow.cliente.gov.br): app da empresa, API e Keycloak em /auth.
  • Suporte (ex.: admflow.…): Console Super, com allowlist de IP/VPN; só repassa a API de plataforma. No host do produto, a API de plataforma responde 404.
  • Portal (ex.: portalflow.…): portal do participante externo.

Passo a passo de um ambiente novo

  1. DNS e TLS para os três hosts.
  2. Variáveis: copiar o modelo de produção para .env.prod e preencher todos os segredos (lista abaixo).
  3. Gerar os realms do Keycloak de produção (sem usuários de demonstração, com as URLs reais, secret e SMTP). O import só acontece se o realm ainda não existe — depois, mudanças vão pelo console do Keycloak ou scripts.
  4. Subir a base: build das imagens; subir postgres, minio, camunda, keycloak; rodar as migrações; subir api, web, super, portal.
  5. Aplicar o tema do Keycloak (rodar após todo deploy; é idempotente).
  6. Configurar o nginx dos três hosts (com allowlist no host de suporte), testar e recarregar.
  7. Smoke tests (checklist abaixo).
  8. Criar o primeiro operador de plataforma no Keycloak: grupo /Plataforma, papel platform-operator, OTP configurado.
  9. Provisionar cada cliente pelo Console Super (trilha 06).
Documentação desatualizada no repositório

O README de deploy ainda descreve criar o primeiro admin do cliente pelo console do Keycloak ou por SQL — isso foi substituído pelo provisionamento no Console Super. E o guia do despachante cita um script de seed que foi removido; o conteúdo vem do pacote do segmento Concessionária.

Variáveis que você precisa conhecer

Grupo Variáveis Observação
App APP_PUBLIC_URL, DATABASE_*, DATABASE_APP_PASSWORD, MINIO_* A role do app no banco não ignora RLS
Keycloak KC_HOSTNAME, KEYCLOAK_ISSUER, KEYCLOAK_JWKS_URL, KEYCLOAK_ADMIN_* Use JWKS pela rede interna
Camunda CAMUNDA_USER, CAMUNDA_PASSWORD O exemplo vem com demo/demo: troque
Integrações INTEGRATIONS_KEK_*, INTEGRATIONS_API_KEY_PEPPER, INTEGRATIONS_PUBLIC_API_URL KEK também cifra a chave da IA
E-mail e push SMTP_*, MAIL_FROM, PUSH_VAPID_* Sem SMTP não há convites; trocar VAPID invalida inscrições de push
Super e portal SUPER_PUBLIC_URL, PLATFORM_READ_ONLY, PORTAL_PUBLIC_URL, KEYCLOAK_EXTERNAL_* —
Assistente ASSISTANT_* Tempos e cotas
Proibida em produção ORGANIZATION_BOOTSTRAP_ROUTE A API se recusa a subir com ela em produção

Smoke tests

ChecklistDepois de cada deploy0/10
Produto
Suporte
Portal
Segurança

Backup

não há no repositório Não existe script nem procedimento de backup versionado. A única menção é um pré-requisito de “faça backup do Postgres e do MinIO” num roteiro de limpeza. Recomendação (a combinar com a TI do cliente):

  • pg_dump diário dos três bancos: aplicação, camunda e keycloak — eles precisam ser consistentes entre si;
  • cópia do volume/bucket do MinIO;
  • guardar o .env.prod e os realms gerados em cofre;
  • testar a restauração pelo menos uma vez antes do go-live.
Cuidado

Restaurar só o banco da aplicação sem o do Camunda (ou vice-versa) gera processos “fantasmas” e tarefas órfãs. Backup e restauração são sempre do conjunto.

Segurança em uma página

  • Isolamento entre clientes: cada tabela tem tenant_id e RLS no PostgreSQL; a aplicação usa uma role sem permissão de ignorar o RLS. Matriz/filial são filtradas na aplicação.
  • Identidades separadas: usuários internos (realm do produto), suporte (client próprio, sem tenant, com MFA), externos (realm do portal), sistemas (API key ou token delegado). Testes automatizados garantem que um token de um “mundo” não funciona no outro.
  • Segredos de integrações e da IA são cifrados (AES-256-GCM) e nunca exibidos de novo; API keys guardadas só como hash.
  • Webhooks só para HTTPS e sem IP privado (anti-SSRF).
  • LGPD: mascaramento no suporte, revelação auditada, variáveis sensíveis fora de webhooks/métricas, encerramento de conta no portal, retenções definidas.
  • observação O download de documentos autentica com o token na URL (registrado na auditoria funcional) — relevante se o cliente fizer análise de segurança.
Perguntas que a TI de um órgão vai fazer

Onde os dados ficam hospedados? Quem tem acesso administrativo e como é registrado? Há MFA? Qual a política de backup e o tempo de restauração? Como é o isolamento entre órgãos? Como se exerce o direito de eliminação? Prepare as respostas com base nesta lição e na de Suporte, e valide os pontos de backup e logs (sem agregação hoje) antes de assinar SLA.

Problemas típicos

Sintoma Causa provável
Login funciona, mas tudo dá 401 depois API buscando as chaves do Keycloak pelo endereço público (hairpin NAT). Use KEYCLOAK_JWKS_URL interno
Tela em branco no login CSP bloqueando o silent-check-sso
Console Super cai em “Acesso restrito” Conta sem papel de plataforma, conta com tenant, ou vhost sem repassar a API de plataforma
Convites não chegam SMTP
Push parou para todos Chaves VAPID trocadas

Resumo

  • Nove peças: postgres, minio, migrate, api, web, super, portal, camunda, keycloak; só a API fala com o motor.
  • Três hosts: produto, suporte (com allowlist) e portal.
  • Ordem: DNS/TLS → variáveis → realms → base + migrações → apps → tema → nginx → smoke → operador → clientes.
  • Backup não está automatizado no repositório: combine e teste restauração dos três bancos + MinIO.
QuizVerifique seu entendimento0/3 respondidas · 0 certas
1.A TI do cliente quer abrir a porta do Camunda para "monitorar". O que responder?
2.Backup só do banco da aplicação é suficiente?
3.Depois do deploy, todos conseguem logar mas recebem 401 nas telas. Suspeito principal?