Pour configurer le comportement de journalisation de pgAudit, définissez l'option pgaudit.log
ou pgaudit.role
:
Définissez
pgaudit.log
pour activer et configurer la journalisation des sessions. Vous pouvez définir cet indicateur sur une instance, une base de données ou un rôle pour définir le champ d'application des opérations enregistrées par pgAudit. Vous définissez le flag sur une valeur qui définit le type d'opérations que pgAudit enregistre.Définissez
pgaudit.role
pour activer et configurer la journalisation des objets, qui enregistre les instructions affectant des relations spécifiques. Vous définissez cet indicateur sur le nom d'un rôle, puis vous accordez l'accès aux instructions à des objets spécifiques que vous souhaitez consigner. L'accès aux relevés inclutSELECT, INSERT, UPDATE, and DELETE
. pgAudit enregistre toutes les opérations qui correspondent à la combinaison d'accès et d'objet exécutée par un utilisateur.
Les sections suivantes fournissent des exemples illustrant les options de configuration du comportement de journalisation pgAudit.
Pour découvrir les autres fonctionnalités de l'extension, consultez la documentation de pgAudit.
Configurer la journalisation des audits de session pour toutes les bases de données d'une instance
Pour configurer l'audit pour toutes les bases de données d'une instance, définissez l'indicateur pgaudit.log
au niveau de l'instance.
Exemple :
- Pour activer l'audit pour toutes les opérations sur toutes les bases de données d'une instance :
gcloud alloydb instances update my-instance \ --database-flags pgaudit.log=all[,flag2=value2...] \ --region=us-central1 \ --cluster=my-cluster \ --project=my-project
- Pour n'activer l'audit que pour les opérations de lecture et d'écriture sur toutes les bases de données d'une instance :
gcloud alloydb instances update my-instance \ --database-flags=^:^pgaudit.log=read,write[:flag2=value2...] \ --region=us-central1 \ --cluster=my-cluster \ --project=my-project
Notez l'utilisation de la syntaxe de délimiteur alternatif, qui vous permet d'utiliser des virgules dans la valeur d'un indicateur.
Pour en savoir plus sur la configuration des options de base de données, consultez Configurer des options de base de données.
Configurer la journalisation d'audit des sessions pour une base de données spécifique
Vous pouvez configurer l'audit pour une base de données spécifique en définissant l'indicateur pgaudit.log
au niveau de la base de données.
Par exemple, pour activer l'audit de lecture/écriture pour une base de données, finance :
finance=> ALTER DATABASE finance SET pgaudit.log = 'read,write';
Configurer la journalisation d'audit des sessions pour un seul utilisateur
Vous pouvez activer l'audit pour un utilisateur spécifique en définissant pgaudit.log
au niveau d'un rôle.
Par exemple, pour définir l'audit pour toutes les opérations de base de données exécutées par l'utilisateur Alice :
finance=> ALTER ROLE alice SET pgaudit.log = 'all';
Configurer la journalisation des audits d'objets
L'audit d'une relation est plus précis que l'audit d'une base de données spécifique. Lorsque vous auditez une relation, le système attribue un rôle d'auditeur unique au paramètre pgaudit.role
. Cette opération consigne tout objet ou relation attribué à ce rôle.
Exemple :
- Pour configurer l'audit pour toutes les requêtes
SELECT
sur la relation salariale au sein de la base de données des employés :employee=> CREATE ROLE auditor WITH NOLOGIN;
employee=> ALTER DATABASE employee SET pgaudit.role = 'auditor';
employee=> GRANT SELECT ON salary TO auditor;
Vous pouvez également auditer un sous-ensemble de colonnes pour une relation donnée.
Exemple :
- Pour configurer la journalisation d'audit afin qu'elle ait lieu uniquement lorsque les colonnes
income
ettax_status
font l'objet d'un accès à partir de la relation "salary" (salaire) :employee=> GRANT SELECT(income, tax_status) ON salary TO auditor;