caso de uso: Pagos
Industrias: Servicios financieros, seguridad y cumplimiento normativo
Productos: MongoDB Atlas, Cifrado consultable, Cifrado en reposo mediante gestión de claves de cliente, Puntos finalesprivados, Auditoría de bases de datos, Certificación PCI DSS
Socios: Amazon Web Services
Descripción general de la solución
PCI ElDSS constituye el estándar de referencia para la protección de los datos de cuentas de pago. Establece un marco de prácticas técnicas y operativas para los sistemas que almacenan, procesan o transmiten datos de tarjetas de crédito. Proporciona a los equipos un punto de referencia común sobre cómo deben protegerse y controlarse los sistemas de pago.
La protección de los datos de pago suele implicar el cifrado. Con un enfoque convencional, una vez que un campo está cifrado, ya no se puede buscar por su valor. Para una plataforma de pago, esta limitación representa un problema práctico, ya que la investigación de fraudes depende de la búsqueda en campos sensibles, como el correo electrónico, el teléfono o la referencia de la cuenta del cliente. Sin una forma de buscar datos cifrados, la investigación obliga a tomar una decisión difícil: descifrar los datos en masa, lo que aumenta la exposición, o trabajar más lentamente y sin conexión. Este dilema plantea la siguiente pregunta de diseño para la solución:
¿Cómo puede una plataforma de pagos mantener los datos cifrados en reposo y, al mismo tiempo, permitir que los analistas de fraude los busquen por valor?
PCI DSS eleva el nivel de protección de los datos de pago. Sus versiones más recientes, v4.0 y v..,4 01hacen mayor hincapié en el cumplimiento continuo, las auditorías puntuales y consideran la reducción del alcance como una forma de disminuir el esfuerzo de evaluación para los proveedores de servicios.
Según la normativa PCI DSS, el cumplimiento se rige por un modelo de responsabilidad compartida: MongoDB Atlas garantiza la seguridad operativa de la plataforma anfitriona, mientras que los clientes controlan la configuración y las políticas de datos de su implementación.
En pocas palabras, usar MongoDB por sí solo no garantiza el cumplimiento de la norma PCI DSS. El cumplimiento se evalúa en función de un entorno específico, que abarca el producto, sus procesos y la organización. MongoDB Atlas ofrece una infraestructura certificada, además de funcionalidades en la capa de datos que reducen el esfuerzo necesario para lograr el cumplimiento y minimizan el alcance de la auditoría. El valor reside en la aceleración y la reducción del alcance, no en una garantía de cumplimiento.
Cómo se ve PCI DSS y dónde se dividen las capas
El Consejo de Estándares de Seguridad PCI mantiene el estándar PCI DSS y organiza un conjunto de requisitos agrupados bajo objetivos de control:
Objetivo | Requisitos |
|---|---|
Construir y mantener una red segura |
|
Proteger los datos de la cuenta |
|
Mantener un programa de gestión de vulnerabilidades |
|
Implementar un control de acceso robusto |
|
Supervise y pruebe las redes periódicamente. |
|
Mantener una política de seguridad de la información |
|
Según el modelo de responsabilidad compartida, estos requisitos se dividen entre las siguientes capas:
Capa de infraestructura (responsabilidad del proveedor): Comprende la seguridad física, los controles de red, la aplicación de parches a la plataforma y el cifrado del almacenamiento subyacente. MongoDB Cloud es un proveedor de servicios certificado por PCI DSS, validado por Coalfire Systems, una QSA. Para el entorno CHD en MongoDB Cloud, una QSA puede basarse en el Certificado de Cumplimiento Autorizado (AOC) de MongoDB Cloud, disponible previa solicitud a través del Centro de Confianza de MongoDB. Esta capa prevalidada elimina la necesidad de que los clientes vuelvan a auditar la infraestructura subyacente.
Capa de aplicación (responsabilidad del cliente): Comprende cómo el producto almacena, protege, consulta, enmascara y audita los datos de seguridad de los datos, y quién tiene permiso para leer la información. Esta capa sigue siendo una decisión de diseño del cliente.
Figura 1. Modelo de capas de responsabilidad compartida de PCI DSS
El proyecto PSP se centra en la capa de aplicación. Incluye una arquitectura de referencia y un conjunto de buenas prácticas. Muestra cómo usar MongoDB para alinear la capa de aplicación con los objetivos de control de PCI DSS para proteger los datos almacenados, restringir el acceso, monitorizarlos y reducir el alcance de la auditoría. Este proyecto constituye un punto de partida para acelerar la adopción de PCI DSS.
La propuesta arquitectónica
El proyecto PSP es una plataforma PSP alineada con PCI DSS. Gestiona el ciclo de vida del pago en MongoDB Atlas: verificación y autorización de tarjetas, puntuación automatizada de fraude e investigación de analistas en múltiples niveles. Muestra cómo los analistas pueden buscar datos cifrados con una filosofía de diseño clara:
Encripta todo. Consulta lo que quieras. Las claves son tuyas.
Con la capa de infraestructura heredada de Atlas (véase la figura 1), el resto del trabajo se realiza en la capa de aplicación. Atlas proporciona diversas funcionalidades para respaldar este trabajo, siendo el cifrado consultable la principal. El conjunto completo de funcionalidades se detalla en la sección de capacidades de MongoDB.
El cifrado consultable en primer plano
Con un enfoque convencional, un campo se mantiene en texto plano para que pueda buscarse (legible para cualquier persona con acceso a la base de datos) o se cifra para protegerse (pero ya no se puede buscar). El cifrado consultable elimina esta disyuntiva para los tipos de consulta que admite.
Figura 2. Arquitectura de cifrado de MongoDB: cifrado consultable, gestión de claves y capas de protección de datos.
Para un campo que admite búsqueda por igualdad, el flujo procede de la siguiente manera:
El controlador cifra el valor de búsqueda en el lado del cliente, utilizando la clave de cifrado de dominio (DEK) del campo.
El servidor compara ese valor cifrado con un índice cifrado. Compara texto cifrado con texto cifrado y no descifra el campo.
Cuando los documentos coincidentes regresan al proceso de la aplicación, el controlador descifra los campos de destino en la memoria. MongoDB Atlas almacena y procesa únicamente texto cifrado, mantenido como subtipo binario 06 BSON; como resultado, un administrador de base de datos con acceso completo al clúster solo ve bytes opacos.
El efecto concreto en el proyecto PSP: un analista de fraude busca a un cliente mediante correo electrónico, teléfono o referencia de cuenta cifrados y recupera el registro, mientras que el valor en texto plano no llega a Atlas. Esta capacidad mantiene la información personal sensible cifrada en reposo y disponible por valor, sin el descifrado masivo que amplía el CDE.
Los campos que requieren protección pero no búsqueda utilizan un modo no indexable, que solo se descifra para solicitudes autorizadas y con prioridad. La sección del modelo de datos abarca ambos modos y los campos que protegen.
Capacidades de MongoDB para la capa de aplicación
El proyecto PSP combina varias funcionalidades de MongoDB y Atlas. Cada una se corresponde con una parte específica del trabajo de la capa de aplicación de PCI DSS:
Capacidad | Rol en el proyecto | Objetivos de control de PCI DSS | Documentación de MongoDB |
|---|---|---|---|
Cifrado consultable: igualdad | Busque información personal identificable (correo electrónico, teléfono, referencia de cuenta) encriptada mediante coincidencia exacta; el campo está encriptado en el lado del cliente, por lo que el servidor de la base de datos almacena y procesa solo el texto encriptado y no recibe el texto sin encriptar. | Proteja los datos de la cuenta almacenados; restrinja el acceso. | |
Cifrado consultable: no buscable y cifrado de nivel de campo del lado del cliente. | Encripta los campos de alta sensibilidad (dirección, identificación gubernamental, datos brutos de la puerta de enlace) para que solo se puedan recuperar, y se descifren en el lado del cliente. | Proteja los datos de la cuenta almacenados; restrinja el acceso. | |
Claves gestionadas por el cliente | Mantenga la clave maestra del cliente en el servicio de gestión de claves del propio cliente; las claves maestras permanecen allí y MongoDB no tiene acceso a ellas, mientras que las claves de datos están cifradas bajo ellas. | Proteja los datos de la cuenta almacenados. | |
Biblioteca compartida de cifrado automático: | Realizar el cifrado y descifrado en el proceso del controlador/aplicación, de modo que el texto sin cifrar de los campos cifrados no se transmita a Atlas. | Proteja los datos de la cuenta almacenados; cifre la información durante la transmisión. | |
RBAC y Federación de Identidad | Acceso granular basado en roles a nivel de base de datos y colección, con LDAC/Active Directory, OpenID Connect y federación de identidades de la fuerza laboral para la autenticación. | Restringir el acceso según la necesidad de saber; identificar y autenticar a los usuarios. | |
Jerarquía de claves de cifrado de datos de dos niveles | Implemente la visibilidad de campos con privilegios mínimos de forma criptográfica, respaldada por roles de Atlas por nivel y usuarios de la base de datos. | Restringir el acceso según la necesidad de saber. | |
Redes privadas | Mantenga el tráfico de datos de los titulares de tarjetas en la red troncal del proveedor de la nube a través de puntos finales privados, con listas de direcciones IP permitidas, formando un límite de red definido alrededor del CDE. | Construir y mantener una red segura. | |
Auditoría de la base de datos Atlas | Registra el acceso a campos confidenciales como un registro de auditoría y envía los registros de auditoría a un sistema SIEM para su revisión. | Registrar y supervisar todos los accesos. | |
Seguridad de la capa de transporte 1.3 en Atlas Connections | Cifrar los datos del titular de la tarjeta en cada salto de red. | Cifrar los datos en tránsito. | |
Modelo de documento con esquema alineado con BIAN | Modelar los datos de la tarjeta, la transacción y la parte interesada para poder aislar y minimizar los datos del titular de la tarjeta. | Admite la definición del alcance y la minimización de datos. |
Casos de uso adyacentes
Los principios fundamentales de esta solución, que incluyen un límite de API estable, cifrado consultable a nivel de campo y un modelo DEK por nivel de acceso, pueden aplicarse a otros casos de uso:
Finanzas abiertas: Acceso a datos con alcance de consentimiento que restringe a un tercero a los campos que un cliente autorizó, como PSD2 y el derecho de datos del consumidor.
Atención médica: Información de salud protegida según la HIPAA.
Seguros y patrimonio: Plataformas que gestionan identificadores gubernamentales y datos de cuentas financieras en virtud del RGPD.
Arquitecturas de Referencia
El proyecto PSP es la posición de pasarela de pago en la cadena de pago con tarjeta estándar:
backend del comerciante
Pasarela de pago: Procesador, adquirente, red de tarjetas y emisor.
Gestiona el almacenamiento con alcance PCI DSS, el cifrado y el control de acceso que determina quién puede leer qué campos de datos del titular de la tarjeta. No emula la red de tarjetas ni el procesador; por lo tanto, su arquitectura se centra en la capa de seguridad de datos.
Los actores posteriores, como el procesador, el adquirente, la red de tarjetas y el emisor de tarjetas, son subsistemas externos a los que se accede mediante proveedores. En la demostración, cada proveedor cuenta con un módulo integrado que mantiene el proyecto autónomo, pero estos pueden reemplazarse por un subsistema externo real en producción. El emisor de tarjetas es uno de estos proveedores: su módulo integrado almacena internamente los datos de las tarjetas para la demostración, mientras que en producción esos datos residirían en un emisor externo.
Figura 3. Arquitectura en capas de la plataforma PSP y componentes externos.
Componentes de la arquitectura
La arquitectura utiliza los siguientes componentes:
Panel de control de PSP (Frontend): La capa de presentación. No se comunica directamente con la base de datos. Al finalizar la compra, tokeniza el PAN, por lo que el núcleo de PSP no transmite ni almacena el PAN completo.
Puerta de enlace API de PSP (Backend): El único punto de entrada y el único componente capaz de descifrar campos protegidos. Alberga el cliente de cifrado consultable, resuelve el rol del solicitante y selecciona el nivel de clave correcto para cada solicitud. Todos los solicitantes, incluyendo la interfaz de usuario, las cuentas de servicio y las integraciones, utilizan la misma API y están sujetos a las mismas reglas de control de acceso basado en roles (RBAC) y de claves.
MongoDB Atlas (M10 o superior) con cifrado consultable: Almacena únicamente texto cifrado (subtipo 06 binario) para cada campo protegido. Un administrador de base de datos con acceso completo al clúster ve bytes opacos. TLS 1.3 protege todos los datos en tránsito. El proyecto PSP se basa en la búsqueda de igualdad, que se admite en producción.
AWS KMS: Almacena la clave maestra de cliente (CMK) que encapsula y descifra las claves de cifrado de datos. La CMK permanece en KMS y MongoDB no tiene acceso a ella. Se puede utilizar un proveedor de claves local como alternativa sin conexión para las demostraciones.
Nota
La compatibilidad con consultas de cifrado mediante prefijos, sufijos y subcadenas se encuentra en versión preliminar pública y requiere MongoDB 8.2 o posterior. Asegúrese de usar MongoDB 8.2 o posterior tanto en el clúster Atlas como en la biblioteca crypt_shared. Las consultas de igualdad y de rango no requieren 8.2.
Enfoque de modelo de datos
El modelo de datos del proyecto PSP sigue las convenciones de nomenclatura de dominios de servicio BIAN, por lo que cada colección y campo se corresponde con un dominio de servicio definido en el estándar BIAN. Además de BIAN, el cifrado consultable de MongoDB define el nivel de seguridad de los campos.
Tipos de consultas y cómo se aplican en el proyecto.
El cifrado consultable de MongoDB mantiene un campo cifrado en el lado del cliente, al tiempo que permite al servidor consultar el texto cifrado. El proyecto PSP utiliza estos tipos de consulta:
Igualdad (producción): Modo de búsqueda para las claves de búsqueda con alcance PCI DSS. El controlador cifra el valor de la consulta y lo compara con un índice cifrado, por lo que el servidor no descifra el campo. Esta función permite a un analista de fraude encontrar un registro por correo electrónico, teléfono o referencia de cuenta sin exponer el texto sin cifrar.
Sin consulta (solo recuperación): Modo no consultable para los campos de mayor sensibilidad, incluidos la dirección residencial, el identificador gubernamental y las cargas útiles de la puerta de enlace sin procesar. Un cliente autorizado descifra estos campos solo en el momento preciso.
Rango (producción): Se utiliza para búsquedas de rangos de valores, como el filtrado por un rango de importe. Mantiene el importe cifrado.
Prefijo, sufijo y subcadena (vista previa pública): Demostración para búsquedas de coincidencia parcial al estilo KYC en campos de identidad cifrados.
Para los campos de tarjeta y PII incluidos en el ámbito de PCI DSS que se detallan a continuación, el diseño de acceso se reduce a las siguientes categorías:
Campo | Clasificación | Modo de cifrado | Para búsquedas |
|---|---|---|---|
| Referencia de cuenta / Información personal identificable |
| Sí |
| Referencia de la cuenta |
| Sí |
| PII |
| Sí |
| PII |
| Sí |
| cardiopatía congénita |
| No |
| PII alto |
| No |
| PII alto |
| No |
| Operaciones delicadas |
| No |
| token de red | Texto plano | Sí |
| Solo para visualización | Texto plano | No |
PAN completo ( | cardiopatía congénita | No almacenado por el núcleo de la PSP | No disponible para el núcleo de PSP |
CVV y PIN | Datos de autenticación confidenciales | Nunca almacenado | N/A |
Entre las opciones de diseño que, en la medida de lo posible, mantienen los datos del titular de la tarjeta fuera del alcance de la investigación, se incluyen:
Tokenización del PAN: La aplicación reemplaza el PAN completo con un
tok_<uuid>token sustituto y conserva solo los últimos cuatro dígitos para fines de visualización.Captura cero de SAD: Los puntos finales nunca capturan SAD como CVV o PIN.
Reduzca el alcance mediante la segmentación y la tokenización.
Una práctica común de PCI DSS evita que los datos de los titulares de tarjetas se almacenen en sistemas que no los necesitan, de modo que la mayor parte de la plataforma queda fuera del Entorno de Datos del Tarjeta (CDE). Estas técnicas aplican la segmentación, que aísla el CDE del resto del sistema, y la tokenización, que reemplaza el número de cuenta principal con un token sustituto almacenado en una bóveda de tokenización dedicada. La segmentación no es un requisito de PCI DSS, pero excluye sistemas del alcance y reduce el costo de la evaluación; cuando se utiliza, debe documentarse, justificarse y validarse.
El proyecto PSP aplica estas técnicas en la capa de datos:
El PAN completo nunca reside en el núcleo de PSP: el núcleo solo almacena el token sustituto, el BIN y los últimos cuatro dígitos. La mayor parte de la plataforma no contiene datos del titular de la tarjeta y queda fuera del alcance. El PAN completo pertenece al subsistema del emisor de la tarjeta, que es externo en producción. En la demostración, un módulo emisor integrado reemplazable actúa como tal y almacena el PAN en su propia bóveda aislada, cifrada
QE:equalitycon. Este campo se puede cotejar para una búsqueda exacta y detección de duplicados sin necesidad de descifrarlo.La información de identificación personal (PII) está centralizada: los campos de identidad, como el correo electrónico o el teléfono, se almacenan en una única colección de partes BIAN SD- a la13 que hacen referencia los registros de acuerdos, tarjetas y transacciones. Un único lugar para proteger y procesar las solicitudes de eliminación de datos personales.
Los campos sensibles se encuentran detrás de un nivel de clave separado:
QE:noneLos campos utilizan un nivel de clave de cifrado de datos diferente al de los camposQE:equalityque se pueden buscar, por lo que el límite entre los datos sensibles y los no sensibles se aplica mediante las claves.
Se trata de un patrón de referencia, no de una certificación. La definición del CDE y su validación son responsabilidad del cliente y del evaluador, quien debe confirmarlas.
El control de acceso se aplica mediante claves, no mediante código de aplicación.
Separe DEK para respaldar los niveles de cifrado:
Nivel de búsqueda:
QE:equalityLas claves están disponibles para todos los roles de analista autenticados para realizar búsquedas.Nivel sensible:
QE:noneLas claves solo están disponibles para un investigador de nivel 2 que posea un token de escalada válido y de corta duración, y para un auditor de seguridad de solo lectura.El núcleo del diseño: 1 El mapa de campos cifrados de un cliente de nivel omite las claves confidenciales, por lo que el controlador no puede descifrar esos campos y los devuelve como texto cifrado. El control de acceso a nivel de campo es criptográfico, en lugar de una proyección en el código de la aplicación, lo que reduce el riesgo de una fuga accidental a través de un error de consulta. Cuando un analista escala un caso y un investigador de nivel 2 lo aprueba, el investigador recibe un token de escalamiento que activa el grupo de clientes de nivel confidencial para esa solicitud.
Compilar la solución
Esta sección es una guía de implementación para equipos que desean ejecutar y evaluar la solución. Cubre las opciones de configuración clave para una implementación exitosa, cómo ejecutar la pila localmente y cómo implementarla en producción. Utilice este repositorio de GitHub para implementar esta solución.
Configura los requisitos previos
Verifique que su proyecto cumpla con los siguientes requisitos:
Node.js 20 LTS o superior.
Docker y Docker Compose (recomendado para ejecutar la pila completa).
Un clúster MongoDB Atlas, M10 o superior. El cifrado consultable no está disponible en el nivel gratuito.
Un proveedor clave, como AWS KMS, o el proveedor local,
PSP_KMS_PROVIDER=local, para el desarrollo fuera de línea.La biblioteca compartida de cifrado automático. Descárguela desde las descargas de MongoDB Enterprise y apúntela
MONGODB_CRYPT_SHARED_LIB_PATHa. Si no se especifica, el backend recurrirá a las rutas de instalación comunes.
Configurar el servicio de administración de claves
Utilice el comando de configuración de la base de datos npm run setup:db para aprovisionar el almacén de claves de MongoDB. Utilice una DEK para cada campo cifrado, protegida por la CMK. Este paso es idempotente, por lo que puede volver a ejecutarlo sin problemas para reutilizar las claves existentes.
Utilice un KMS administrado, como AWS KMS, para cualquier implementación en producción o similar. La CMK permanece en la cuenta de la organización y MongoDB no tiene acceso a ella.
Para AWS KMS, configure el proveedor a través de variables de entorno:
PSP_KMS_PROVIDER=aws AWS_CMK_ARN=arn:aws:kms:<region>:<account-id>:key/<key-id> AWS_REGION=<region> AWS_ACCESS_KEY_ID=<access-key-id> AWS_SECRET_ACCESS_KEY=<secret-access-key> AWS_SESSION_TOKEN=<token> # optional, for temporary credentials
Como alternativa, utilice un proveedor de claves local que almacene la clave maestra en una variable de entorno. Esta configuración sirve como solución provisional para demostraciones sin conexión y desarrollo local, y no es adecuada para datos reales de titulares de tarjetas.
Configure la solución alternativa de KMS local solo para demostraciones sin conexión:
PSP_KMS_PROVIDER=local PSP_KMS_LOCAL_MASTER_KEY=<96-byte base64 key> # generate with: npm run setup:key:master
El proveedor local requiere una clave maestra base64 de 96bytes. MongoDB Queryable Encryption espera este tamaño para un proveedor local.
Configurar el bus de eventos
La plataforma se basa en eventos. Los eventos de negocio y de cumplimiento fluyen a través de un bus de eventos. El motor se selecciona mediante EVENT_BUS_ENGINE, y el mismo código de publicación y de consumo se ejecuta independientemente de la opción elegida.
Utilice Kafka para entornos de producción o de alto rendimiento, de modo que los eventos sean duraderos, estén particionados y puedan ser consumidos por otros sistemas.
EVENT_BUS_ENGINE=kafka KAFKA_BROKERS=broker1:9092,broker2:9092 KAFKA_CLIENT_ID=pci-psp KAFKA_SSL=true KAFKA_SASL_MECHANISM=plain # or scram-sha-256 / scram-sha-512 KAFKA_SASL_USERNAME=<username> KAFKA_SASL_PASSWORD=<password> EVENT_BUS_TOPIC_PREFIX=pci.psp
Utilice el motor en proceso para entornos menos exigentes, como el desarrollo local, las demostraciones o las implementaciones de bajo volumen.
EVENT_BUS_ENGINE=in-process
Los datos de la tarjeta viajan como un sobre cifrado, por lo que la elección del motor no cambia la postura de cumplimiento de PCI DSS.
Establecer configuraciones adicionales
Establezca los siguientes valores en la raíz .env antes de iniciar la pila:
MongoDB Atlas:
MONGODB_URI,MONGODB_DB_NAMEBiblioteca compartida QE:
MONGODB_CRYPT_SHARED_LIB_PATHAutenticación:
PSP_JWT_SECRET,PSP_OAUTH_KEY_PROVIDERInterfaz/comerciante:
NEXT_PUBLIC_PSP_URL_BACKEND_PUBLIC,PSP_MERCHANT_OAUTH_CLIENT_ID,PSP_MERCHANT_OAUTH_CLIENT_SECRET,PSP_MERCHANT_SESSION_SECRET
El repositorio contiene un .env archivo para editar; consulte la página wiki de instalación para ver la lista completa.
Ejecuta la demostración localmente con Docker Compose.
Instale las dependencias, configure y complete la base de datos, y luego inicie la pila. Docker Compose es la opción recomendada para la primera ejecución. Inicia el backend, el portal PSP y la aplicación para comerciantes como una pila de contenedores autocontenida:
npm run setup # install root + backend + frontend + merchant dependencies npm run setup:db # create QE collections, provision DEKs and indexes npm run setup:seed # insert synthetic BIAN demo data docker compose up # start the full stack
Para el desarrollo local con recarga en caliente, utilice npm run dev en lugar de docker compose up.
Una vez en funcionamiento, los servicios estarán disponibles en:
Portal de PSP en http://localhost:8080
Aplicación para comerciantes en http://localhost:8082
API de backend en http://localhost:8081
OpenAPI/Swagger en
/docControl de salud en
/api/v1/system/health
Figura 4. Interfaz de usuario de demostración de la aplicación Leafy Pay
setup:db Requiere un clúster Atlas M10 o superior en funcionamiento con credenciales KMS válidas. La demostración utiliza únicamente datos sintéticos.
Implementar para producción
Para un entorno de producción o compartido, implemente en Kubernetes en lugar de en un único host de Docker Compose:
npm run deploy:kube # Kubernetes deploy via tools/kube.ts npm run deploy:docker # alternative: containerised deploy with docker compose
Configuración de producción recomendada:
Utilice AWS KMS para el proveedor de claves y el bus de eventos de Kafka.
Proporcione las cadenas de conexión y las credenciales de QE por nivel como secretos de Kubernetes.
Finalice el tráfico del cliente a través de TLS y acceda a Atlas a través de puntos finales privados cuando estén disponibles.
Una vez que AWS KMS esté implementado, escale el backend horizontalmente; mantenga una sola réplica mientras se ejecute en el proveedor de claves local.
Lecciones clave
Diseño basado en la responsabilidad compartida desde el primer día: la certificación PCI DSS de MongoDB Atlas permite que la capa de infraestructura se herede a través del AOC, pero la capa de aplicación sigue siendo responsabilidad del cliente.
Habilite el cifrado y la capacidad de búsqueda simultáneamente: el cifrado consultable admite búsquedas de coincidencia exacta en información de identificación personal (PII) cifrada sin que el servidor la descifre, lo que puede facilitar la disyuntiva entre "descifrar para investigar" que tiende a ampliar el alcance de PCI DSS.
Implemente el control de acceso con claves, no solo con código: un modelo DEK por nivel convierte el acceso a nivel de campo en criptográfico. Un cliente con privilegios limitados no puede descifrar campos confidenciales, lo que reduce la probabilidad de que un error en la consulta los filtre.
Reduzca el alcance antes de proteger los datos: la tokenización del PAN y el almacenamiento únicamente de los últimos cuatro dígitos enmascarados mantienen la mayor parte del sistema fuera del alcance de los datos del titular de la tarjeta. Los datos que están fuera del alcance requieren menos controles que los datos cifrados pero aún dentro del alcance, por lo que la reducción del alcance disminuye la superficie de auditoría.
Diseñe el registro de auditoría para que perdure más que las claves: mantenga el registro de acceso de solo escritura sin cifrar y separado de los datos que describe, de modo que siga siendo legible durante la rotación de claves y admita el registro y la supervisión de acceso que exige la norma PCI DSS.
Autores
- Antonio Membrides Espinosa, MongoDB