Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Acelere la adopción de PCI DSS con MongoDB Atlas

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

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.

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

  1. controles de seguridad de la red

  2. Configuraciones seguras

Proteger los datos de la cuenta

  1. Proteja los datos de la cuenta almacenados.

  2. Cifrar los datos en tránsito

Mantener un programa de gestión de vulnerabilidades

  1. Anti-malware

  2. Software y sistemas seguros

Implementar un control de acceso robusto

  1. Restringir el acceso según la necesidad de saber

  2. Identificar y autenticar usuarios

  3. Restringir el acceso físico

Supervise y pruebe las redes periódicamente.

  1. Registrar y supervisar todos los accesos

  2. Pruebe la seguridad con regularidad.

Mantener una política de seguridad de la información

  1. Política de seguridad organizacional

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.

Modelo de capas de responsabilidad compartida PCI DSS

Figura 1. Modelo de capas de responsabilidad compartida de PCI DSS

haga clic para ampliar

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.

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.

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.

Arquitectura de cifrado de MongoDB: cifrado consultable, gestión de claves y capas de protección de datos

Figura 2. Arquitectura de cifrado de MongoDB: cifrado consultable, gestión de claves y capas de protección de datos.

haga clic para ampliar

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.

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: crypt_shared

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.

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.

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.

Arquitectura en capas de la plataforma PSP y componentes externos

Figura 3. Arquitectura en capas de la plataforma PSP y componentes externos.

haga clic para ampliar

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.

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.

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

cardTransactionAccountReference

Referencia de cuenta / Información personal identificable

QE:equality

customerAgreementReference

Referencia de la cuenta

QE:equality

partyEmailAddress

PII

QE:equality

partyMobilePhoneNumber

PII

QE:equality

paymentCardExpirationDate

cardiopatía congénita

QE:none

No

customerAgreementResidentialAddress

PII alto

QE:none

No

governmentIdentificationReference

PII alto

QE:none

No

rawGatewayPayload, processorTransactionMetadata

Operaciones delicadas

QE:none

No

paymentCardReference

token de red

Texto plano

paymentCardMaskedPanDisplay

Solo para visualización

Texto plano

No

PAN completo (paymentCardNumber)

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.

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:equality con. 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:none Los campos utilizan un nivel de clave de cifrado de datos diferente al de los campos QE:equality que 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.

Separe DEK para respaldar los niveles de cifrado:

  • Nivel de búsqueda: QE:equality Las claves están disponibles para todos los roles de analista autenticados para realizar búsquedas.

  • Nivel sensible: QE:none Las 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.

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.

1

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_PATH a. Si no se especifica, el backend recurrirá a las rutas de instalación comunes.

2

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.

3

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.

4

Establezca los siguientes valores en la raíz .env antes de iniciar la pila:

  • MongoDB Atlas: MONGODB_URI, MONGODB_DB_NAME

  • Biblioteca compartida QE: MONGODB_CRYPT_SHARED_LIB_PATH

  • Autenticación: PSP_JWT_SECRET, PSP_OAUTH_KEY_PROVIDER

  • Interfaz/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.

5

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:

Interfaz de usuario de demostración de la aplicación Leafy Pay

Figura 4. Interfaz de usuario de demostración de la aplicación Leafy Pay

haga clic para ampliar

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.

6

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.

  • 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.

  • Antonio Membrides Espinosa, MongoDB