Pular para o conteúdo principal
O Matcher implementa controles de segurança abrangentes para proteger dados de reconciliação financeira. Este guia aborda autenticação, autorização, isolamento de tenant, criptografia e recursos de conformidade. Os dados de reconciliação financeira estão entre os mais sensíveis de qualquer organização — envolvem registros de transações, informações de contrapartes e obrigações regulatórias. Regulamentações como SOC 2, PCI DSS e requisitos das autoridades financeiras locais exigem controles específicos de acesso, criptografia e rastreabilidade. O Matcher foi projetado com esses requisitos em mente, oferecendo segurança em profundidade em cada camada da stack.

Visão geral


A arquitetura de segurança do Matcher é construída em várias camadas. Toda requisição de API passa por múltiplos pontos de verificação de segurança antes de acessar seus dados.
1
Primeiro, o TLS criptografa a conexão.
2
Em seguida, a autenticação verifica quem você é:
  • O isolamento de tenant garante que você veja apenas seus próprios dados.
  • O RBAC verifica se você tem permissão para realizar a ação.
3
Por fim, o sistema registra tudo para fins de auditoria.

Proteção por camadas

CamadaProteção
TransporteCriptografia TLS 1.2+
AutenticaçãoTokens JWT via lib-auth
Isolamento de TenantPostgreSQL com banco de dados por tenant (pool-por-tenant)
AutorizaçãoControle de acesso baseado em funções
AuditoriaLogs imutáveis somente-anexação
ArmazenamentoCriptografia em repouso

Autenticação


O Matcher usa a biblioteca compartilhada lib-auth para o controle de acesso baseado em JWT. O Matcher delega toda a validação criptográfica de JWT a um provedor de autenticação externo e não guarda nenhum segredo JWT local próprio.

Configuração

Estas variáveis de ambiente controlam a autenticação:
VariávelObrigatóriaDescrição
PLUGIN_AUTH_ENABLEDSimHabilitar ou desabilitar a aplicação de autorização (true/false; padrão false)
PLUGIN_AUTH_ADDRESSQuando auth habilitadoEndereço do serviço externo plugin-auth
AUTH_PROVIDERNãoProvedor de validação: plugin-auth, workos ou disabled. Quando não definido, é derivado de PLUGIN_AUTH_ENABLED
AUTH_ENABLED e AUTH_SERVICE_ADDRESS são aceitos como aliases legados de PLUGIN_AUTH_ENABLED e PLUGIN_AUTH_ADDRESS. Definir um alias e sua forma atual com valores conflitantes é rejeitado na inicialização.
Quando PLUGIN_AUTH_ENABLED=false (apenas desenvolvimento), o Matcher usa um ID de tenant padrão (11111111-1111-1111-1111-111111111111) e ignora as verificações de autorização.

Estrutura do token JWT

Com AUTH_PROVIDER=plugin-auth, a validação criptográfica é delegada ao serviço plugin-auth; com AUTH_PROVIDER=workos, o Matcher verifica localmente os JWTs de token de acesso do WorkOS contra o JWKS em cache. De qualquer forma, o token deve incluir claims de identificação do tenant:
ClaimObrigatórioDescrição
tenant_id ou tenantIdSimUUID do tenant para isolamento de tenant
tenant_slug ou tenantSlugNãoIdentificador legível do tenant
subNãoID do usuário (usado para log de auditoria)
expSimTempo de expiração do token
nbfNãoTempo not-before (token é inválido antes deste momento)

Headers obrigatórios

Todas as requisições de API devem incluir autenticação:

Validação de token

O Matcher valida tokens em cada requisição:
  1. Verificação de assinatura: Delegada ao provedor de autenticação configurado (serviço plugin-auth ou JWKS do WorkOS) — o Matcher não guarda nenhum segredo de assinatura local
  2. Verificação de expiração: Rejeita tokens expirados (claim exp)
  3. Verificação de not-before: Rejeita tokens usados antes do tempo nbf
  4. Extração de tenant: Extrai tenant_id para resolver o pool de banco de dados do tenant

Autorização (RBAC)


O controle de acesso baseado em funções protege todos os endpoints da API. O Matcher delega a autorização a um serviço de autenticação externo via lib-auth. As permissões são granulares e seguem o padrão de duas partes resource:action.

