1. Sigue el flujo correcto de integración
CRM depende de un orden específico de creación de entidades. Saltarse pasos o crear entidades fuera de secuencia puede llevar a integraciones rotas y datos faltantes en flujos posteriores. El flujo esperado es:
- Crear el Holder — representando al individuo u organización.
- Crear la Alias Account — vinculando el Holder a una cuenta del Midaz Ledger.
- Verificar ambos — antes de proceder con cualquier flujo posterior.
2. Protege tus claves de cifrado
CRM cifra y aplica hash a los campos sensibles antes de almacenarlos. La seguridad de estos datos depende completamente de cómo gestionas tus claves.
- Genera claves únicas para
LCRYPTO_HASH_SECRET_KEYyLCRYPTO_ENCRYPT_SECRET_KEYusandoopenssl rand -hex 32. - Almacena las claves en un gestor de secretos (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault o equivalente). Nunca las codifiques directamente en archivos de configuración, código fuente o control de versiones.
- Planifica la rotación de claves. Si una clave se ve comprometida, debes generar una nueva y re-cifrar todos los datos afectados. Este es un proceso manual — diseña tus runbooks operacionales en consecuencia.
- Usa Kubernetes Secrets en producción. Referencia secretos existentes vía
useExistingSecretyexistingSecretNameen tus valores de Helm en lugar de almacenar claves inline.
3. Nunca almacenes datos sensibles en metadata
El objeto
metadata en las entidades de CRM no está cifrado. Se almacena en texto plano y está destinado solo para información auxiliar no sensible.
No uses metadata para:
- Números de identificación personal (CPF, SSN, pasaporte)
- Detalles de cuentas financieras
- Información de contacto (email, teléfono)
- Cualquier dato sujeto a LGPD, GDPR o regulaciones similares
4. No expongas CRM directamente en capas de borde
CRM es un servicio interno. Exponerlo directamente a través de API gateways, balanceadores de carga o aplicaciones frontend aumenta tu superficie de ataque y elude los controles de acceso a nivel de aplicación. En su lugar:
- Enruta el tráfico de CRM a través de tus servicios backend o una capa de API interna.
- Usa Access Manager para aplicar autenticación y autorización si necesitas control granular.
- Restringe el acceso de red a los pods de CRM usando Kubernetes NetworkPolicies o los grupos de seguridad de tu proveedor de nube.
5. Usa soft delete como opción predeterminada
CRM soporta tanto soft delete como hard delete:
- Soft delete (predeterminado): Marca el registro con un timestamp
deletedAt. El registro se excluye de las consultas estándar pero permanece en la base de datos para propósitos de auditoría y recuperación. - Hard delete: Elimina permanentemente los datos sin posibilidad de recuperación.
6. Valida los datos antes de enviarlos a CRM
CRM actúa como una capa de datos neutral y persistente. No aplica reglas de negocio, no valida formatos de documentos ni verifica cumplimiento KYC. La integridad de los datos es tu responsabilidad. Antes de crear o actualizar registros:
- Valida los formatos de documentos (CPF, CNPJ, números de pasaporte) en tu capa de aplicación.
- Asegúrate de que los valores de
ledgerIdyaccountIdcorrespondan a entidades reales en Midaz. - Sanitiza las entradas para evitar almacenar datos malformados o inconsistentes.
7. Mantén CRM y Midaz alineados en versiones
El plugin CRM se versiona junto con Midaz Core. Antes de actualizar:
- Consulta la tabla de compatibilidad de versiones para confirmar que tus versiones objetivo son compatibles.
- Siempre actualiza Midaz Core primero, luego CRM.
- Prueba la actualización en un entorno de staging antes de aplicarla en producción.
- Haz respaldo de tus datos de MongoDB y valores de Helm antes de cualquier actualización mayor.
8. Monitorea la salud y el rendimiento de la base de datos
CRM usa MongoDB para almacenamiento de datos. En entornos de producción:
- Monitorea el uso del pool de conexiones. El valor predeterminado de
MONGO_MAX_POOL_SIZEes 1000. Ajústalo según tus patrones de tráfico y cantidad de réplicas. - Configura alertas para uso de disco de MongoDB, retraso de replicación y saturación de conexiones.
- Habilita respaldos. Ya sea que uses el MongoDB Bitnami incluido o una instancia externa, asegúrate de que los respaldos automatizados estén configurados y probados regularmente.
- Habilita OpenTelemetry (
ENABLE_TELEMETRY: true) para recolectar trazas y métricas del CRM. Intégralo con tu stack de observabilidad para visibilidad de extremo a extremo.
9. Revisa las recomendaciones de seguridad
CRM maneja datos personales y sensibles. Más allá de las prácticas específicas del plugin, asegúrate de que tu despliegue siga las Recomendaciones de seguridad de la plataforma, que cubren:
- Segmentación de red y Arquitectura Zero Trust
- Aplicación de TLS 1.2+ para todas las comunicaciones
- Configuración de IAM y RBAC
- Planificación de respuesta a incidentes
- Gestión de parches y escaneo de vulnerabilidades

