Bonnes pratiques partie 1

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é.


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *