DataSunrise está patrocinando AWS re:Invent 2024 en Las Vegas, por favor visítenos en el stand #2158 de DataSunrise

Requisitos de Monitorización de Actividad en Bases de Datos PostgreSQL

Introducción

PostgreSQL procesa más de 10,000 transacciones por segundo en ambientes de alta carga. Cada transacción requiere un monitoreo cuidadoso. Un estudio reciente muestra que el 60% de las brechas de bases de datos ocurren debido a un monitoreo insuficiente (una estadística de Verizon DBIR, 2023). Exploremos cómo implementar un monitoreo integral de actividad en bases de datos PostgreSQL y auditoría de datos.

Entendiendo el Monitoreo de Acceso y Autenticación

PostgreSQL ofrece herramientas robustas para rastrear el acceso de usuarios. Aquí se muestra cómo implementar el monitoreo esencial de autenticación:

-- Monitorear sesiones activas
SELECT pid, usename, application_name, client_addr, 
       backend_start, state, query
FROM pg_stat_activity;

Pg_stat_activity contiene todas las sesiones activas e inactivas en este momento:

Monitorear la duración de las sesiones de usuario de la siguiente manera:

SELECT usename, count(*), 
       avg(extract(epoch from now() - backend_start))::integer 
FROM pg_stat_activity 
GROUP BY usename;

Rastreo de Modificaciones de Datos

Monitorear los cambios de datos ayuda a detectar modificaciones no autorizadas. Implemente estos mecanismos de rastreo:

Crear una función de disparador de auditoría

CREATE OR REPLACE FUNCTION audit_trigger_func() 
RETURNS trigger AS $$
BEGIN
    INSERT INTO audit_log(
        table_name, action, user_name, 
        changed_fields, row_data
    )
    VALUES (
        TG_TABLE_NAME, TG_OP, current_user,
        row_to_json(NEW), row_to_json(OLD)
    );
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

Aplicar el disparador a tablas sensibles

CREATE TRIGGER audit_trigger
AFTER INSERT OR UPDATE OR DELETE ON sensitive_table
FOR EACH ROW EXECUTE FUNCTION audit_trigger_func();

Antes de implementar el disparador de auditoría, reemplace ‘sensitive_table’ con el nombre real de la tabla que desea monitorear. Aunque los disparadores proporcionan un enfoque directo para la auditoría, pueden afectar el rendimiento en sistemas de alta carga y pueden requerir mantenimiento adicional. Considere usar soluciones de registro de auditoría dedicadas como pgAudit para entornos de producción.

Monitoreo de la Configuración de Seguridad

Rastree cambios relacionados con la seguridad con estas consultas:

1. Monitorear cambios de rol

SELECT rolname, rolsuper, rolcreaterole, 
       rolcreatedb, rolcanlogin
FROM pg_roles;

Esto puede devolver la matriz de acceso como esta para nuestro PostgreSQL local:

2. Rastrear cambios de permisos.

SELECT grantor, grantee, table_schema, 
       table_name, privilege_type
FROM information_schema.role_table_grants;

3. Verificar las configuraciones de seguridad actuales.

SHOW all;

Operaciones de Respaldo y Recuperación

Implemente el monitoreo de respaldos con estos enfoques:

-- Rastree el estado del WAL (Write-Ahead Log)
SELECT * FROM pg_stat_wal;

-- Monitoree el historial de respaldos
SELECT start_time, end_time, 
       success, database_name
FROM pg_backup_history;

-- Verifique el estado de la replicación
SELECT * FROM pg_stat_replication;

Monitoreo de la Actividad de Consultas

Rastree el rendimiento y patrones de las consultas:

-- Habilitar el seguimiento de consultas
CREATE EXTENSION pg_stat_statements;

-- Monitorear consultas de larga duración
SELECT pid, age(clock_timestamp(), query_start), 
       usename, query 
FROM pg_stat_activity 
WHERE state != 'idle' 
AND query_start < now() - interval '5 minutes';

