Seguridad de documentos
Introducción
- Importancia de la seguridad de documentos en backend: Garantizar la protección de datos sensibles.
- Objetivos de la investigación: Analizar métodos para asegurar la integridad, confidencialidad y disponibilidad de documentos.
- Contexto específico: Uso de Digital Ocean Spaces como servicio de almacenamiento y gestión de URLs en una base de datos.
Cumplimiento Normativo
¿Qué es el cumplimiento normativo?
Es el proceso de asegurar que tu organización y los servicios que utilizas cumplen con leyes, regulaciones y estándares aplicables. Esto incluye:
- Implementar medidas técnicas (encriptación, controles de acceso).
- Documentar procesos (políticas de privacidad, procedimientos de respuesta a incidentes).
- Realizar auditorías para verificar el cumplimiento.
Normativas aplicables
- Datos médicos (PHI): HIPAA (EE.UU.).
- Datos financieros: PCI DSS, GLBA, SOX, GDPR, PSD2.
- Datos personales: GDPR (UE), CCPA/CPRA (California), LGPD (Brasil).
Datos Médicos
HIPAA (Ley de Portabilidad y Responsabilidad de Seguros Médicos)
- Qué es: Normativa estadounidense para proteger información médica sensible (PHI).
- Requisitos clave:
- Privacy Rule: Limita el uso y divulgación de PHI.
- Security Rule: Medidas técnicas (encriptación) y administrativas (auditorías).
- Acuerdo de Asociado Comercial (BAA): Proveedores que manejen PHI deben firmar este acuerdo.
- Cumplimiento en Digital Ocean:
- Ofrece un BAA para clientes que almacenan PHI.
- Cumple con controles de seguridad física y lógica.
- Permite encriptación de datos y registros de acceso.
Enlace al acuerdo HIPAA de Digital Ocean
Datos Financieros
PCI DSS (Estándar de Seguridad de Datos para la Industria de Tarjetas de Pago)
- Qué es: Normativa global que protege información de tarjetas de crédito y débito.
- Requisitos clave:
- Encriptación de datos en tránsito y en reposo.
- Control de acceso restringido.
- Monitoreo y pruebas de seguridad.
- Cumplimiento en Digital Ocean:
- Encriptación AES-256 para datos en reposo.
- Uso de HTTPS para datos en tránsito.
- Herramientas de IAM para gestionar permisos.
GLBA (Ley Gramm-Leach-Bliley)
- Qué es: Normativa estadounidense que protege información financiera de consumidores.
- Requisitos clave:
- Privacidad y protección de datos.
- Prevención de fraudes.
- Cumplimiento en Digital Ocean:
- Encriptación de datos financieros.
- Uso de IAM para control de acceso.
SOX (Ley Sarbanes-Oxley)
- Qué es: Normativa estadounidense que regula la precisión de informes financieros.
- Requisitos clave:
- Controles internos y auditorías.
- Retención de registros financieros.
- Cumplimiento en Digital Ocean:
- Herramientas de registro y monitoreo.
- Controles de acceso estrictos.
CCPA/CPRA (Ley de Privacidad del Consumidor de California)
- Qué es: Normativa de California que protege datos personales.
- Requisitos clave:
- Derechos del consumidor (acceso, eliminación).
- Opt-out de venta de datos.
- Cumplimiento en Digital Ocean:
- Encriptación de datos personales.
- Herramientas de IAM.
PSD2 (Directiva de Servicios de Pago, UE)
- Qué es: Normativa europea que regula servicios de pago.
- Requisitos clave:
- Autenticación fuerte (2FA).
- Acceso a datos con consentimiento.
- Cumplimiento en Digital Ocean:
- Encriptación de datos de pago.
- Implementación de 2FA.
Datos Personales
GDPR (Reglamento General de Protección de Datos)
- Qué es: Normativa europea que protege datos personales.
- Requisitos clave:
- Consentimiento explícito.
- Derechos del titular (acceso, rectificación, eliminación).
- Notificación de brechas en 72 horas.
- Cumplimiento en Digital Ocean:
- Encriptación AES-256.
- Acuerdo de Procesamiento de Datos (DPA).
Enlace al acuerdo DPA de Digital Ocean
LGPD (Lei Geral de Proteção de Dados, Brasil)
- Qué es: Normativa brasileña que protege datos personales.
- Requisitos clave:
- Consentimiento y derechos del titular.
- Protección de datos.
- Cumplimiento en Digital Ocean:
- Encriptación de datos personales.
- Uso de IAM.
Técnicas de Seguridad
Encriptación en Reposo (SSE)
- Qué es: Técnica de seguridad donde los archivos se encriptan automáticamente al almacenarlos.
- Funcionamiento: Usa el estándar AES-256.
- Beneficios: Protege contra robos físicos o accesos no autorizados.
Estrategia de Seguridad Integral
Encriptación en Tránsito
- Configuración TLS Avanzada (NGINX):
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=63072000" always; - Política CORS Estricta:
[
{
"AllowedHeaders": ["Content-Type"],
"AllowedMethods": ["GET", "POST"],
"AllowedOrigins": ["https://dominio-principal.com"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]
Control de Acceso y Autorización
- Políticas de Bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::user-id"},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::bucket-name/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "192.0.2.0/24"},
"DateLessThan": {"aws:CurrentTime": "2024-12-31T23:59:59Z"}
}
}
]
}
Auditoría y Cumplimiento
- Registros de Actividad:
- Accesos a buckets.
- Operaciones críticas (delete).
- Intentos fallidos.
- Escaneos Proactivos:
- Herramientas: Nessus, Clair, OWASP ZAP.
- Frecuencia: Semanal, trimestral, continua.
Recuperación ante Desastres
- Estrategia 3-2-1:
- 3 copias de datos.
- 2 medios diferentes.
- 1 copia off-site.
Almacenamiento Seguro en DigitalOcean Spaces
1. Configuración del Bucket Privado
const AWS = require('aws-sdk');
const spacesEndpoint = new AWS.Endpoint('nyc3.digitaloceanspaces.com');
const s3 = new AWS.S3({
endpoint: spacesEndpoint,
accessKeyId: process.env.DO_SPACES_KEY,
secretAccessKey: process.env.DO_SPACES_SECRET
});
const createPrivateBucket = async (bucketName) => {
const params = {
Bucket: bucketName,
ACL: 'private',
CreateBucketConfiguration: {
LocationConstraint: 'nyc3'
}
};
await s3.createBucket(params).promise();
};
2. Generación de URLs Firmadas
app.get('/document/:id', auth, async (req, res) => {
const { id } = req.params;
const doc = await db.collection('documents').findOne({
_id: new ObjectId(id),
userId: req.user.id,
status: 'active'
});
if (!doc) return res.status(404).send('Documento no encontrado');
const params = {
Bucket: 'mi-bucket-seguro',
Key: doc.fileKey,
Expires: 900 // 15 minutos
};
const url = s3.getSignedUrl('getObject', params);
res.json({ url });
});
3. Protección contra Hotlinking
const antiHotlinkingPolicy = {
Version: "2012-10-17",
Statement: [
{
Effect: "Deny",
Principal: "*",
Action: "s3:GetObject",
Resource: "arn:aws:s3:::mi-bucket-seguro/*",
Condition: {
StringNotLike: {
"aws:Referer": [
"https://midominio.com/*",
"https://*.midominio.com/*"
]
}
}
}
]
};
4. Flujo de Seguridad Completo
- Subida de archivo:
- Cliente: Encripta archivo con Web Crypto API.
- Servidor: Almacena metadata en MongoDB.
- Descarga segura:
- Validación JWT → Consulta MongoDB → Generación URL firmada.
5. Hardening Adicional
app.use(helmet({
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
imgSrc: ["'self'", "data:", "https://*.digitaloceanspaces.com"]
}
}
}));
6. Monitorización
const CloudWatch = new AWS.CloudWatch();
const logSuspiciousActivity = (userId, action) => {
CloudWatch.putMetricData({
MetricData: [
{
MetricName: 'SuspiciousAccessAttempts',
Dimensions: [{ Name: 'UserId', Value: userId }],
Value: 1,
Unit: 'Count'
}
],
Namespace: 'Security'
}).promise();
};
Este marco cumple con:
-
GDPR (Art. 32)
- Qué es: Regulación de la UE para proteger datos personales.
-
ISO 27001:2022
- Qué es: Estándar internacional para la gestión de la seguridad de la información.
-
NIST SP 800-185
- Qué es: Guía técnica del NIST sobre criptografía segura.
-
PCI DSS v4.0
- Qué es: Estándar de seguridad para proteger datos de tarjetas de pago.