1. Siga o fluxo correto de integração
O CRM depende de uma ordem específica para criar entidades. Se você pular etapas ou criar entidades fora de ordem, pode quebrar integrações e perder dados em fluxos posteriores. O fluxo esperado é:
- Criar o holder — o indivíduo ou a organização.
- Vincular o holder a uma conta do ledger do Midaz — associe o holder a uma conta que já existe no ledger.
- Certifique-se de que ambos existam — antes de iniciar qualquer fluxo posterior.
2. Proteja suas chaves de criptografia
O CRM criptografa e aplica hash nos campos sensíveis antes de armazená-los. A segurança desses dados depende inteiramente de como você gerencia suas chaves.
- Gere chaves únicas para
LCRYPTO_HASH_SECRET_KEYeLCRYPTO_ENCRYPT_SECRET_KEYcomopenssl rand -hex 32. - Armazene as chaves em um gerenciador de secrets (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault ou equivalente). Nunca codifique-as diretamente em arquivos de configuração, código-fonte ou controle de versão.
- Planeje a rotação de chaves. Se uma chave for comprometida, gere uma nova e re-criptografe todos os dados afetados. Este é um processo manual, então projete seus runbooks operacionais para isso.
- Use Kubernetes Secrets em produção. Referencie secrets existentes via
useExistingSecreteexistingSecretNamenos seus valores de Helm em vez de armazenar chaves inline.
3. Nunca armazene dados sensíveis em metadata
O objeto
metadata nas entidades do CRM não é criptografado. O CRM o armazena em texto plano apenas para informações auxiliares não sensíveis.
Não use metadata para:
- Números de identificação pessoal (CPF, SSN, passaporte)
- Detalhes de contas financeiras
- Informações de contato (email, telefone)
- Quaisquer dados sujeitos à LGPD, GDPR ou regulamentações similares
4. Não exponha o CRM diretamente em camadas de borda
O CRM é executado dentro do ledger do Midaz e expõe uma API interna. Se você o expõe diretamente através de API gateways, balanceadores de carga ou aplicações frontend, aumenta sua superfície de ataque. Você também contorna os controles de acesso no nível da aplicação. Em vez disso:
- Roteie o tráfego do CRM através dos seus serviços backend ou uma camada de API interna.
- Use o Access Manager para aplicar autenticação e autorização se você precisar de controle granular.
- Restrinja o acesso de rede aos pods do ledger com Kubernetes NetworkPolicies ou os grupos de segurança do seu provedor de nuvem.
5. Use soft delete como padrão
O CRM suporta tanto soft delete quanto hard delete:
- Soft delete (padrão): O CRM marca o registro com um timestamp
deletedAt. O registro deixa de aparecer nas consultas padrão, mas permanece no banco de dados para auditoria e recuperação. - Hard delete: O CRM solicita a remoção do registro, sujeita às regras de retenção e conformidade da sua implementação. Quando obrigações legais, regulatórias, de auditoria ou de manutenção de registros exigem a retenção, o CRM não garante a remoção física.
Confirme sua política de retenção e de retenção legal (legal hold) antes de executar um hard delete. O direito ao esquecimento do GDPR (Artigo 17) não é absoluto. Quando obrigações legais, regulatórias, de auditoria ou de manutenção de registros exigem a retenção de dados, elas podem prevalecer e restringir o apagamento.
6. Valide os dados antes de enviá-los ao CRM
O CRM atua como uma camada de dados neutra e persistente. Ele não aplica regras de negócio, não valida formatos de documentos nem verifica conformidade KYC. A integridade dos dados é sua responsabilidade. Antes de criar ou atualizar um registro:
- Valide os formatos de documentos (CPF, CNPJ, números de passaporte) na sua camada de aplicação.
- Certifique-se de que os valores de
ledgerIdeaccountIdapontem para entidades reais no Midaz. - Sanitize as entradas para não armazenar dados malformados ou inconsistentes.
7. Mantenha o CRM e o Midaz alinhados em versões
O CRM é distribuído dentro do binário do ledger do Midaz, portanto compartilha a versão do Midaz. Antes de atualizar:
- Consulte a tabela de compatibilidade de versões para confirmar sua versão-alvo.
- Teste a atualização em um ambiente de staging antes de aplicá-la em produção.
- Faça backup dos seus dados do MongoDB e valores de Helm antes de qualquer atualização maior.
8. Monitore a saúde e o desempenho do banco de dados
O CRM usa MongoDB para armazenamento de dados. Em produção:
- Monitore o uso do pool de conexões. O valor padrão de
MONGO_CRM_MAX_POOL_SIZEé 1000. Ajuste-o com base nos seus padrões de tráfego e quantidade de réplicas. - Configure alertas para uso de disco do MongoDB, atraso de replicação e saturação de conexões.
- Habilite backups. Seja usando o MongoDB Bitnami incluído ou uma instância externa, execute backups automatizados e teste-os regularmente.
- Habilite OpenTelemetry (
ENABLE_TELEMETRY: true) para coletar traces e métricas do CRM. Integre com sua stack de observabilidade para visibilidade de ponta a ponta.
9. Revise as recomendações de segurança
O CRM lida com dados pessoais e sensíveis. Além das práticas específicas do CRM, certifique-se de que seu deploy siga as Recomendações de segurança da plataforma, que cobrem:
- Segmentação de rede e Arquitetura Zero Trust
- Aplicação de TLS 1.2+ para todas as comunicações
- Configuração de IAM e RBAC
- Planejamento de resposta a incidentes
- Gerenciamento de patches e varredura de vulnerabilidades

