Registros de Auditoría de AWS RDS PostgreSQL en DataSunrise
Hoy en día, es casi sorprendente ver otro titular relacionado con violaciones de datos o privacidad de datos. Esto te afecta personalmente como cliente de esas empresas: quieres que alguien cuide bien 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 cinturón 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 saber quién y cuándo accedió a tus tablas de base de datos, y qué modificaciones se hicieron en ellas. Teóricamente, todas estas demandas pueden cumplirse utilizando mecanismos de auditoría nativos 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.
Hay diferentes parámetros que puedes configurar para registrar la actividad en tu base de datos AWS RDS PostgreSQL. El registro básico de declaraciones puede proporcionarse mediante la instalación de registro estándar con log_statement = all. Esto es aceptable para monitoreo y otros usos, pero no proporciona el nivel de detalle generalmente requerido para una auditoría. No es suficiente tener una lista de todas las operaciones realizadas contra la base de datos. También debe ser posible encontrar declaraciones particulares que sean de interés para un auditor. La instalación de registro estándar muestra lo que solicitó el usuario. Para obtener información más detallada y estructurada, puedes utilizar la extensión pgaudit (https://github.com/pgaudit/pgaudit), que también puedes configurar. El plugin pgaudit proporciona registros de auditoría de sesión y objetos detallados para Amazon RDS PostgreSQL. Después de habilitar la extensión pgAudit, puedes configurar el parámetro pgaudit.log para auditar bases de datos específicas, roles, tablas y columnas.
Habilitando la extensión pgAudit en una instancia de AWS RDS que ejecuta PostgreSQL
- Crea un Grupo de Parámetros de 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 establecer 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 de la base de datos);
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 Postgres RDS 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 a 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 usando la Consola de Administración de AWS:
- En la consola de Amazon RDS, elige el nombre de la instancia de DB PostgreSQL que tiene 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 elige Ver.
Para probar el registro de auditoría, ejecuta varios comandos que hayas elegido 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, "ATTACH",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 de pgAudit:
La CLASE categoriza el tipo de declaración (LECTURA, ESCRITURA, DDL, etc.) y el COMANDO te dice qué subclase es. El campo DECLARACIÓN contiene el texto completo del INSERT INTO y el nombre completamente cualificado de una tabla en particular.
Debemos señalar que desde la perspectiva del auditor, tales registros de auditoría nativos son bastante difíciles de leer y analizar. La auditoría nativa necesita software/recursos adicionales (como DataSunrise) para el análisis y procesamiento con el fin de producir rastros de auditoría fáciles de usar. Además de eso, la auditoría nativa significa causar una sobrecarga en el servidor de la base de datos, grandes archivos de auditoría requieren almacenamiento en la base de datos, y los datos de auditoría no se capturan en el formato requerido por los auditores y equipos de seguridad. En otras palabras, los auditores necesitan registros que presenten información de manera significativa y los mecanismos nativos de la base de datos no pueden proporcionarles el tipo de registros requerido.
Aquí viene DataSunrise
Basándonos en las limitaciones de los mecanismos de auditoría nativos que mencionamos anteriormente, echemos un vistazo más de cerca a las capacidades de DataSunrise. DataSunrise puede desplegarse en configuraciones de Registros de Auditoría de DB Trailing PostgreSQL. Esta opción te permite obtener resultados de auditoría recopilados por herramientas de auditoría nativas de PostgreSQL.
La base de datos PostgreSQL realiza auditorías utilizando sus mecanismos integrados de auditoría y guarda los resultados de la auditoría en un archivo CSV dedicado según la configuración seleccionada. Luego, DataSunrise establece una conexión con la base para obtener más información de la sesión, descarga los datos de auditoría del servidor de la base de datos utilizando la API de RDS y los pasa al Almacenamiento de Auditoría para un análisis posterior. Primero y ante todo, esta configuración está destinada a ser utilizada para bases de datos Amazon RDS porque DataSunrise no soporta la escucha en RDS. Este modo de operación tiene tres inconvenientes principales:
- Si el administrador de la base de datos tiene acceso a los registros de la base de datos, puede eliminarlos.
- La auditoría nativa tiene un impacto negativo en el rendimiento de la base de datos.
- Es imposible averiguar qué datos se recibieron para una solicitud específica.
Configurando Registros de Auditoría de DB Trailing PostgreSQL
Para usar el Rastreo de Auditoría para auditar consultas de bases de datos Amazon RDS PostgreSQL necesitas hacer lo siguiente:
- Asignar roles IAM adecuados a tu instancia de EC2 con instancias de DataSunrise:
Crea una Política de IAM de AWS 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 Role IAM (Policies → Acciones de política → Adjuntar)
- Adjunta el Role IAM a tu máquina EC2 de DataSunrise (máquina EC2 → Configuraciones de la Instancia → Adjuntar/Reemplazar IAM Role)
- Conéctate a la Consola Web de DataSunrise.
- Crea un perfil de base de datos en Configuraciones → Bases de datos. En la lista desplegable Modo, selecciona Rastreo de los registros de auditoría de la base de datos y completa todos los campos requeridos:
Elemento de la interfaz Descripción Servidor Servidor DataSunrise Tipo de Formato Formato del archivo para almacenar los datos de auditoría Región Región de AWS en la que se encuentra tu base de datos de destino Identificador de DB Nombre de la instancia de la base de datos Método de autenticación - Role IAM: usar el role IAM adjunto para la autenticación
- Regular: autenticación usando Clave de Acceso/Secreta de AWS
Solicitar datos con la siguiente periodicidad (segundos) 10 por defecto
- Ve a la sección de Auditoría y configura una Regla de Auditoría para una instancia de PostgreSQL.
- Verifica que no haya sesiones en ejecución.
- Conéctate directamente a la base de datos PostgreSQL y ejecuta cualquier consulta.
- Ve a Auditoría → Rastreos Transaccionales para verificar 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 y consultas de los usuarios enviadas a la base de datos de destino. La auditoría simplemente no depende del tipo de usuario de la base de datos. Así puede auditar tanto las consultas de los usuarios regulares como las consultas de los 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, MySQL. DataSunrise también te permite filtrar registros de auditoría de DB, organizarlos y generar informes basados en ellos que sean uniformes para todas las bases de datos. Gracias al componente avanzado de generación de informes Report Gen, puedes presentar tus datos auditados como un informe personalizable adecuado para las necesidades de tu auditor. También puedes crear informes periódicamente según un horario.