-- Analizar patrones de consultas
SELECT query, calls, total_time, rows, 
       mean_time
FROM pg_stat_statements 
ORDER BY total_time DESC;

Monitoreo de Eventos del Sistema

Rastrear eventos críticos del sistema:

-- Monitorear estadísticas de la base de datos (backend, resumen de transacciones)
SELECT datname, numbackends, xact_commit, 
       xact_rollback, blks_read, blks_hit
FROM pg_stat_database;

Esto resulta en la siguiente salida:

Puede encontrar algunas transacciones revertidas (118 en este caso).

-- Verificar estadísticas de las tablas
SELECT schemaname, relname, seq_scan, 
       seq_tup_read, idx_scan
FROM pg_stat_user_tables;

Esta consulta le ayuda a entender cuán eficientemente se están accediendo a sus tablas. Al observar la frecuencia de escaneos secuenciales frente a escaneos de índices, puede identificar problemas de rendimiento, como tablas que están siendo escaneadas sin usar los índices disponibles, lo que puede señalar la necesidad de un mejor indexado u optimización de consultas.

-- Monitorear conflictos de bloqueos
SELECT blocked_locks.pid AS blocked_pid,
       blocked_activity.usename AS blocked_user,
       blocking_locks.pid AS blocking_pid,
       blocking_activity.usename AS blocking_user
FROM pg_locks blocked_locks
JOIN pg_locks blocking_locks
  ON blocked_locks.locktype = blocking_locks.locktype
  AND blocked_locks.locktype = 'transactionid'
  AND blocked_locks.transactionid = blocking_locks.transactionid
JOIN pg_stat_activity blocked_activity 
  ON blocked_locks.pid = blocked_activity.pid
JOIN pg_stat_activity blocking_activity 
  ON blocking_locks.pid = blocking_activity.pid
WHERE blocked_locks.granted = FALSE
  AND blocking_locks.granted = TRUE;

DataSunrise para la Monitorización de Actividad en Bases de Datos PostgreSQL

DataSunrise eleva la monitorización de actividad en bases de datos proporcionando características de seguridad robustas de manera consistente en docenas de bases de datos compatibles. Ofrece cinco modos de implementación flexibles, que le permiten equilibrar la latencia de la base de datos, conjuntos de características y el impacto en la infraestructura existente.

El panel de control ofrece una vista completa de la información clave sobre las bases de datos bajo protección y monitoreo:

Todas las bases de datos protegidas listadas en la página de Bases de Datos con sus parámetros de red:

Finalmente, todos los eventos monitorizados se presentan en un formato consistente para todas las bases de datos, convenientemente mostrados en un solo lugar:

Más allá de la monitorización, DataSunrise ofrece seguridad avanzada de datos, descubrimiento de datos sensibles, generación automática de informes de cumplimiento y enmascaramiento de datos. Nuestra interfaz web fácil de usar incluye un asistente basado en IA, que proporciona acceso rápido a guías y materiales de referencia para un uso fácil del producto.

Resumen y Conclusiones

El monitoreo eficaz de PostgreSQL requiere un enfoque integral que abarque todos los aspectos de las operaciones de la base de datos. El monitoreo regular ayuda a mantener la seguridad, el rendimiento y la fiabilidad de sus sistemas de bases de datos.

Solución de Seguridad para PostgreSQL de DataSunrise

DataSunrise proporciona herramientas especializadas para la monitorización y seguridad de PostgreSQL. Nuestra solución ofrece monitoreo en tiempo real de la actividad, generación de informes de cumplimiento y características de seguridad avanzadas diseñadas específicamente para bases de datos de PostgreSQL.

Experimente el poder de las herramientas de seguridad de PostgreSQL de DataSunrise. Visite nuestro sitio web para programar una demostración en línea y descubra cómo podemos mejorar su infraestructura de seguridad de bases de datos.

Siguiente

Auditoría de Datos para Snowflake

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Información general:
[email protected]
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
[email protected]