Estrutura de permissão

Os recursos são substantivos de produto planos (no plural), sem prefixo de domínio nem segmento de sub-recurso. As ações são verbos que descrevem a operação realizada sobre o substantivo. Exemplos:
  • contexts:create — Criar contextos de reconciliação
  • match-runs:run — Executar ciclos de correspondência
  • exceptions:resolve — Resolver exceções

Lista completa de permissões

O Matcher define um conjunto plano de aproximadamente 35 recursos — não há agrupamento em domínios. Cada endpoint requer uma permissão resource:action específica verificada contra o serviço de autorização externo. As tabelas a seguir estão agrupadas apenas para facilitar a leitura; os slugs em si não carregam nenhum qualificador de domínio.

Configuração

PermissãoDescrição
contexts:createCriar contextos de reconciliação
contexts:readVisualizar contextos
contexts:updateAtualizar contextos
contexts:deleteArquivar (exclusão lógica) contextos
contexts:cloneClonar um contexto e sua configuração
sources:createCriar fontes de dados
sources:readVisualizar configuração de fonte
sources:updateModificar configurações de fonte
sources:deleteRemover fontes de dados
field-maps:createCriar mapeamentos de campo
field-maps:readVisualizar mapeamentos de campo
field-maps:updateAtualizar mapeamentos de campo
field-maps:deleteExcluir mapeamentos de campo
rules:createCriar regras de correspondência
rules:readVisualizar regras de correspondência
rules:updateAtualizar regras de correspondência
rules:deleteExcluir regras de correspondência
rules:reorderReordenar a prioridade de avaliação das regras
fee-schedules:createCriar agendamentos de tarifas
fee-schedules:readVisualizar agendamentos de tarifas
fee-schedules:updateAtualizar agendamentos de tarifas
fee-schedules:deleteExcluir agendamentos de tarifas
fee-schedules:simulateSimular cálculos de agendamentos de tarifas
fee-rules:createCriar regras de tarifas
fee-rules:readVisualizar regras de tarifas
fee-rules:updateAtualizar regras de tarifas
fee-rules:deleteExcluir regras de tarifas
schedules:createCriar agendamentos
schedules:readVisualizar agendamentos
schedules:updateAtualizar agendamentos
schedules:deleteExcluir agendamentos

Ingestão

PermissãoDescrição
imports:createFazer upload de arquivos de transação
imports:previewPré-visualizar a análise da importação antes de confirmar
import-jobs:readVisualizar jobs de importação
ingestion-transactions:searchPesquisar transações
ingestion-transactions:ignoreMarcar transações como ignoradas
extraction-reviews:createEnfileirar extrações de documentos com IA e aprovar/rejeitar revisões
extraction-reviews:readVisualizar revisões de extração

Correspondência

PermissãoDescrição
match-runs:runExecutar ciclos de correspondência
match-runs:readVisualizar resultados dos ciclos de correspondência
match-groups:readVisualizar grupos de correspondência
match-groups:unmatchDesfazer correspondência de grupos
open-items:readVisualizar o livro de itens em aberto residuais transportados
manual-matches:createCriar correspondências manuais
adjustments:createCriar lançamentos de ajuste
rule-suggestions:createProduzir e aprovar/rejeitar sugestões de regras
rule-suggestions:readVisualizar sugestões de regras

Exceções e disputas

PermissãoDescrição
exceptions:readVisualizar exceções e histórico
exceptions:resolveForçar correspondência ou ajustar lançamentos
exceptions:assignAtribuir exceções a usuários
exceptions:dispatchDespachar exceções para sistemas externos
callback-credentials:readListar credenciais de callback
callback-credentials:writeGerar ou rotacionar credenciais de callback
callback-credentials:deleteRevogar credenciais de callback
disputes:readVisualizar disputas
disputes:writeCriar ou atualizar disputas
disputes:closeEncerrar disputas
disputes:submit-evidenceEnviar evidências de disputas
comments:readVisualizar comentários
comments:writeAdicionar comentários em exceções
comments:deleteExcluir comentários
Os callbacks recebidos de sistemas externos são autenticados por um token bearer opaco, não por RBAC, portanto não existe uma permissão callbacks:process. As permissões callback-credentials:* protegem apenas a superfície protegida por JWT que gera, rotaciona, lista e revoga esses tokens.

