On distingue :
- Le compte système postgres (utilisateur Linux/Unix qui possède le service et les fichiers du cluster)
- Le rôle postgres (ou tout autre superuser) dans PostgreSQL
Et pourquoi il ne faut pas confondre les deux ni les mélanger avec les comptes « métiers ».
🔹 1. Séparation des responsabilités (principe de moindre privilège)
Le compte système postgres sert uniquement à administrer le serveur PostgreSQL (démarrage, arrêt, accès aux fichiers de données).
Les comptes métiers servent aux applications et utilisateurs finaux.
👉 Mélanger les deux, c’est donner des droits système et base aux métiers, ce qui viole les bonnes pratiques de sécurité.
🔹 2. Sécurité et traçabilité
Si les métiers utilisent un superuser (genre dba_metier), alors :
Ils peuvent créer/détruire des bases, modifier des paramètres globaux, casser la sécurité.
Impossible de tracer correctement qui a fait quoi → tout passe par un compte « root SQL ».
Avec un vrai cloisonnement :
DBA/admin = rôle superuser (postgres ou autre créé exprès).
Métier/app = rôle applicatif avec uniquement les droits nécessaires (DDL/DML).
👉 On garde des logs clairs et exploitables.
🔹 3. Réduction des risques d’erreurs
Un compte superuser peut supprimer une table système, modifier le catalogue interne, ou faire un DROP DATABASE accidentel.
Si un développeur ou un utilisateur métier a ce rôle → risque d’erreur massive.
Le compte postgres est réservé aux actions d’administration planifiées.
🔹 4. Bonne pratique de durcissement (hardening)
Dans les audits de sécurité (ex. ANSSI, ISO 27001, PCI-DSS), c’est une exigence claire :
Pas de superuser partagé.
Pas de comptes métiers avec rôle superuser.
L’OS postgres + le rôle postgres = comptes d’administration technique uniquement.
Les métiers doivent passer par des rôles limités avec GRANT précis.
🔹 5. Gestion des sauvegardes et de la maintenance
Certaines opérations (pg_dumpall, pg_basebackup, accès aux catalogues système, réplication, etc.) exigent un superuser.
Le compte postgres est attendu par la plupart des scripts, outils de sauvegarde et procédures automatiques.
👉 Utiliser un compte métier pour ça introduit des problèmes de compatibilité et de maintenance.
✅ En résumé :
Le compte système/SQL postgres doit rester réservé aux DBA.
Les métiers doivent avoir des comptes sans superuser, avec uniquement les droits nécessaires.
Ça garantit sécurité, traçabilité, conformité et stabilité.

Laisser un commentaire