Registros de Auditoría de AWS RDS PostgreSQL en DataSunrise
Hoy en día casi no sorprende ver otro titular relacionado con violaciones de datos o privacidad de la información. Esto te afecta personalmente como cliente de esas empresas: deseas que alguien se encargue de cuidar tus datos. También te afecta profesionalmente; como persona que trabaja con datos, tú eres ese “alguien” para tus clientes. Un buen registro de auditoría es una herramienta importante en el equipo de un profesional de datos consciente de la seguridad. En este artículo, discutimos los Registros de Auditoría de RDS PostgreSQL y cómo configurarlos con DataSunrise.
La idea general de la auditoría de bases de datos es conocer quién y cuándo accedió a las tablas de tu base de datos, y qué modificaciones se realizaron en ellas. Teóricamente, todas estas demandas pueden cumplirse utilizando los mecanismos nativos de auditoría de la base de datos. Este artículo también se centrará en la auditoría nativa de una base de datos AWS RDS PostgreSQL.
Existen diferentes parámetros que se pueden configurar para registrar la actividad en tu base de datos AWS RDS PostgreSQL. El registro básico de sentencias puede proporcionarse mediante la instalación estándar de registro con log_statement = all. Esto es aceptable para la monitorización y otros usos, pero no ofrece el nivel de detalle generalmente requerido para una auditoría. No es suficiente contar con una lista de todas las operaciones realizadas contra la base de datos. También debe ser posible encontrar sentencias particulares que sean de interés para un auditor. La instalación estándar de registro muestra lo que el usuario solicitó. Para obtener información más detallada y estructurada, se puede utilizar la extensión pgaudit (pgAudit en GitHub), la cual también se puede configurar. El plugin pgaudit proporciona registros detallados de sesiones y objetos para Amazon RDS PostgreSQL. Después de habilitar la extensión pgAudit, se puede configurar el parámetro pgaudit.log para auditar bases de datos, roles, tablas y columnas específicas.
Habilitación de la extensión pgAudit en una instancia AWS RDS ejecutando PostgreSQL
- Crea un Grupo de Parámetros RDS y cambia los valores predeterminados de los parámetros a los valores que se muestran a continuación:
Nombre del parámetro Valor a asignar Log_checkpoints (opcional) 0 log_connections 1 log_destination csvlog log_disconnections 1 pgaudit.log all pgaudit.role rds_pgaudit shared_preload_libraries pg_stat_statements, pgaudit Asigna el grupo de parámetros a tu instancia de base de datos RDS PostgreSQL (Instancia RDS → Configuración → Modificar → Configuración Adicional de la Base de Datos → Grupo de parámetros DB);
Conéctate a tu base de datos RDS PostgreSQL utilizando algún cliente (psql, PgAdmin, etc.) y ejecuta la siguiente consulta para crear un rol de base de datos llamado rds_pgaudit:
CREATE ROLE rds_pgaudit;
Reinicia tu instancia de base de datos RDS Postgres para aplicar los cambios (Instancia RDS → Acción → Reiniciar)
Asegúrate de que pgAudit esté inicializado ejecutando el siguiente comando:
show shared_preload_libraries;
Deberías recibir la siguiente respuesta:
shared_preload_libraries -------------------------- Rdsutils,pg_stat_statements,pgaudit
Crea la extensión pgaudit ejecutando el siguiente comando:
CREATE EXTENSION pgaudit;
Asegúrate de que el pgaudit.role esté configurado en rds_pgaudit ejecutando el siguiente comando:
SHOW pgaudit.role;
Deberías recibir la siguiente respuesta:
Pgaudit.role ------------------ Rds_pgaudit
Puedes ver los archivos de registro de la base de datos para tu motor DB utilizando la Consola de Administración de AWS:
- En la consola de Amazon RDS, elige el nombre de la instancia de DB PostgreSQL que contiene el archivo de registro que deseas ver.
- Elige la pestaña Registros y eventos.
- Desplázate hacia abajo hasta la sección Registros.
- En la sección Registros, elige el registro que deseas ver y luego selecciona Ver.
Para probar el registro de auditoría, ejecuta varios comandos que hayas seleccionado para auditar. Por ejemplo, podrías ejecutar el siguiente comando:
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP);
Los registros de la base de datos deberían contener una entrada similar a la siguiente.
... 2020-12-08 11:05:14.093 UTC,"postgres","pg_test",9937,"18.222.214.187:45210",5fcf5de8.26d1,99, "INSERT",2020-12-08 11:05:12 UTC,7/1305,5563,LOG,00000,"AUDIT: SESSION,97,1,WRITE,INSERT,,,"" INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP); "",<not logged>",,,,,,,,,"" ...
Veamos el formato de los registros pgAudit:

