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.

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 TenantSchema-por-tenant PostgreSQL
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 (v2) para autenticação, suportando controle de acesso baseado em JWT com assinatura HMAC.

Configuração

Três variáveis de ambiente controlam a autenticação:
VariávelObrigatóriaDescrição
AUTH_ENABLEDSimHabilitar ou desabilitar autenticação (true/false)
AUTH_SERVICE_ADDRESSQuando auth habilitadoEndereço do serviço de autorização externo
AUTH_JWT_SECRETQuando auth habilitadoSegredo compartilhado para verificação de assinatura de token HMAC
Quando 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

O Matcher valida JWTs assinados com algoritmos HMAC (HS256, HS384, HS512). O token deve incluir claims de identificação do tenant:
{
  "sub": "user_123",
  "tenant_id": "11111111-1111-1111-1111-111111111111",
  "tenant_slug": "acme-corp",
  "iat": 1705749600,
  "exp": 1705753200,
  "nbf": 1705749600
}
ClaimObrigatórioDescrição
tenant_id ou tenantIdSimUUID do tenant para isolamento de schema
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:
curl -X GET "https://api.matcher.example.com/v1/config/contexts" \
 -H "Authorization: Bearer $JWT_TOKEN"

Validação de token

O Matcher valida tokens em cada requisição:
  1. Verificação de assinatura: Valida a assinatura HMAC usando o segredo compartilhado configurado
  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 isolamento de schema

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 resource:sub-resource:action.

Estrutura de permissão

<resource>:<sub-resource>:<action>
Exemplos:
  • configuration:context:create — Criar contextos de reconciliação
  • matching:job:run — Executar jobs de correspondência
  • exception:exception:resolve — Resolver exceções

Lista completa de permissões

O Matcher define seis domínios de recursos. Cada endpoint requer uma permissão específica verificada contra o serviço de autorização externo.

Configuração

PermissãoDescrição
configuration:context:createCriar contextos de reconciliação
configuration:context:readVisualizar contextos
configuration:context:updateAtualizar contextos
configuration:context:deleteExcluir contextos
configuration:source:createCriar fontes de dados
configuration:source:readVisualizar configuração de fonte
configuration:source:updateModificar configurações de fonte
configuration:source:deleteRemover fontes de dados
configuration:field-map:createCriar mapeamentos de campo
configuration:field-map:readVisualizar mapeamentos de campo
configuration:field-map:updateAtualizar mapeamentos de campo
configuration:field-map:deleteExcluir mapeamentos de campo
configuration:rule:createCriar regras de correspondência
configuration:rule:readVisualizar regras de correspondência
configuration:rule:updateAtualizar regras de correspondência
configuration:rule:deleteExcluir regras de correspondência
configuration:fee-schedule:createCriar agendamentos de tarifas
configuration:fee-schedule:readVisualizar agendamentos de tarifas
configuration:fee-schedule:updateAtualizar agendamentos de tarifas
configuration:fee-schedule:deleteExcluir agendamentos de tarifas
configuration:schedule:createCriar agendamentos
configuration:schedule:readVisualizar agendamentos
configuration:schedule:updateAtualizar agendamentos
configuration:schedule:deleteExcluir agendamentos

Ingestão

PermissãoDescrição
ingestion:import:createFazer upload de arquivos de transação
ingestion:job:readVisualizar jobs de importação e detalhes de transação
ingestion:transaction:ignoreMarcar transações como ignoradas
ingestion:transaction:searchPesquisar transações

Correspondência

PermissãoDescrição
matching:job:runExecutar ciclos de correspondência
matching:job:readVisualizar resultados de correspondência e grupos
matching:job:deleteExcluir grupos de correspondência (desfazer correspondência)
matching:adjustment:createCriar lançamentos de ajuste

Exceção

PermissãoDescrição
exception:exception:readVisualizar exceções e histórico
exception:exception:resolveForçar correspondência ou ajustar lançamentos
exception:exception:dispatchDespachar exceções para sistemas externos
exception:callback:processProcessar callbacks de webhook externo
exception:dispute:readVisualizar disputas
exception:dispute:writeCriar disputas, encerrar disputas, enviar evidências
exception:comment:writeAdicionar ou excluir comentários em exceções

Governança

PermissãoDescrição
governance:audit:readVisualizar logs de auditoria
governance:archive:readVisualizar e baixar arquivos
governance:actor-mapping:readVisualizar mapeamentos de ator
governance:actor-mapping:writeCriar ou atualizar mapeamentos de ator
governance:actor-mapping:deleteExcluir mapeamentos de ator

Relatórios

PermissãoDescrição
reporting:dashboard:readAcessar análises e métricas do dashboard
reporting:export:readVisualizar e exportar relatórios (correspondidos, não correspondidos, resumo, variância)
reporting:export-job:writeCriar e cancelar jobs de exportação
reporting:export-job:readVisualizar status de jobs de exportação e baixar exportações

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 schema-por-tenant no PostgreSQL, 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, configura a conexão do banco de dados para usar o schema daquele tenant via SET LOCAL search_path, para que cada consulta seja executada em completo isolamento.
Mesmo se existisse um bug na camada de aplicação, o banco de dados impõe a separação. O isolamento de schema é aplicado por transação para prevenir poluição do pool de conexões.
Detalhes de implementação
  1. ID do tenant apenas do JWT: Nunca aceito de parâmetros de requisição
  2. Seleção automática de schema: Aplicada via auth.ApplyTenantSchema()
  3. Isolamento por transação: Usa SET LOCAL search_path para delimitar cada transação do banco de dados
  4. Sem acesso entre tenants: O banco de dados impõe o isolamento

Garantias de isolamento

GarantiaImplementação
Isolamento de dadosSchemas PostgreSQL separados
Escopo de consultaSET LOCAL search_path por transação
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:
curl -X GET "https://api.matcher.example.com/v1/governance/audit-logs" \
 -H "Authorization: Bearer $TOKEN"
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

cURL
curl -X PUT "https://api.matcher.example.com/v1/governance/actor-mappings/user-abc-123" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "display_name": "John Doe",
   "email": "john.doe@company.com"
 }'

Pseudonimização LGPD/GDPR

Para atender solicitações de direito ao apagamento, pseudonimize um ator para substituir seus dados pessoais por [REDACTED]. Esta ação é irreversível.
cURL
curl -X POST "https://api.matcher.example.com/v1/governance/actor-mappings/user-abc-123/pseudonymize" \
 -H "Authorization: Bearer $TOKEN"
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
curl -X GET "https://api.matcher.example.com/v1/governance/archives" \
 -H "Authorization: Bearer $TOKEN"
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. A assinatura aparece no header X-Signature-256, permitindo que os receptores verifiquem a autenticidade.

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.