Registro de auditoría en Azure Database for PostgreSQL: servidor flexible
SE APLICA A: Azure Database for PostgreSQL con servidor flexible
El registro de auditoría de actividades de base de datos del servidor flexible de Azure Database for PostgreSQL está disponible a través de la extensión de auditoría de PostgreSQL: pgAudit. pgAudit proporciona un registro de auditoría de objeto o sesión detallado.
Si desea obtener registros de nivel de recurso de Azure para operaciones como el escalado de procesos y de almacenamiento, consulte el registro de actividad de Azure.
Consideraciones de uso
De forma predeterminada, las instrucciones de registro de pgAudit se emiten junto con las instrucciones de registro normales mediante el uso de la utilidad de registro estándar de Postgres. En el servidor flexible de Azure Database for PostgreSQL puede configurar todos los registros que se van a enviar al almacén de registros de Azure Monitor a fin de analizarlos posteriormente en Log Analytics. Si habilita el registro de recursos de Azure Monitor, los registros se enviarán automáticamente (en formato JSON) a Azure Storage, Event Hubs o a los registros de Azure Monitor, en función de su elección.
Para aprender a configurar el registro en Azure Storage, Event Hubs o los registros de Azure Monitor, consulte la sección de registros de recursos del artículo de registros de servidor.
Instalación de pgAudit
Antes de poder instalar la extensión pgAudit en el servidor flexible de Azure Database for PostgreSQL, tendrá que incluirla en la lista de permitidos.
Mediante Azure Portal:
- Seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.
- En la barra lateral, seleccione Parámetros del servidor.
- Busque el parámetro
azure.extensions
. - Seleccione pgAudit como extensión que desea permitir.
Mediante la CLI de Azure:
Puede incluir extensiones en la lista de permitidos mediante el comando del conjunto de parámetros de la CLI.
az postgres flexible-server parameter set --resource-group <your resource group> --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value pgAudit
Para instalar pgAudit, tendrá que incluirlo en las bibliotecas de carga previa compartidas del servidor. Si cambia el parámetro shared_preload_libraries
de Postgres deberá reiniciar el servidor para que tenga efecto. Puede cambiar los parámetros mediante Azure Portal, la CLI de Azure o API REST.
Mediante Azure Portal:
Seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.
En la barra lateral, seleccione Parámetros del servidor.
Busque el parámetro
shared_preload_libraries
.Seleccione pgaudit.
Puede comprobar que pgaudit se carga en shared_preload_libraries si ejecuta la siguiente consulta en psql:
show shared_preload_libraries;
Debería ver pgaudit en el resultado de la consulta que devolverá shared_preload_libraries.
Conéctese al servidor mediante un cliente (como psql) y habilite la extensión pgAudit.
CREATE EXTENSION pgaudit;
Sugerencia
Si ve un error, confirme que ha reiniciado el servidor después de guardar shared_preload_libraries
.
Configuración de pgAudit
pgAudit le permite configurar el registro de auditoría de objeto o sesión. El registro de auditoría de sesión emite registros detallados de las instrucciones ejecutadas. El registro de auditoría de objetos es una auditoría con un ámbito limitado a relaciones específicas. Puede optar por configurar uno o ambos tipos de registro.
Una vez que haya habilitado pgAudit, puede configurar sus parámetros para iniciar el registro. Para configurar pgAudit, puede seguir las instrucciones siguientes. Mediante Azure Portal:
- Seleccione su servidor de Azure Database for PostgreSQL.
- En la barra lateral, seleccione Parámetros del servidor.
- Busque los parámetros
pgaudit
. - Elija el parámetro de configuración adecuado para editarlo. Por ejemplo, para iniciar el registro, establezca
pgaudit.log
enWRITE
- Haga clic en el botón Guardar para guardar los cambios.
La documentación de pgAudit proporciona la definición de cada parámetro. Pruebe primero los parámetros y confirme que obtiene el comportamiento esperado.
Nota
Al establecer pgaudit.log_client
en ON, se redirigirán los registros a un proceso de cliente (como psql), en lugar de escribirse en el archivo. Por lo general, esta configuración se debe dejar deshabilitada.
pgaudit.log_level
solo se habilita cuando pgaudit.log_client
está activado.
Nota:
En el servidor flexible de Azure Database for PostgreSQL, pgaudit.log
no se puede establecer con un acceso directo de signo -
(menos), tal como se describe en la documentación de pgAudit. Todas las clases de instrucción necesarias (lectura, escritura, etc.) deben especificarse individualmente.
Nota
Si establece el parámetro log_statement en DDL o ALL y ejecuta un comando CREATE ROLE/USER ... WITH PASSWORD ... ;
o ALTER ROLE/USER ... WITH PASSWORD ... ;
, PostgreSQL crea una entrada en los registros de PostgreSQL, donde la contraseña se registra en texto no definido, lo que puede provocar un riesgo de seguridad potencial. Este es el comportamiento esperado según el diseño del motor de PostgreSQL. Sin embargo, puede usar la extensión PGAudit y establecer el parámetro pgaudit.log='DDL'
en la página de parámetros del servidor, que no registra ninguna instrucción CREATE/ALTER ROLE
en el registro de Postgres, a diferencia de la configuración log_statement='DDL'
de Postgres. Si necesita registrar estas instrucciones, puede agregar pgaudit.log ='ROLE'
además, lo que, mientras se registra 'CREATE/ALTER ROLE'
ocultará la contraseña de los registros.
Formato de los registros de auditoría
Cada entrada de auditoría se indica mediante AUDIT:
cerca del principio de la línea de registro. El formato del resto de la entrada se detalla en la documentación de pgAudit.
Introducción
Para empezar a trabajar rápidamente, establezca pgaudit.log
en WRITE
y abra los registros del servidor para revisar la salida.
Visualización de registros de auditoría
La forma de acceder a los registros depende del punto de conexión que elija. Si se trata de Azure Storage, consulte el artículo sobre la cuenta de almacenamiento de registros. Si se trata de Event Hubs, consulte el artículo Transmisión de los registros de Azure.
Si se trata de los registros de Azure Monitor, los registros se envían al área de trabajo seleccionada. Los registros de Postgres usan el modo de recopilación AzureDiagnostics, por lo que se pueden consultar desde la tabla AzureDiagnostics. A continuación se describen los campos de la tabla. Obtenga más información acerca de las consultas y las alertas en Introducción a las consultas de registro en Azure Monitor.
Puede usar esta consulta para comenzar. Puede configurar alertas basadas en las consultas.
Buscar todas las entradas de pgAudit en los registros de Postgres de un servidor determinado del último día
AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"