L'audit est une exigence pour de nombreuses réglementations ou normes de sécurité, comme PCI - Payment Card Industry, et même un bon moyen de garder vos données aussi sûres que possible en sachant ce qui se passe dans vos bases de données.
Dans une base de données PostgreSQL, la journalisation des instructions de base peut être fournie par la fonction de journalisation standard avec log_statement =all. Ceci est acceptable pour la surveillance et d'autres utilisations de base, mais ne fournit pas le niveau de détail généralement requis pour l'audit.
Dans ce blog, nous verrons ce qu'est l'extension pgAudit et comment l'installer et l'utiliser dans votre base de données PostgreSQL à l'aide de ClusterControl.
Qu'est-ce que pgAudit ?
L'extension d'audit PostgreSQL (pgAudit) fournit une journalisation d'audit détaillée des sessions et des objets via la fonction de journalisation standard de PostgreSQL.
Il ne suffit pas d'avoir une liste de toutes les opérations effectuées sur la base de données. Il doit également être possible de trouver des déclarations particulières qui intéressent un auditeur. La fonction de journalisation standard montre ce que l'utilisateur a demandé, tandis que pgAudit se concentre sur les détails de ce qui s'est passé pendant que la base de données satisfaisait la demande.
Activer pgAudit avec ClusterControl
Pour cet exemple, nous supposerons que vous avez installé ClusterControl et qu'il gère votre base de données PostgreSQL. Sinon, vous pouvez suivre ce billet de blog pour le faire fonctionner facilement, en utilisant ClusterControl.
Interface utilisateur ClusterControl
Depuis la version 1.8.2 de ClusterControl, lancée récemment, vous pouvez facilement activer le plugin pgAudit depuis l'interface utilisateur de ClusterControl. Pour l'activer, allez dans ClusterControl -> Sélectionnez votre cluster PostgreSQL -> Onglet Sécurité -> Journal d'audit -> Activer.
Vous devrez spécifier les événements que vous souhaitez auditer dans votre PostgreSQL groupe. PgAudit sera activé sur tous les nœuds et nécessitera un redémarrage du service de base de données pour l'installer.
Les événements pourraient être :
-
ROLE :Déclarations relatives aux rôles et privilèges :GRANT, REVOKE, CREATE/ALTER/DROP ROLE.
-
DDL :tous les DDL qui ne sont pas inclus dans la classe ROLE.
-
MISC :commandes diverses, par ex. JETER, RÉCUPÉRER, POINT DE CONTRÔLE, VIDE, RÉGLER.
-
LIRE :SELECT et COPY lorsque la source est une relation ou une requête.
-
WRITE :INSERT, UPDATE, DELETE, TRUNCATE et COPY lorsque la destination est une relation.
-
FONCTION :Appels de fonction et blocs DO.
-
TOUS :inclure tous les éléments ci-dessus.
Vous pouvez surveiller votre installation de pgAudit dans la section Activité de ClusterControl.
Une fois terminé, vous pouvez vérifier votre journal pgAudit dans la même interface utilisateur ClusterControl. Pour cela, allez dans ClusterControl -> Sélectionnez votre cluster PostgreSQL -> Onglet Journaux -> Journaux système.
Vous trouverez ici toutes les informations nécessaires pour auditer votre base de données PostgreSQL.
ClusterControl CLI
Au lieu d'activer pgAudit à partir de l'interface utilisateur de ClusterControl, une autre option consiste à utiliser la CLI de ClusterControl pour effectuer le travail. Pour cela, vous pouvez lancer la commande suivante depuis votre serveur ClusterControl :
$ s9s cluster --setup-audit-logging --cluster-id=ID
Où ID est l'ID du cluster PostgreSQL.
Pendant son exécution, vous pouvez surveiller l'état en vérifiant la tâche ClusterControl. Tout d'abord, vous aurez besoin de l'identifiant de la tâche, que vous pouvez obtenir à partir de la liste des tâches :
$ s9s job --list
1600 48 RUNNING test_dba admins 18:49:36 90% Setup Audit Logging
Maintenant, vérifiez les détails de la tâche :
$ 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.
Cette action nécessitera un redémarrage du service de base de données qui sera effectué par ClusterControl dans la même tâche. Après l'avoir redémarré, l'extension pgAudit est activée et prête à être utilisée :
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)
Conclusion
L'audit est requis pour de nombreuses réglementations de sécurité. Il est utilisé pour savoir ce qui est arrivé à votre base de données, quand cela s'est produit et qui en est responsable.
Dans ce blog, nous avons parlé de l'extension pgAudit PostgreSQL comme un bon moyen d'auditer vos bases de données PostgreSQL. Nous vous avons également montré comment l'implémenter rapidement avec ClusterControl à partir de l'interface utilisateur et à l'aide de la CLI ClusterControl.
Gardez à l'esprit que, selon la configuration, pgAudit peut générer un énorme volume de données. Vous devez donc faire attention à déterminer ce que vous devez auditer et pendant combien de temps.