1. Auditoría de bases de datos
Temas del programa: 3.1
Auditoría: qué es y qué no es
Section titled “Auditoría: qué es y qué no es”| Control de acceso | Auditoría | |
|---|---|---|
| Pregunta | ¿Quién puede hacerlo? | ¿Quién lo hizo, cuándo, desde dónde? |
| Momento | Antes de la operación | Durante y después |
| Resultado | Permite o niega | Registra, sea o no autorizado |
| Ejemplo | GRANT UPDATE ON clientes TO app_ventas | Línea de bitácora con el UPDATE |
Auditar es registrar de forma sistemática lo que ocurre en una base de datos para que pueda usarse después como evidencia.
Tres ideas que no debes olvidar
Section titled “Tres ideas que no debes olvidar”La auditoría registra. Una operación permitida pero indebida solo se descubre con el registro.
Lo que no se registró en su momento no puede reconstruirse desde la bitácora.
La bitácora es evidencia solo si se conserva y alguien puede interpretarla.
Eventos auditables
Section titled “Eventos auditables”| Tipo | Ejemplo | ¿Por qué se audita? |
|---|---|---|
| Acceso exitoso | Inicio de sesión de app_ventas | Quién estuvo dentro y cuándo |
| Acceso fallido | Contraseña incorrecta | Intentos no autorizados, fuerza bruta |
| Privilegios | GRANT, REVOKE, CREATE ROLE | Quien obtiene privilegios puede hacer lo demás |
| Estructura | ALTER TABLE, DROP, migraciones | Puede romper la aplicación o borrar datos |
| Datos sensibles | Modificar o leer un RFC | Responsabilidad sobre datos personales |
| Error de autorización | permission denied | Alguien intentó lo que no le correspondía |
| Configuración | Apagar el registro | Quien apaga la auditoría actúa sin rastro |
Ejemplo: un evento de cada tipo en una bitácora real
Section titled “Ejemplo: un evento de cada tipo en una bitácora real”| Tipo | Línea registrada por PostgreSQL 16 (resumida) |
|---|---|
| Acceso exitoso | user=app_ventas ... LOG: connection authorized: user=app_ventas database=comercial application_name=app-ventas-web |
| Acceso fallido | user=app_ventas ... FATAL: password authentication failed for user "app_ventas" |
| Privilegios | user=postgres ... LOG: statement: GRANT UPDATE ON clientes TO app_ventas |
| Estructura | user=postgres ... LOG: statement: ALTER TABLE clientes ADD COLUMN segmento VARCHAR(20) |
| Datos | user=app_ventas ... LOG: statement: UPDATE clientes SET telefono = '6679990000' WHERE id = 3 |
| Error de autorización | user=soporte_ana ... ERROR: permission denied for table clientes |
| Configuración | LOG: parameter "log_statement" changed to "mod" |
Durante la unidad aprenderás a configurar el servidor para que produzca cada una de estas líneas y a leerlas campo por campo.
No todo merece registrarse
Section titled “No todo merece registrarse”Un usuario consulta su propio perfil
Un usuario consulta miles de registros en pocos minutos
Se reinicia el servicio: explica huecos en la bitácora
Registrar todo produce volumen, costo de almacenamiento y un nuevo riesgo: la bitácora se convierte en otro depósito de datos sensibles.
Actividad 2: Clasificación de eventos auditables
Section titled “Actividad 2: Clasificación de eventos auditables”Clasifica cada evento como auditable o no auditable prioritario y justifica:
- Un usuario consulta su propio perfil.
- Un administrador otorga permisos de escritura a otro usuario.
- Se elimina una columna de una tabla.
- Un usuario lee un registro de nómina que no le corresponde.
- Se reinicia el servicio.
- Un usuario consulta muchos registros en poco tiempo.
Relaciona cada justificación con seguridad, cumplimiento o responsabilidad, no con “porque sí”.
Qué sigue
Section titled “Qué sigue”Continúa con 2. Bitácoras en PostgreSQL.