La CLASE categoriza el tipo de sentencia (READ, WRITE, DDL, etc.) y COMMAND te indica a qué subcategoría pertenece. El campo STATEMENT contiene el texto completo del INSERT INTO y el nombre completamente calificado de una tabla en particular.
Debemos señalar que, desde la perspectiva del auditor, dichos registros de auditoría nativos son bastante difíciles de leer y analizar. La auditoría nativa requiere software/recursos adicionales (como DataSunrise) para analizar y procesar la información a fin de producir registros de auditoría comprensibles. Además, la auditoría nativa implica una sobrecarga en el servidor de la base de datos, archivos de auditoría de gran tamaño que requieren almacenamiento adicional, y los datos de auditoría no se capturan en el formato requerido por los auditores y los equipos de seguridad. En otras palabras, los auditores necesitan registros que presenten la información de manera significativa, y los mecanismos nativos de la base de datos no pueden proporcionar el tipo de registros requerido.
Aquí llega DataSunrise
Basándose en las limitaciones de los mecanismos de auditoría nativos mencionadas anteriormente, echemos un vistazo más de cerca a las capacidades de DataSunrise. DataSunrise se puede desplegar en configuraciones de Registros de Auditoría Trailing DB para PostgreSQL. Esta opción te permite obtener resultados de auditoría recopilados por las herramientas nativas de auditoría de PostgreSQL.

La base de datos PostgreSQL realiza la auditoría utilizando sus mecanismos de auditoría integrados y guarda los resultados en un archivo CSV dedicado, dependiendo de la configuración seleccionada. Luego, DataSunrise establece una conexión con la base para obtener más información de las sesiones, descarga los datos de auditoría desde el servidor de la base de datos utilizando la API de RDS, y los transfiere al Almacenamiento de Auditoría para un análisis posterior. Ante todo, esta configuración está destinada a ser utilizada para bases de datos Amazon RDS, ya que DataSunrise no soporta el sniffing en RDS. Este modo de operación tiene tres inconvenientes principales:
- Si el administrador de la base de datos tiene acceso a los registros, puede eliminarlos.
- La auditoría nativa tiene un impacto negativo en el rendimiento de la base de datos.
- Es imposible determinar qué datos se recibieron para una solicitud específica.
Configurando los Registros de Auditoría Trailing DB para PostgreSQL
Para utilizar Audit Trail en la auditoría de consultas en bases de datos Amazon RDS PostgreSQL, necesitas hacer lo siguiente:
- Asigna los roles IAM adecuados a tu instancia EC2 con instancias de DataSunrise:
Crea una Política AWS IAM utilizando el siguiente JSON:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:DownloadDBLogFilePortion", "rds:DescribeDBLogFiles", "rds:DownloadCompleteDBLogFile" ], "Resource": "arn:aws:rds:<region>:<012345678901>:db:<db-instance-name>" } ] }- Adjunta la política a tu Rol IAM (Políticas → Acciones de Política → Adjuntar)
- Adjunta el Rol IAM a tu máquina EC2 de DataSunrise (Máquina EC2 → Configuración de la instancia → Adjuntar/Reemplazar Rol IAM)
- Conéctate a la Consola Web de DataSunrise.
- Crea un perfil de Base de Datos en Configuraciones → Bases de Datos. En el menú desplegable de Modo, selecciona Trailing the db audit logs y completa todos los campos requeridos:
Elemento de interfaz Descripción Server Servidor DataSunrise Format Type Formato del archivo para almacenar los datos de auditoría Region Región AWS en la que se encuentra la base de datos objetivo DB Identifier Nombre de la Instancia de la Base de Datos Authentication method - IAM Role: utiliza el rol IAM adjunto para la autenticación
- Regular: autenticación utilizando AWS Access/Secret Key
Request data with the following periodicity (seconds) 10 por defecto

- Ve a Audit y configura una Regla de Auditoría para la instancia de PostgreSQL.
- Verifica que no haya sesiones en ejecución.
- Conéctate directamente a la base de datos PostgreSQL y ejecuta algunas consultas.
- Dirígete a Audit → Transactional Trails para revisar los resultados de la auditoría.
¿Por qué es útil DataSunrise en la gestión de Registros de Auditoría de PostgreSQL?
El componente de Auditoría de Datos de DataSunrise es capaz de auditar TODAS las acciones de los usuarios y las consultas enviadas a la base de datos objetivo. La auditoría no depende únicamente del tipo de usuario de la base de datos; por lo tanto, puede auditar tanto las consultas de usuarios regulares como las de usuarios privilegiados.
DataSunrise almacena sus resultados de auditoría en una base de datos SQLite integrada o en una base de datos externa, como PostgreSQL, MS SQL Server, Vertica, Redshift, Aurora MySQL o MySQL. DS también te permite filtrar los registros de auditoría de la base de datos, organizarlos y generar informes basados en ellos que sean uniformes para todas las bases de datos. Gracias al avanzado componente de informes Report Gen, puedes presentar tus datos auditados en un informe personalizable, adecuado a las necesidades de tu auditor. Además, puedes crear informes periódicamente según un calendario.