Seguridad de los datos
PrivacyCloud se ha construido con defensa en profundidad en cada capa. Como plataforma de gestión de privacidad que maneja resultados de evaluaciones, registros de incidentes, contratos con proveedores y solicitudes de interesados, la seguridad es un requisito fundamental, no algo secundario.
Identidad y acceso
Autenticación, autorización y gestión de sesiones
- Servicio en la nube: inicio de sesión con Google OAuth o con un enlace de un solo uso enviado por correo electrónico. Las instalaciones propias usan por defecto un inicio de sesión local sin contraseña, pensado para la red interna de la organización
- Sesiones JWT sin estado: no hay estado de sesión en el servidor que pueda comprometerse
- Los tokens OAuth nunca se almacenan en la base de datos
- Un nuevo método de inicio de sesión nunca se vincula automáticamente a una cuenta existente
- En el servicio en la nube, un solo inicio de sesión para el programa de protección de datos y el de gobernanza de la IA mediante cookies de sesión seguras, HTTP-only y SameSite=Lax, limitadas al dominio del servicio
No se usan ni se guardan contraseñas. En el servicio en la nube inicias sesión con Google o con un enlace de un solo uso que recibes en tu correo electrónico.
- Multitenencia: cada solicitud sobre los registros de tu organización comprueba que eres miembro y limita sus consultas a tu organización
- Jerarquía de roles en cinco niveles: Propietario, Administrador, Responsable de privacidad, Miembro, Lector
- Control por roles en cada cambio de los registros de la organización (salvo los ajustes personales, como las vistas guardadas)
- Eliminar registros (sistemas, proveedores, contratos, flujos de datos, unidades de negocio, miembros, solicitudes de derechos) está reservado a administradores y propietarios
- Los datos de la aplicación se leen y escriben mediante consultas ORM parametrizadas
Los datos de la aplicación se consultan mediante consultas ORM parametrizadas, que mantienen las entradas del usuario fuera del texto SQL. Las pocas sentencias directas (dos comprobaciones de estado y un contador de límite de peticiones) también son plantillas parametrizadas.
Seguridad de la aplicación
Tratamiento de entradas, protección de API y prevención de abusos
- Validación de esquema en cada endpoint de la aplicación (tRPC); las demás rutas comprueban sus entradas en el código
- Se eliminan las etiquetas HTML de las solicitudes de derechos enviadas desde el formulario público
- Las consultas parametrizadas a la base de datos protegen contra la inyección SQL
- Los detalles de los errores de validación y las trazas de pila no se muestran en producción
- Verificación de claves API con tiempo constante en los endpoints administrativos
- Límites de tamaño y de filas en las importaciones de archivos, y límites de elementos en varias operaciones por lotes
- El portal público de ejercicio de derechos valida la configuración activa antes de aceptar solicitudes
Las comparaciones de claves API utilizan algoritmos de tiempo constante para prevenir ataques de temporización en los endpoints administrativos.
- Las solicitudes de inicio de sesión y de enlaces de acceso tienen límite de peticiones por dirección de cliente (contado por instancia del servidor)
- Las rutas de pago y facturación tienen límite de peticiones
- Las solicitudes de derechos enviadas desde el formulario público tienen límite de peticiones para prevenir spam
- Respuestas 429, con cabeceras Retry-After en los límites por ruta
Protección de datos
Seguridad del transporte, registro de auditoría, minimización y pagos
- HSTS con duración de 2 años, subdominios y precarga
- Política de seguridad de contenidos que bloquea scripts de otros orígenes (salvo el del proveedor de pagos), complementos y la inserción en marcos
- Protección contra clickjacking mediante X-Frame-Options: DENY
- Prevención de la detección de tipos MIME y política de referrer strict-origin-when-cross-origin
- Cámara, micrófono y geolocalización deshabilitados por política
La política que se aplica todavía permite scripts en línea, que el framework necesita hoy. Una política más estricta, con nonces por solicitud, funciona en modo de solo informe para detectar infracciones antes de aplicarla.
- Registro de auditoría de muchos cambios en registros clave (actividades de tratamiento, evaluaciones, solicitudes de derechos, incidentes y proveedores)
- Registro de auditoría de la organización para propietarios, administradores y responsables de privacidad, con exportación en CSV; los administradores de la plataforma también pueden verlo
- En la mayoría de los casos, los errores del servidor se registran como un mensaje sin trazas de pila
- Muchas respuestas de la API seleccionan solo los campos que usa la pantalla
- Las claves de licencia se muestran enmascaradas en la consola de administración
- Los dominios de correo electrónico públicos no dan acceso automático a una organización
- Verificamos la firma de cada evento de pago que nos envía Stripe (HMAC-SHA256) y rechazamos los que no la superan
- Proceso de pago del lado del servidor que impide la manipulación de precios del lado del cliente
- El acceso a los módulos de pago se suspende automáticamente si falla un pago
Infraestructura
Alojamiento, cifrado y aislamiento de entornos
- Alojado en Vercel con TLS automático y red perimetral global
- Base de datos PostgreSQL con conexiones cifradas
- Los secretos del entorno se excluyen de los paquetes del cliente
- Los endpoints exclusivos de desarrollo están protegidos por comprobaciones del entorno de ejecución
- En nuestra nube, la base de datos de cada producto se guarda en Fráncfort (UE) y se cifra en reposo con AES-256. Mantenemos un historial continuo de cambios durante 7 días, para poder recuperar la base de datos tal como estaba en cualquier momento de esa semana, y una copia diaria de toda la base de datos que conservamos 30 días, en la misma región. Solo puede acceder a estas copias nuestro personal designado, con verificación en dos pasos.
- Si algo falla, procuramos restablecer el servicio en un día hábil. Si nos lo pides, recuperamos los registros de tu organización tal como estaban en un momento anterior dentro de esos plazos, sin afectar a otros clientes, sin coste y en dos días hábiles. Probamos una recuperación cada trimestre y anotamos la fecha.
- Los datos suprimidos salen de todas las copias en un máximo de 30 días. Puedes exportarlo todo cuando quieras.
- En tu propio equipo, PrivacyCloud incluye un script que hace copias cifradas de la base de datos; tú decides cuándo se hacen y guardas las copias.
Divulgación responsable
Si descubres una vulnerabilidad de seguridad, comunícala de forma responsable. No abras una incidencia pública. Ponte en contacto directamente con nosotros a través de la dirección de correo electrónico indicada en el repositorio.