Construindo um Microsserviço de Triagem de Sanções com Go e Kafka (PT-BR)
Descubra como projetar e implementar uma robusta arquitetura de microsserviço de triagem de sanções usando Go, Kafka e Open Policy Agent (OPA).

Conformidade EscalávelImplemente um microsserviço de triagem de sanções para conformidade AML em tempo real, capaz de lidar com alto volume de dados e mudanças regulatórias dinâmicas.
Design Orientado a EventosAproveite o Kafka para processamento assíncrono e sincronização de dados eficiente, garantindo impacto mínimo na lógica de negócios central.
Compliance-as-CodeUtilize o Open Policy Agent (OPA) para externalizar e gerenciar regras de conformidade, permitindo atualizações ágeis e auditabilidade.
Detecção de Fraudes AprimoradaIntegre sinais de risco avançados e consultas de dados em tempo real para fortalecer sua estrutura AML e melhorar a prevenção de fraudes.
No cenário regulatório em rápida evolução de hoje, as instituições financeiras e empresas reguladas enfrentam uma imensa pressão para realizar verificações robustas de combate à lavagem de dinheiro (AML), incluindo uma triagem de sanções abrangente. Os sistemas monolíticos tradicionais geralmente têm dificuldade em acompanhar as regulamentações dinâmicas, os volumes de transações em tempo real e a necessidade de atualizações ágeis. Esta postagem do blog aborda a construção de uma arquitetura de microsserviço de triagem de sanções moderna e escalável usando tecnologias de ponta como Go, Kafka e Open Policy Agent (OPA).
A Necessidade de Triagem de Sanções em Tempo Real e Microsserviços
A luta global contra o crime financeiro exige vigilância. Reguladores em todo o mundo impõem requisitos rigorosos para a triagem de indivíduos e entidades contra listas de sanções (por exemplo, OFAC, ONU, UE). Atrasos ou falhas podem resultar em multas pesadas, danos à reputação e até acusações criminais. Processos manuais ou sistemas de triagem baseados em lotes não são mais suficientes para empresas que operam em ambientes em tempo real.
Uma arquitetura de microsserviços aborda esses desafios por meio de:
- Escalabilidade: Escale independentemente o serviço de triagem de sanções com base na demanda, sem afetar outras partes do seu sistema.
- Agilidade: Implante atualizações e novas regras rapidamente, crucial para responder a listas de sanções em constante mudança.
- Resiliência: Isole falhas; um problema no serviço de triagem não derrubará toda a sua plataforma.
- Diversidade Tecnológica: Escolha as melhores ferramentas para o trabalho. Go é uma excelente escolha para serviços de alto desempenho e concorrentes.
Nosso objetivo é construir um serviço que possa rastrear novos usuários, transações e perfis de clientes contínuos em cenários de AML em tempo real, fornecendo avaliações de risco imediatas sem introduzir latência significativa em aplicativos voltados para o usuário.
Visão Geral da Arquitetura: Go, Kafka e OPA para Conformidade
Aqui está uma visão de alto nível do nosso microsserviço de triagem de sanções proposto:

