Database Security: Amenazas, Mejores Prácticas, Encryption
Database security es la práctica de proteger datos at rest y en tránsito — encryption, access control, auditing, backups.
¿Qué es database security?
Database security es la disciplina de proteger bases de datos — y los datos que almacenan — de acceso no autorizado, modificación, eliminación y exfiltración. Combina controles técnicos (encryption, access control, aislamiento red), prácticas operativas (backups, audit logs, patching) y política.
Los breaches de bases de datos están entre los incidentes de seguridad más dañinos: el breach Equifax 2017 (147M registros), First American 2019 (885M registros) y ataques ransomware actuales se originaron en la capa datos.
Amenazas comunes database security
| Amenaza | Descripción | Ejemplo |
|---|---|---|
| SQL Injection | Atacante inyecta SQL vía input usuario | ' OR 1=1 -- |
| Privilege Escalation | Cuenta low-privilege gana derechos admin | Explotar bug DBMS unpatched |
| Credential Theft | Credenciales DB leaked o brute-forced | AWS keys en repo git público |
| Insider Threat | Usuario autorizado abusa acceso | Engineer dumpea tabla customer |
| Backup Theft | Backup sin encriptar leaked | S3 bucket misconfig |
| Ransomware | DB encriptada por atacante | MongoDB expuesta a internet |
| Data Exfiltration | Export bulk de datos sensibles | Insider exporta emails usuario |
| DoS | Atacante sobrecarga DB | Slow queries floodean pool |
Los 8 pilares de database security
1. Autenticación
Credenciales fuertes para cada usuario DB.
2. Autorización (least privilege)
Cada usuario DB solo permisos para lo que realmente hace.
3. Encryption at rest
Encriptación disk-level (AWS RDS, TDE).
4. Encryption in transit
TLS para todas las conexiones DB.
5. Aislamiento red
DB nunca directamente internet-accessible.
6. Audit logging
Loguear todas queries sensibles.
7. Patching
Aplicar patches DB engine + OS prontamente.
8. Backups + DR
Backups encriptados regulares. Test restores trimestralmente.
SQL Injection: la amenaza #1
# MAL — vulnerable
query = f"SELECT * FROM users WHERE email = '{user_input}'"
cursor.execute(query)
# BIEN — parameterized
query = "SELECT * FROM users WHERE email = %s"
cursor.execute(query, (user_input,))Manejo datos sensibles
| Pattern | Caso uso | Notas |
|---|---|---|
| Hashing | Contraseñas | bcrypt/argon2 |
| Encryption | Campos PII | App-level o column-level |
| Tokenization | Números tarjeta | Reducción scope PCI |
| Pseudonymization | Analytics | IDs por surrogates |
| Masking | Entornos test/dev | ***-***-1234 |
| Row-level security | SaaS multi-tenant | DB enforce aislamiento tenant |
Mejores prácticas database security
- Parametrizar todas las queries.
- Usuarios DB least-privilege.
- Encrypt at rest + in transit.
- No DB en internet público.
- Usar IAM auth.
- Rotar credenciales.
- Audit + alert.
- Aplicar patches mensualmente.
- Backup encriptado.
- Separar prod de dev.
- Limitar blast radius.
- Monitor failed logins.
Frameworks compliance afectando bases datos
- GDPR
- HIPAA
- PCI-DSS
- SOC 2
- ISO 27001
- CCPA/CPRA
FAQ: database security
¿Cómo prevengo SQL injection?
Usar queries parametrizadas. Usar ORMs.
¿Encriptar campos DB en capa app o DB?
Ambos tienen mérito. PII frecuentemente ambos.
¿Diferencia entre encryption at rest e in transit?
At rest = en disco. In transit = en red. Ambos requeridos compliance.
¿Con qué frecuencia rotar credenciales DB?
Long-lived: cada 90 días max. Mejor: tokens IAM short-lived.
¿Puedo exponer mi base datos al internet?
Casi nunca. Colocar en subnet privada.
¿Qué es row-level security?
Feature DB que filtra rows basadas en contexto usuario.
¿Cómo detecto un breach base datos?
Audit logs + anomaly detection.
Testea seguridad API DB-backed con LoadFocus
LoadFocus corre scripts JMeter y k6 que simulan flows auth, patterns inyección y carga concurrente contra APIs DB-backed desde 25+ regiones. Regístrate en loadfocus.com/signup.
Herramientas LoadFocus relacionadas
Lleva este concepto a la práctica con LoadFocus — la misma plataforma que potencia todo lo que acabas de leer.