pgaudit y Registro de Cumplimiento
Los programas de cumplimiento necesitan pruebas: quién se conectó, qué tablas se leyeron o escribieron, y qué DDL se ejecutó. El registro nativo de PostgreSQL más la extensión pgaudit producen líneas de auditoría estructuradas adecuadas para la retención en SIEM. Esta lista de verificación cubre la habilitación, el alcance y el control de volumen para PostgreSQL 18.4.
Cómo Usar Esta Lista de Verificación
- Ejecutar antes de la ventana de auditoría SOC2/HIPAA/PCI o después de un incidente de acceso a datos
- Comenzar con el alcance
pgaudit.loga nivel de rol, expandir solo donde las regulaciones lo requieran - Emparejar los registros de auditoría con el envío centralizado (ver csvlog y Registros JSON)
Extensión y Registro Base
- pgaudit instalado y habilitado.
CREATE EXTENSION pgaudit;en las bases de datos bajo el alcance de auditoría. -
shared_preload_librariesincluye pgaudit en autoalojado; reiniciar una vez después del cambio. -
log_line_prefixincluye usuario, db, app, IP del cliente, ID de sesión. Analizable en SIEM. -
log_connectionsylog_disconnectionsactivados. Auditoría de sesión base sin detalle de fila de pgaudit. -
log_statement = ddlmínimo. Captura cambios de esquema incluso si pgaudit está mal configurado.
Alcance de pgaudit
-
pgaudit.logestablecido por rol, no globalmenteall. Reduce el ruido y el costo. - Roles de aplicación:
writeoddlsegún sea necesario. OLTP a menudo necesitawritesolo en tablas PII a través de auditoría de objetos. - Roles de administrador/migrador:
ddl, role. Rastrea cambios de privilegios y esquemas. - Auditoría a nivel de objeto para tablas PII cuando sea necesario. Políticas específicas de catálogo o
pgaudit.log_relation. - Auditoría de lectura (
readclass) solo en tablas reguladas. El registro de lectura completo es extremadamente verboso.
Retención e Integridad
- Los registros se envían a un bucket WORM o inmutable. S3 Object Lock, Azure immutable blob, o SIEM con controles de manipulación.
- La retención cumple con la política (a menudo 1-7 años). Las retenciones legales anulan el TTL predeterminado.
- Sincronización de reloj (NTP) en los hosts de la base de datos. Se correlaciona con los registros de la aplicación y el IdP.
- Flujo de registro de auditoría separado de los registros de depuración. Diferente índice/nivel de retención en la pila de observabilidad.
- Acceso a la tienda de auditoría restringido. Los analistas consultan SIEM, no superusuario de DB crudo.
Controles Operacionales
- Se contabilizan las acciones de superusuario. Usuarios de "break-glass" en roles nombrados, no
postgrescompartido. - Monitoreo de inicio de sesión fallido. Errores de conexión agregados en SIEM.
- Perforación trimestral de registros de auditoría. Demostrar que puede responder "¿quién accedió a customer_email en marzo?".
- Alerta de volumen en MB/min de registro. Detección de
log_statement=alldescontrolado. - pgaudit deshabilitado en pruebas de carga. O limitado solo a roles no productivos.
Consultas de Verificación
-- Confirmar extensión
SELECT extname, extversion FROM pg_extension WHERE extname = 'pgaudit';
-- Configuración de auditoría de roles
SELECT rolname, rolconfig
FROM pg_roles
WHERE rolconfig IS NOT NULL
AND EXISTS (
SELECT 1 FROM unnest(rolconfig) c WHERE c LIKE 'pgaudit%'
);Preguntas Frecuentes
¿pgaudit vs triggers para historial de filas?
pgaudit registra el acceso y los cambios a nivel de declaración en los registros del servidor. Los triggers almacenan imágenes de filas antes/después en tablas. Úselos ambos cuando las regulaciones requieran texto de consulta y prueba a nivel de fila.
¿Está pgaudit en RDS/Aurora?
A menudo disponible como extensión permitida. Habilitar a través del grupo de parámetros y CREATE EXTENSION.
¿Qué tan verboso es el registro de lectura?
Mucho. Un solo escaneo de BI puede emitir miles de líneas. Limite read a tablas específicas a través de auditoría de objetos.
¿pgaudit registra COPY?
Sí, cuando COPY afecta a las relaciones auditadas. Las cargas masivas necesitan aprobación explícita en el manual de ejecución.
¿Pueden las aplicaciones deshabilitar la auditoría?
El superusuario puede. Evite que las aplicaciones sean superusuario; monitoree ALTER ROLE y cambios de configuración.
¿Eliminación GDPR vs retención de auditoría?
Los registros de auditoría pueden retener identificadores de usuario bajo base legal. Documentar en DPIA; no eliminar evidencia de auditoría prematuramente.
¿Qué pasa con la replicación lógica?
El DDL del publicador/suscriptor debe estar en el alcance de auditoría del migrador. Los cambios de fila se replican, la auditoría permanece en el escritor principal.
¿Impacto en el rendimiento?
Moderado a QPS alto con registro all amplio. Ajuste el alcance; use muestreo solo si los reguladores lo aceptan (raro).
¿Mínimo para SOC2?
Registros de sesión, registros DDL, acciones de administrador, retención centralizada, evidencia de revisión trimestral.
¿Cuánto tiempo habilitar antes de la auditoría?
30 días de registros base antes de la semana de auditoría demuestran operación continua, no un cambio de último minuto.
Relacionado
- Conceptos Básicos de Registro -
log_line_prefixy volumen - Triggers de Auditoría vs pgaudit - patrones a nivel de fila
- Consultas Forenses - investigar acceso
- Conceptos Básicos de Seguridad - separación de roles
- Mejores Prácticas de Seguridad - endurecimiento más amplio
Versiones de Stack: Esta página fue escrita para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, y PostGIS 3.5+.