La auditoría es un requisito para muchas normas o estándares de seguridad, como PCI - Industria de tarjetas de pago, e incluso una buena manera de mantener sus datos lo más seguros posible sabiendo lo que sucede en sus bases de datos.
En una base de datos PostgreSQL, el registro de declaraciones básico puede proporcionarse mediante la función de registro estándar con log_statement =all. Esto es aceptable para el monitoreo y otros usos básicos, pero no brinda el nivel de detalle que generalmente se requiere para la auditoría.
En este blog, veremos qué es la extensión pgAudit y cómo instalarla y usarla en su base de datos PostgreSQL usando ClusterControl.
¿Qué es pgAudit?
La Extensión de Auditoría de PostgreSQL (pgAudit) proporciona un registro detallado de sesión y auditoría de objetos a través de la función de registro estándar de PostgreSQL.
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 función de registro estándar muestra lo que solicitó el usuario, mientras que pgAudit se enfoca en los detalles de lo que sucedió mientras la base de datos satisfacía la solicitud.
Habilitación de pgAudit con ClusterControl
Para este ejemplo, supondremos que tiene instalado ClusterControl y está administrando su base de datos PostgreSQL. De lo contrario, puede seguir esta publicación de blog para tenerlo en funcionamiento de una manera fácil, utilizando ClusterControl.
IU de control de clúster
Desde la versión 1.8.2 de ClusterControl, lanzada recientemente, puede habilitar fácilmente el complemento pgAudit desde la interfaz de usuario de ClusterControl. Para habilitarlo, vaya a ClusterControl -> Seleccione su clúster de PostgreSQL -> Pestaña de seguridad -> Registro de auditoría -> Habilitar.
Deberá especificar los eventos que desea auditar en su PostgreSQL grupo. PgAudit estará habilitado en todos los nodos y requerirá reiniciar el servicio de la base de datos para instalarlo.
Los eventos podrían ser:
-
ROL:declaraciones relacionadas con roles y privilegios:GRANT, REVOKE, CREATE/ALTER/DROP ROLE.
-
DDL:Todo DDL que no está incluido en la clase ROLE.
-
MISC:Comandos varios, p. DESECHAR, RECOGER, PUNTO DE CONTROL, VACÍO, FIJAR.
-
LEER:SELECCIONAR y COPIAR cuando la fuente es una relación o una consulta.
-
ESCRIBA:INSERTAR, ACTUALIZAR, ELIMINAR, TRUNCAR y COPIAR cuando el destino es una relación.
-
FUNCIÓN:Llamadas a funciones y bloques DO.
-
TODO:incluye todo lo anterior.
Puede monitorear su instalación de pgAudit en la sección Actividad de ClusterControl.
Cuando haya terminado, puede consultar su registro de pgAudit en la misma interfaz de usuario de ClusterControl. Para esto, vaya a ClusterControl -> Seleccione su clúster de PostgreSQL -> Pestaña de registros -> Registros del sistema.
Aquí encontrará toda la información necesaria para auditar su base de datos PostgreSQL.
ClusterControlCLI
En lugar de habilitar pgAudit desde la interfaz de usuario de ClusterControl, otra opción es usar la CLI de ClusterControl para hacer el trabajo. Para ello, puede ejecutar el siguiente comando desde su servidor ClusterControl:
$ s9s cluster --setup-audit-logging --cluster-id=ID
Donde ID es el ID del clúster de PostgreSQL.
Mientras se ejecuta, puede monitorear el estado verificando el trabajo de ClusterControl. Primero, necesitará la identificación del trabajo, que puede obtener de la lista de trabajos:
$ s9s job --list
1600 48 RUNNING test_dba admins 18:49:36 90% Setup Audit Logging
Ahora, verifique los detalles del trabajo:
$ s9s job --log --job-id=1600
Using SSH credentials from cluster.
Cluster ID is 48.
The username is 'root'.]
10.10.10.139:5432: Configuring audit logging.
10.10.10.139:5432: Installing 'pgaudit15_13'.
10.10.10.139: Installing pgaudit15_13.
10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
10.10.10.139:5432: Restarting PostgreSQL node.
10.10.10.139: waiting for server to shut down.... done
server stopped
waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG: pgaudit extension initialized
2021-03-24 18:49:43.505 UTC [16098] LOG: redirecting log output to logging collector process
2021-03-24 18:49:43.505 UTC [16098] HINT: Future log output will appear in directory "log".
done
server started
10.10.10.139:5432: Waiting for node to be accessible.
10.10.10.139:5432: pgaudit 1.5.0 is enabled.
Esta acción requerirá un reinicio del servicio de base de datos que será realizado por ClusterControl en la misma tarea. Después de reiniciarlo, la extensión pgAudit está habilitada y lista para usar:
postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
name | default_version | installed_version | comment
---------+-----------------+-------------------+---------------------------------
pgaudit | 1.5 | 1.5 | provides auditing functionality
(1 row)
Conclusión
La auditoría es necesaria para muchas normas de seguridad. Se utiliza para saber qué sucedió con su base de datos, cuándo sucedió y quién es el responsable.
En este blog, hablamos sobre la extensión pgAudit PostgreSQL como una buena forma de auditar sus bases de datos PostgreSQL. También le mostramos cómo implementarlo rápidamente con ClusterControl desde la interfaz de usuario y usando la CLI de ClusterControl.
Recuerde que, dependiendo de la configuración, pgAudit puede generar un enorme volumen de datos. Por lo tanto, debe tener cuidado para determinar qué necesita auditar y por cuánto tiempo.