Configura el comportamiento del registro

Para controlar qué operaciones de SQL y objetos de base de datos se registran en tus registros de auditoría, puedes configurar el registro de sesiones y objetos de pgAudit en AlloyDB para PostgreSQL estableciendo la marca pgaudit.log o la marca pgaudit.role:

  • Configura pgaudit.log para habilitar y configurar el registro de sesiones. Puedes establecer esta marca en una instancia, una base de datos o un rol para definir el alcance de las operaciones que registra pgAudit. Establece la marca en un valor que defina el tipo de operaciones que registra pgAudit.

  • Establece pgaudit.role para habilitar y configurar el registro de objetos, que registra las instrucciones de registro que afectan a relaciones particulares. Establece esta marca en el nombre de un rol y, luego, otorga acceso de sentencia a los objetos específicos que deseas registrar. El acceso a los resúmenes incluye SELECT, INSERT, UPDATE y DELETE. pgAudit registra todas las operaciones que coinciden con la combinación de acceso y objeto que ejecuta cualquier usuario.

En las siguientes secciones, se proporcionan ejemplos que muestran las opciones para configurar el comportamiento de registro de pgAudit.

Para conocer las capacidades adicionales de la extensión, consulta la documentación de pgAudit.

Configura el registro de auditoría de sesiones para todas las bases de datos de una instancia

Para configurar la auditoría de todas las bases de datos de una instancia, establece la marca pgaudit.log a nivel de la instancia.

Por ejemplo:

  • Para habilitar la auditoría de todas las operaciones en todas las bases de datos de una instancia, haz lo siguiente:
    gcloud alloydb instances update my-instance \
        --database-flags pgaudit.log=all[,flag2=value2...] \
        --region=us-central1 \
        --cluster=my-cluster \
        --project=my-project
    
  • Para habilitar la auditoría solo para las operaciones de lectura y escritura en todas las bases de datos de una instancia, haz lo siguiente:
    gcloud alloydb instances update my-instance \
        --database-flags=^:^pgaudit.log=read,write[:flag2=value2...] \
        --region=us-central1 \
        --cluster=my-cluster \
        --project=my-project
    

Ten en cuenta el uso de la sintaxis de delimitador alternativo, que te permite usar caracteres de coma dentro de un valor de marca.

Para obtener información sobre cómo configurar marcas de base de datos, consulta Configura marcas de base de datos.

Configura el registro de auditoría de sesiones para una base de datos específica

Puedes configurar la auditoría para una base de datos específica si estableces la marca pgaudit.log a nivel de la base de datos.

Por ejemplo, para habilitar la auditoría de lectura y escritura de una base de datos, finance, haz lo siguiente:

ALTER DATABASE finance SET pgaudit.log = 'read,write';

Configura el registro de auditoría de sesiones para un solo usuario

Puedes habilitar la auditoría para un usuario específico si configuras la marca pgaudit.log a nivel de rol.

Por ejemplo, para configurar la auditoría de todas las operaciones de la base de datos que ejecuta la usuaria Alice, haz lo siguiente:

ALTER ROLE alice SET pgaudit.log = 'all';

Configura el registro de auditoría de objetos

La auditoría para una relación es más estrecha que la auditoría de una base de datos específica. Cuando auditas una relación, el sistema asigna un rol de auditor único al parámetro pgaudit.role. Esta operación registra cualquier objeto o relación que se otorgue a este rol.

Por ejemplo:

  • Para configurar la auditoría de todas las consultas SELECT en la relación salary dentro de la base de datos employee, haz lo siguiente:
    CREATE ROLE auditor WITH NOLOGIN;
    ALTER DATABASE employee SET pgaudit.role = 'auditor';
    GRANT SELECT ON salary TO auditor;
    

También puedes auditar un subconjunto de columnas de una relación determinada.

Por ejemplo:

  • Para configurar el registro de auditoría que se produce solo cuando se accede a las columnas income y tax_status desde la relación de salario, haz lo siguiente:
    GRANT SELECT(income, tax_status) ON salary TO auditor;