Relatórios e análises

PermissãoDescrição
dashboards:readAcessar análises e métricas do dashboard
reports:readVisualizar relatórios (correspondidos, não correspondidos, resumo, variância)
reports:exportExportar relatórios
reports:countContar linhas de relatórios
export-jobs:createCriar jobs de exportação
export-jobs:readVisualizar status de jobs de exportação
export-jobs:cancelCancelar jobs de exportação
export-jobs:downloadBaixar arquivos de exportação

Governança e privacidade

PermissãoDescrição
audit-logs:readVisualizar logs de auditoria
archives:readVisualizar arquivos
archives:downloadBaixar arquivos
actor-mappings:readVisualizar mapeamentos de ator
actor-mappings:writeCriar ou atualizar mapeamentos de ator
actor-mappings:deleteExcluir mapeamentos de ator
actor-mappings:pseudonymizePseudonimizar atores (direito ao esquecimento do GDPR)
actor-mappings:deanonymizeRevelar identidades de atores pseudonimizadas

Discovery

PermissãoDescrição
discovery-status:readVisualizar status do discovery
discovery-connections:readVisualizar conexões de discovery
discovery-connections:createCriar conexões de discovery
discovery-connections:updateAtualizar conexões de discovery
discovery-connections:writeGravar dados de conexões de discovery
discovery-connections:deleteExcluir conexões de discovery
discovery-connections:testTestar conexões de discovery
discovery-connections:extractDisparar a extração do discovery
discovery-extractions:readVisualizar extrações de discovery
discovery-extractions:pollConsultar o status de extração do discovery
discovery-refresh:executeExecutar a atualização do discovery

System

PermissãoDescrição
system-runtime-config:adminAdministrar a configuração de runtime do sistema
streaming-manifest:readLer o manifesto de streaming

Gerenciamento de funções

O serviço de autorização externo gerencia as funções, não o próprio Matcher. Configure as funções e suas permissões associadas no seu provedor de identidade ou serviço de autenticação. O Matcher verifica as permissões em cada requisição chamando o serviço de autenticação com o recurso e a ação necessários.

Isolamento de tenant


O Matcher usa isolamento pool-por-tenant no PostgreSQL: os dados de cada tenant ficam no seu próprio banco de dados, fornecendo forte separação de dados entre tenants.

Como funciona

Quando uma requisição chega, o Matcher extrai o ID do tenant do token JWT (nunca de parâmetros de consulta ou headers que você controla). Em seguida, resolve o pool de conexões dedicado ao banco de dados daquele tenant, para que cada consulta seja executada contra o próprio banco de dados do tenant em completo isolamento. Não há troca de schema compartilhado — não se usa SET search_path.
Como os dados de cada tenant ficam em um banco de dados fisicamente separado, um bug na camada de aplicação ainda não consegue alcançar os dados de outro tenant.
Detalhes de implementação
  1. ID do tenant apenas do JWT: Nunca aceito de parâmetros de requisição
  2. Resolução automática de pool: O pool de conexões do banco de dados do tenant é resolvido a partir do contexto
  3. Isolamento físico: As consultas de cada tenant são executadas contra o seu próprio banco de dados, não um compartilhado
  4. Sem acesso entre tenants: Bancos de dados fisicamente separados impõem o isolamento

Garantias de isolamento

GarantiaImplementação
Isolamento de dadosUm banco de dados PostgreSQL separado por tenant
Escopo de consultaPool de conexões por tenant resolvido a partir do JWT
Sem spoofing de tenantTenant apenas do JWT
Separação de auditoriaTabelas de auditoria por tenant

Trilha de auditoria


O Matcher registra todas as ações em um log de auditoria imutável, somente-anexação, para conformidade e análise forense.

Eventos auditados

CategoriaEventos
Acesso a DadosVisualizar correspondências, visualizar exceções, exportar dados
Modificação de DadosCriar correspondência, resolver exceção, atualizar regras
ConfiguraçãoCriar contexto, modificar fonte, alterar configurações

Consultar logs de auditoria

Use os endpoints de log de auditoria de governança para recuperar registros de auditoria:
Referência da API: Listar logs de auditoria

Mapeamentos de atores e privacidade


