L'enregistrement avec pgaudit

L'extension d'audit PostgreSQL (pgaudit) permet d'activer l'enregistrement des sessions pour vos déploiements sur IBM Cloud® Databases for PostgreSQL. Pour afficher les journaux d'audit, assurez-vous d'avoir activé la journalisation pour Cloud Databases et d'avoir suivi les étapes pour créer une S2S autorisation permettant d'accorder l'accès à l'envoi des journaux vers IBM® Cloud Logs.

Consignation de session

La connexion de session est désactivée par défaut. Vous pouvez activer les paramètres de journalisation de session qui enregistrent toutes les activités pour des ensembles de types d'événements d'audit. La consignation de session est activée pour l'ensemble du cluster de base de données et est activée (on) ou désactivée (off) pour un type d'événement spécifique.

Types d'événements

La consignation de session est configurée par type d'événement. Les types d'événement pris en charge sur toutes les versions sont les suivants :

  • FONCTION
  • RÔLE
  • DDL
  • LIRE
  • ECRIRE
  • MISC
  • MISC_SET
  • NONE (pour désactiver l'enregistrement)

Pour plus d'informations, voir pgaudit.

Activation de la journalisation de la session pgaudit

Pour activer l'enregistrement de la session pgaudit, connectez-vous en tant qu'utilisateur admin et appelez la fonction set_pgaudit_session_logging en spécifiant les paramètres d'événement appropriés. La consignation de session est activée directement dans la base de données et aucun accès d'API ou d'interface de ligne de commande n'est fourni.

Par exemple, pour activer les fonctions DDL et ROLE, appelez :

SELECT public.set_pgaudit_session_logging(current_database(),'{ddl, role}');

Vous pouvez spécifier une base de données avec dbname au lieu de la fonction current_database().

Activation de la journalisation des utilisateurs sur pgaudit

Pour activer l'enregistrement des utilisateurs de pgaudit, connectez-vous en tant qu'utilisateur administrateur et appelez la fonction set_pgaudit_user_logging en spécifiant les paramètres d'événement appropriés. L'enregistrement des utilisateurs est activé pour un utilisateur spécifique au lieu de tous les utilisateurs de la base de données.

Par exemple, pour activer les fonctions READ et WRITE, utilisez la commande suivante :

SELECT public.set_pgaudit_user_logging(current_database(),'{read, write}');

Activation de la journalisation de la base de données pgaudit

Pour activer l'enregistrement spécifique à la base de données pgaudit, connectez-vous en tant qu'utilisateur administrateur et appelez la fonction set_pgaudit_database_logging en spécifiant les paramètres d'événement appropriés. La journalisation des bases de données est activée pour une base de données spécifique, dans le cas où plusieurs bases de données sont disponibles dans une instance.

Par exemple, pour activer DDL et ROLE dans la base de données actuelle, utilisez la commande suivante :

SELECT public.set_pgaudit_database_logging(current_database(),'{ddl, role}');

ou

SELECT public.set_pgaudit_database_logging('sampledatabase','{read, write, ddl}');

Tous les appels suivants remplacent la configuration existante ; ils ne viennent pas s'ajouter. Par exemple, un appel ultérieur à SELECT public.set_pgaudit_session_logging('{misc}'); n'enregistre que misc mais désactive ddl et role.

Désactivation pgaudit

Pour désactiver l'enregistrement des audits, appelez la même fonction en spécifiant none. Exemple :

SELECT public.set_pgaudit_session_logging(current_database(),'{none}');

La modification des niveaux d'audit se produit immédiatement lorsque la fonction est appelée sans interrompre l'activité de la base de données.

Journaux d'audit

Les événements d'audit apparaissent dans IBM® Cloud Logs Routing au format suivant :

LOG: AUDIT: SESSION,1,1,DDL,CREATE TABLE,,,create table f2 (id int);,<not logged>

Pour plus d'informations, voir pgaudit format.

Si vous souhaitez afficher le niveau de consignation en cours, vous pouvez exécuter la commande suivante :

show pgaudit.log;