- Camada de Ingestão (Produtor Kafka): Serviços centrais (por exemplo, integração de usuários, processamento de transações) publicam eventos (por exemplo,
user_created,transaction_initiated) em um tópico Kafka. - Serviço de Triagem de Sanções (Consumidor Go): Um microsserviço Go consome esses eventos do Kafka.
- Enriquecimento de Dados: O serviço Go enriquece os dados de entrada com informações internas do cliente ou fontes de dados externas (por exemplo, análise de IP, impressão digital de dispositivo).
- Armazenamento de Dados de Sanções: Um banco de dados dedicado e frequentemente atualizado (por exemplo, PostgreSQL, Redis) armazena listas de sanções consolidadas de vários provedores.
- Mecanismo de Correspondência: O serviço Go implementa algoritmos de correspondência difusa para comparar nomes de entidades de entrada com listas de sanções.
- Ponto de Decisão de Política (OPA): Para avaliação de regras complexas e compliance-as-code, o serviço Go consulta uma instância do Open Policy Agent (OPA). O OPA avalia as políticas Rego em relação aos dados enriquecidos e resultados de correspondência para tomar uma decisão final de conformidade (por exemplo,
approve,flag_for_review,deny). - Publicação de Resultados (Produtor Kafka): O serviço Go publica os resultados da triagem (por exemplo, evento
sanctions_screenedcom status e detalhes) de volta para outro tópico Kafka. - Alertas/Ações: Serviços a jusante consomem esses resultados para acionar ações como revisão manual, bloqueio de conta ou retenção de transações.
Implementando a Lógica de Triagem de Sanções com Go
O excelente modelo de concorrência e desempenho do Go o tornam ideal para construir microsserviços de alto rendimento. Veja como os principais componentes seriam implementados:
Consumidor Kafka em Go
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"github.com/segmentio/kafka-go"
)
func main() {
broker := "localhost:9092"
topic := "onboarding_events"
groupID := "sanctions_consumer_group"
r := kafka.NewReader(kafka.ReaderConfig{
Brokers: []string{broker},
Topic: topic,
GroupID: groupID,
MinBytes: 10e3, // 10KB
MaxBytes: 10e6, // 10MB
MaxWait: 1 * time.Second,
})
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
log.Println("Starting Kafka consumer...")
go func() {
for {
m, err := r.ReadMessage(ctx)
if err != nil {
log.Printf("Error reading message: %v", err)
break
}
log.Printf("Received message: %s from topic %s partition %d offset %d\n", string(m.Value), m.Topic, m.Partition, m.Offset)
// Process the message for sanctions screening
// ... call screening logic ...
// Publish result to another Kafka topic
}
}()
<-sigChan
log.Println("Shutting down consumer...")
if err := r.Close(); err != nil {
log.Fatalf("Failed to close reader: %v", err)
}
}
Lógica de Correspondência de Sanções
O serviço Go implementará algoritmos de correspondência difusa (por exemplo, Jaro-Winkler, distância de Levenshtein) para comparar nomes, apelidos e endereços de eventos de entrada com os dados de sanções armazenados. Limiares e ponderação podem ser configurados. A integração com provedores externos de dados de sanções envolve APIs robustas e pipelines de sincronização de dados para manter as listas atualizadas.
Compliance-as-Code com Open Policy Agent (OPA)
O OPA é um divisor de águas para o gerenciamento de regras de conformidade complexas. Em vez de codificar a lógica, você define políticas em Rego, a linguagem declarativa de alto nível do OPA. Isso oferece:
- Gerenciamento Centralizado de Políticas: Todas as regras de conformidade vivem em um só lugar.
- Controle de Versão: As políticas podem ser versionadas, revisadas e implantadas como código.
- Auditabilidade: O OPA fornece logs de decisão claros, mostrando exatamente por que uma decisão foi tomada.
- Flexibilidade: Adapte-se facilmente a novas regulamentações sem reimplantar o serviço principal.
Exemplo de Política Rego para Triagem de Sanções
Considere uma política simples para sinalizar se uma pontuação de correspondência excede um limite e o tipo de entidade é 'indivíduo':
package sanctions.screening
default allow = false
allow {
input.match_score < 0.85
}
flag_for_review {
input.match_score >= 0.85
input.match_score < 0.95
input.entity_type == "individual"
}
deny {
input.match_score >= 0.95
}
O serviço Go faria uma solicitação HTTP POST para o agente OPA com os dados relevantes (input), e o OPA retornaria uma decisão JSON.
Como a Didit Ajuda na Triagem de Sanções
Construir um microsserviço de triagem de sanções robusto do zero é um empreendimento significativo, exigindo experiência em ingestão de dados, algoritmos de correspondência, conformidade regulatória e infraestrutura escalável. A Didit fornece uma solução abrangente e pronta para uso que pode acelerar significativamente seu tempo de lançamento no mercado e reduzir a sobrecarga operacional.
A plataforma da Didit oferece:
- Triagem AML em Tempo Real: Rastreie usuários contra mais de 1.300 listas de observação globais, incluindo OFAC, ONU, sanções da UE, bancos de dados PEP, mídia adversa e registros criminais.
- Mecanismo de Risco Configurável: Utilize um sistema de duas pontuações (pontuação de correspondência + pontuação de risco) com pesos e limites configuráveis, semelhante ao que você conseguiria com o OPA, mas totalmente gerenciado.
- Monitoramento Contínuo de AML: Rastreie automaticamente os usuários verificados diariamente e receba alertas de webhook sobre novos acertos de sanções ou mudanças no perfil de risco.
- Plataforma de Identidade Unificada: Combine triagem de sanções com verificação de identidade, biometria e detecção de fraudes por meio de uma única API, simplificando todo o seu fluxo de trabalho de conformidade e segurança.
- Design API-First: Integre facilmente os módulos da Didit em sua arquitetura de microsserviços existente, permitindo que você se concentre na lógica de negócios principal enquanto descarrega tarefas complexas de conformidade.
- Custo-Efetivo: A Didit oferece preços transparentes e por verificação, muitas vezes significativamente mais econômicos do que construir e manter esses sistemas internamente.
Ao aproveitar a Didit, você pode implementar rapidamente recursos avançados de triagem de sanções, garantindo conformidade AML em tempo real sem a pesada carga de desenvolvimento.
FAQ
O que é triagem de sanções em AML?
A triagem de sanções em AML (Anti-Lavagem de Dinheiro) é o processo de verificar indivíduos, entidades e transações em relação a listas oficiais emitidas pelo governo de partes sancionadas. Essas listas contêm indivíduos, organizações e países sujeitos a restrições financeiras devido ao seu envolvimento em terrorismo, tráfico de drogas, violações de direitos humanos ou outras atividades ilegais. O objetivo é prevenir crimes financeiros e garantir a conformidade com as regulamentações internacionais.
Por que usar microsserviços para triagem de sanções?
Microsserviços aprimoram a triagem de sanções, proporcionando escalabilidade, agilidade e resiliência. Eles permitem o dimensionamento independente do componente de triagem, a implantação rápida de novas regras e o isolamento de falhas, facilitando a adaptação às regulamentações em evolução e o manuseio eficiente de grandes volumes de transações. Isso permite a conformidade AML em tempo real crucial para empresas modernas.
O que é Compliance-as-Code?
Compliance-as-Code é uma abordagem em que as políticas regulatórias e organizacionais são definidas, gerenciadas e aplicadas usando código. Ferramentas como o Open Policy Agent (OPA) permitem que as regras de conformidade sejam escritas em uma linguagem de alto nível (Rego), controladas por versão e aplicadas automaticamente, garantindo consistência, auditabilidade e adaptação mais rápida às mudanças regulatórias.
Como o Kafka melhora a triagem AML em tempo real?
O Kafka melhora a triagem AML em tempo real, fornecendo uma plataforma de streaming de eventos altamente escalável e tolerante a falhas. Ele permite o processamento assíncrono de dados de clientes e transações, desacoplando o serviço de triagem dos sistemas upstream. Isso garante que a triagem possa ocorrer de forma contínua e eficiente, sem bloquear as operações comerciais principais, e permite ações imediatas sobre atividades suspeitas.
Pronto para Começar?
Implementar uma solução robusta de triagem de sanções é fundamental para manter a conformidade e prevenir crimes financeiros. Quer você opte por construí-la você mesmo com uma arquitetura de microsserviços ou aproveite uma plataforma poderosa como a Didit, priorizar recursos em tempo real e gerenciamento ágil de políticas é fundamental.
Explore a plataforma de identidade da Didit e veja como nossas ferramentas abrangentes de triagem AML e conformidade podem otimizar suas operações e proteger seus negócios.