Os mapeamentos de atores associam identificadores do sistema (como os claims sub do JWT) com nomes legíveis e endereços de e-mail. Isso melhora a legibilidade dos logs de auditoria sem armazenar dados pessoais em cada entrada de log.

Gerenciar mapeamentos de atores

O parâmetro de rota do ID de ator aceita até 255 caracteres (correspondendo à restrição de coluna do banco de dados). Espaços em branco iniciais e finais são removidos automaticamente. Valores que excedam esse limite são rejeitados com um erro 400 Bad Request.
cURL
A operação de upsert retorna o mapeamento de ator persistido diretamente na resposta, para que você possa verificar os valores salvos sem uma requisição GET separada.

Pseudonimização LGPD/GDPR

Para atender solicitações de direito ao apagamento, pseudonimize um ator para substituir seus dados pessoais por [REDACTED]. A pseudonimização não é reversível a partir da aplicação; os registros subjacentes podem ser retidos conforme a política de conformidade e auditoria.
cURL
Referência da API: Pseudonimizar ator

Arquivos de logs de auditoria

Os logs de auditoria históricos são periodicamente comprimidos e movidos para armazenamento de longo prazo. Use os endpoints de arquivos para listar e baixar dados arquivados para revisões de conformidade.
cURL
Referência da API: Listar arquivos | Baixar arquivo

Criptografia de dados


Criptografia em trânsito

O TLS criptografa todos os dados transmitidos para e do Matcher.
RequisitoConfiguração
ProtocoloTLS 1.2 ou superior
Conjuntos de cifrasApenas cifras fortes
CertificadoCertificado válido assinado por CA
HSTSHabilitado com max-age de 1 ano

Criptografia em repouso

Tipo de DadoMétodo de Criptografia
Banco de dadosPostgreSQL TDE (Transparent Data Encryption)
Armazenamento de arquivosCriptografia AES-256
BackupsCriptografados antes do armazenamento
SegredosVault com criptografia envelope

Conformidade SOX


O Matcher mantém registros para requisitos de auditoria SOX (Sarbanes-Oxley).

Recursos de controle SOX

ControleRecurso do Matcher
Segregação de funçõesRBAC com permissões granulares
Gerenciamento de mudançasTrilha de auditoria para todas as mudanças de configuração
Controle de acessoAutenticação JWT com aplicação de funções
Trilha de auditoriaLogs imutáveis somente-anexação
Integridade de dadosChecksums e validação de transações

Segurança de API


Limitação de taxa

Alguns endpoints incluem limitação de taxa adicional para proteger contra abusos:
Tipo de EndpointLimitação de Taxa
Despacho de exceçõesSim
Endpoints de exportaçãoSim
Processamento de callbacksSim

Proteção contra SSRF

O Matcher bloqueia requisições HTTP de saída para faixas de IP privadas ao despachar exceções para sistemas externos. Isso previne ataques de Server-Side Request Forgery (SSRF). As faixas bloqueadas incluem 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8 e equivalentes IPv6.

Verificação de assinatura de webhooks

O Matcher assina payloads de webhooks de saída com HMAC-SHA256 usando um segredo compartilhado por destino. A assinatura aparece no header X-Signature-256, formatada como sha256=<hex-digest>, permitindo que os receptores verifiquem a autenticidade. (O despacho também define um header X-Idempotency-Key para entrega no máximo uma vez.)

Melhores práticas


Conceda aos usuários apenas as permissões que eles precisam. Comece com acesso mínimo e adicione permissões conforme necessário.
Implemente rotação automática para credenciais de serviço e segredos JWT. Use tokens de curta duração sempre que possível.
Mantenha os logs de auditoria habilitados e revise-os regularmente. Configure alertas para atividades suspeitas.
Mantenha os limites de taxa padrão habilitados para proteger contra abusos. Ajuste os limites com base nos padrões de tráfego esperados.
Realize revisões de acesso periódicas. Remova o acesso prontamente quando usuários mudarem de função ou saírem.
Sempre valide assinaturas HMAC-SHA256 em payloads de webhooks para confirmar que eles se originam do Matcher.
Configure monitoramento e alertas em tempo real para eventos de segurança. Investigue anomalias prontamente.

Próximos passos


Regras de correspondência

Configure regras de correspondência com segurança.

Roteamento de exceções

Configure fluxos de trabalho de exceções seguros.