Skip to content

1. Auditoría de bases de datos

Temas del programa: 3.1

Control de accesoAuditoría
Pregunta¿Quién puede hacerlo?¿Quién lo hizo, cuándo, desde dónde?
MomentoAntes de la operaciónDurante y después
ResultadoPermite o niegaRegistra, sea o no autorizado
EjemploGRANT UPDATE ON clientes TO app_ventasLí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.

No impide nada

La auditoría registra. Una operación permitida pero indebida solo se descubre con el registro.

No se configura después

Lo que no se registró en su momento no puede reconstruirse desde la bitácora.

Registrar no basta

La bitácora es evidencia solo si se conserva y alguien puede interpretarla.

TipoEjemplo¿Por qué se audita?
Acceso exitosoInicio de sesión de app_ventasQuién estuvo dentro y cuándo
Acceso fallidoContraseña incorrectaIntentos no autorizados, fuerza bruta
PrivilegiosGRANT, REVOKE, CREATE ROLEQuien obtiene privilegios puede hacer lo demás
EstructuraALTER TABLE, DROP, migracionesPuede romper la aplicación o borrar datos
Datos sensiblesModificar o leer un RFCResponsabilidad sobre datos personales
Error de autorizaciónpermission deniedAlguien intentó lo que no le correspondía
ConfiguraciónApagar el registroQuien 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”
TipoLínea registrada por PostgreSQL 16 (resumida)
Acceso exitosouser=app_ventas ... LOG: connection authorized: user=app_ventas database=comercial application_name=app-ventas-web
Acceso fallidouser=app_ventas ... FATAL: password authentication failed for user "app_ventas"
Privilegiosuser=postgres ... LOG: statement: GRANT UPDATE ON clientes TO app_ventas
Estructurauser=postgres ... LOG: statement: ALTER TABLE clientes ADD COLUMN segmento VARCHAR(20)
Datosuser=app_ventas ... LOG: statement: UPDATE clientes SET telefono = '6679990000' WHERE id = 3
Error de autorizaciónuser=soporte_ana ... ERROR: permission denied for table clientes
ConfiguraciónLOG: 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.

Normalmente no prioritario

Un usuario consulta su propio perfil

Depende del volumen

Un usuario consulta miles de registros en pocos minutos

Relevante por contexto

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:

  1. Un usuario consulta su propio perfil.
  2. Un administrador otorga permisos de escritura a otro usuario.
  3. Se elimina una columna de una tabla.
  4. Un usuario lee un registro de nómina que no le corresponde.
  5. Se reinicia el servicio.
  6. Un usuario consulta muchos registros en poco tiempo.

Relaciona cada justificación con seguridad, cumplimiento o responsabilidad, no con “porque sí”.

Continúa con 2. Bitácoras en PostgreSQL.