Principaux enseignements
- PostgreSQL est livré avec des paramètres par défaut raisonnables, mais « raisonnable » ne signifie pas « prêt pour la production » : l’authentification, l’exposition réseau et les privilèges des rôles doivent tous faire l’objet d’un renforcement actif avant la mise en production.
- Les fonctionnalités intégrées telles que SCRAM-SHA-256, la sécurité au niveau des lignes et le chiffrement TLS assurent l'essentiel du travail, mais uniquement si vous les activez et les contrôlez régulièrement.
- Pour les déploiements fonctionnant sous PostgreSQL 13 au-delà de sa fin de vie (EOL) prévue en novembre 2025, TuxCare fournit des correctifs de vulnérabilité de manière continue aussi longtemps que nécessaire, jusqu’à ce que vous puissiez effectuer la migration.
La plupart des intrusions dans PostgreSQL ne commencent pas par une faille « zero-day ». Elles commencent par une exception temporaire – trust authentification restée dans pg_hba.conf après une longue session de débogage – que personne ne range jamais.
En 2026, la sécurité de PostgreSQL ne repose pas tant sur la prévention d’attaques exotiques que sur le travail peu glamour consistant à maintenir des configurations rigoureuses, à appliquer les correctifs à jour et à faire respecter les limites d’accès. La vérité, aussi embarrassante soit-elle, c’est que la plupart des failles de sécurité sont évitables : elles surviennent parce que les tâches fastidieuses n’ont pas été effectuées. Vous trouverez ci-après les menaces qui pèsent actuellement sur les déploiements PostgreSQL, les défenses intégrées qui font la différence, ainsi que les mesures de renforcement de la sécurité qui méritent que vous y consacriez du temps.
Pourquoi les utilisateurs de PostgreSQL devraient-ils se préoccuper de la sécurité ?
PostgreSQL dispose d’un modèle de sécurité véritablement solide — ce n’est pas là le problème. Le problème, c’est que la sécurité en environnement de production dépend toujours d’une configuration réfléchie : les paramètres par défaut sont réglés pour vous permettre de démarrer, pas pour garantir votre sécurité face à un trafic réel. Méthodes d’authentification, adresses d’écoute, privilèges des rôles, journalisation : tout cela nécessite une configuration minutieuse. Ce n’est pas un défaut du logiciel ; c’est simplement une lacune que chaque équipe doit combler elle-même, ce que beaucoup ne font pas avant qu’un incident ne survienne.
Le paysage des menaces a également évolué d'une manière qui prend les équipes au dépourvu. Les opérations de cryptojacking utilisent désormais des scanners automatisés qui recherchent spécifiquement les instances PostgreSQL exposées sur le port 5432, et déploient des mineurs via PL/Python ou PL/Perl une fois qu'elles ont réussi à s'introduire dans le système. Injection SQL Cela reste d'actualité dès lors que l'on a affaire à du SQL dynamique, à des extensions ou à des langages procéduraux. Par ailleurs – et de plus en plus souvent –, les attaques par la chaîne d'approvisionnement visant les dépendances de votre application peuvent extraire .pgpass fichiers, variables d'environnement ou chaînes de connexion avant même que PostgreSQL ne reçoive une requête. Et si votre organisation est soumise à PCI DSS, HIPAAou SOC 2, la question n'est pas de savoir s'il faut renforcer la sécurité de votre base de données : les auditeurs l'exigeront, et ils voudront des preuves documentées, pas seulement de bonnes intentions.
Les équipes qui gèrent bien cette situation traitent la dette de sécurité de la même manière que la dette technique : elles la suivent, la planifient et la réduisent progressivement. Celles qui ne le font pas en font souvent les frais, généralement au pire moment possible.
Menaces courantes pour la sécurité de PostgreSQL
Aucune des menaces ci-dessous n'est hypothétique. Il s'agit de menaces qui sont actuellement exploitées contre des déploiements PostgreSQL, souvent à l'encontre d'équipes qui pensaient sincèrement avoir une bonne maîtrise de leur sécurité.

Menace n° 1 : injection SQL via les extensions et les langages procéduraux
L'injection SQL est l'attaque la plus ancienne qui soit, mais l'écosystème d'extensions de PostgreSQL ne cesse de trouver de nouvelles façons de la rendre toujours d'actualité. La vulnérabilité CVE-2025-1094, révélée en février 2025, illustre bien cette évolution : il s'agissait d'une faille dans fonctions d’échappement de libpq (PQescapeLiteral, PQescapeIdentifier et autres) : celles-ci ne parvenaient pas à neutraliser la syntaxe d’échappement dans du texte contenant des séquences d’octets non valides ; ainsi, lorsque cette sortie était transmise à psql, un attaquant pouvait réaliser une injection SQL. Elle présentait un score CVSS de 8,1, affectait toutes les versions prises en charge antérieures aux versions 17.3, 16.7, 15.11, 14.16 et 13.19, et – selon Rapid7 – était nécessaire dans tous les scénarios qu’ils ont testés pour transformer la faille BeyondTrust (CVE-2024-12356) en une exécution de code à distance.
Ce qui est intéressant dans cette vulnérabilité CVE, c'est qu'il ne s'agissait pas d'une technique inédite : la gestion des séquences d'octets non valides est un type de problème connu depuis des années. Elle n'avait tout simplement pas été détectée dans ce chemin d'exécution spécifique jusqu'à ce que quelqu'un y regarde de suffisamment près.

Les langages procéduraux élargissent la surface d'attaque d'une manière différente. C'est le non fiable langages procéduraux – PL/Python (qui n'existe que sous la forme de plpython3u) et plperlu – capable d’exécuter du code arbitraire au niveau du système d’exploitation. C’est une fonctionnalité, pas un bug. Le hic, c’est que c’est exactement le contraire de ce que l’on pourrait croire : un de confiance un langage comme plperl est isolée dans un bac à sable et ne présente aucun danger pour les utilisateurs sans privilèges, tandis que seuls les super-utilisateurs peuvent créer des fonctions dans les environnements non fiables. Le véritable risque réside donc dans le fait d’accorder cette capacité – ou le statut de super-utilisateur lui-même – plus librement que vous ne le pensez. Une équipe SaaS de 40 personnes utilisant une base de données partagée ne devrait pas accorder CREATE FUNCTION à quiconque n'est pas administrateur de base de données – mais beaucoup le font, car c'est plus rapide que d'écrire des scripts de migration corrects et personne ne s'attend à ce que cela pose problème, jusqu'à ce que ce soit le cas.
Conseil de pro : La mise en conformité n'a rien de très glamour. Il faut paramétrer toutes les requêtes et limiter les personnes autorisées à les exécuter. CREATE EXTENSION et créer des fonctions dans des langages non fiables, vérifier régulièrement vos extensions installées, et révoquer CREATE de n'importe quel poste pour lequel il n'existe pas de besoin opérationnel justifié par écrit.
Menace n° 2 : fichier pg_hba.conf
Il s'agit de l'erreur la plus courante en matière de sécurité sous PostgreSQL. Le fichier d'authentification basé sur l'hôte détermine qui peut se connecter à votre base de données, depuis quel endroit et par quel moyen. Une seule ligne mal configurée peut, à votre insu, exposer votre base de données à Internet.

Les deux schémas qui causent le plus de problèmes aux équipes :
- L'authentification par confiance a été conservée en production après le débogage local. Avec l'authentification par confiance, PostgreSQL accepte n'importe quel nom d'utilisateur sans mot de passe, à condition que la connexion provienne d'un hôte autorisé.
- Des entrées d'hôte génériques (0.0.0.0/0), associées à des méthodes de gestion des mots de passe peu sûres, exposent la base de données à Internet, protégée uniquement par un mot de passe facile à deviner.
pg_hba.conf est évaluée de haut en bas et la première règle correspondante l'emporte. C'est ce détail qui pose le plus de problèmes : une règle permissive située au-dessus d'une règle stricte n'est pas ignorée ; elle l'emporte discrètement, à chaque fois, sans générer d'erreur ni d'avertissement. Vous vous retrouvez alors avec une connexion qui n'aurait jamais dû être autorisée, sans qu'aucune trace dans les journaux ne vous explique pourquoi elle l'a été.
Remarque : Si votre instance PostgreSQL est accessible depuis n'importe quelle adresse autre que 127.0.0.1 ou depuis l'extérieur de votre VPC privée, arrêtez de lire et commencez par vérifier ce fichier.
Menace n° 3 : failles CVE non corrigées
PostgreSQL publie des mises à jour de sécurité selon un calendrier prévisible – le problème ne réside pas dans les mises à jour elles-mêmes, mais dans le délai qui s'écoule entre leur « publication » et leur « déploiement en production ». La vulnérabilité CVE-2024-10979, révélée en novembre 2024, illustre bien les enjeux : une faille de gravité élevée (CVSS 8,8) dans PL/Perl permettait à des utilisateurs non privilégiés de modifier des variables d’environnement telles que PATH et d’exécuter du code arbitraire. Toutes les versions antérieures aux versions 17.1, 16.5, 15.9, 14.14, 13.17 et 12.21 étaient concernées.

Cela fait donc six branches de version mineure. De nombreuses équipes travaillaient sur au moins l'une d'entre elles, et beaucoup continuent d'ailleurs à travailler sur l'une d'elles aujourd'hui.
Vient ensuite le problème de la fin de vie, qui est sans doute encore plus grave. Le support de la communauté PostgreSQL s’étend sur cinq ans par version majeure. PostgreSQL 12 a atteint sa fin de vie en novembre 2024, et PostgreSQL 13 a suivi en novembre 2025. Les deux versions fonctionnent désormais sans correctifs de sécurité en amont : aucun correctif n’est fourni, quelle que soit la gravité de la faille, à moins de procéder à une mise à niveau ou de souscrire à un support étendu.
Si vous êtes contraint de rester sur l'une ou l'autre de ces versions en raison d'une dépendance applicative ou d'une migration de plateforme sans cesse reportée, vous devez élaborer un plan. TuxCare propose un service de support à cycle de vie illimité (ELS) spécialement conçu pour PostgreSQL 13 après la fin de vie (EOL), ce qui signifie que votre déploiement continue de bénéficier de correctifs de sécurité pendant que vous procédez à la mise à niveau.
Menace n° 4 : le cryptojacking par l'exécution de code à distance
Dès qu’un pirate obtient un accès RCE sur un hôte PostgreSQL, le minage de cryptomonnaies est la voie la plus facile. Le risque est faible pour lui : pas d’exfiltration de données à gérer, pas de négociation avec les auteurs de ransomware à mener… Il s’agit simplement de puissance de calcul qu’il utilise gratuitement. Des scanners automatisés recherchent les instances exposées sur le port 5432, effectuent des attaques par force brute contre le superutilisateur « postgres » et, en cas de succès, déploient un mineur via COPY ... FROM PROGRAM ou PL/Python.
La plupart des équipes s'en rendent compte de la même manière : le processeur de l'hôte de la base de données tourne à 100 %, les requêtes s'enlèvent à pas de tortue, jusqu'à ce que quelqu'un finisse par ouvrir htop et constate la présence d'un processus qu'il ne reconnaît pas. À ce stade, l'attaquant est généralement déjà présent depuis plusieurs jours.
Ces mesures de protection recoupent largement les principes généraux de renforcement de la sécurité : ne pas exposer le port 5432 à Internet, imposer une authentification forte sur le postgres les rôles « superutilisateur » et autres rôles privilégiés, et verrouiller les fonctionnalités dont les attaquants abusent pour exécuter du code – restreindre COPY ... FROM PROGRAM (déjà réservé aux superutilisateurs et aux rôles autorisés pg_execute_server_program) et évitez d'installer des langages procéduraux non fiables tels que PL/Python, sauf si vous en avez réellement besoin.
Menace n° 5 : attaques de la chaîne d'approvisionnement via les dépendances
L'un des risques les plus graves liés à PostgreSQL n'est pas un Vulnérabilité de PostgreSQL Pas du tout : c'est la couche applicative. Des paquets npm malveillants ou compromis ont été surpris en train de faire exactement ce à quoi on pouvait s'attendre : lire les variables d'environnement, extraire des données .pgpass fichiers, et en exfiltrant discrètement les chaînes de connexion. Une fois ces identifiants divulgués, c'est votre base de données qui est visée, quel que soit le niveau de sécurisation de PostgreSQL lui-même.
PostgreSQL ne peut pas à lui seul offrir de protection contre ce type d'attaque : les identifiants ont été volés avant même d'atteindre la base de données. La solution réside dans la manière dont vous gérez la frontière entre le code de l'application et l'accès à la base de données : renouvelez régulièrement les identifiants, limitez les droits de chaque utilisateur de la base de données au strict minimum dont il a réellement besoin, et utilisez des identifiants à durée de vie limitée ou un système de gestion des secrets lorsque votre infrastructure le permet.
Pour approfondir la question des dépendances dans ce contexte, le guide de TuxCare consacré aux dépendances transitives et à leurs SBOM constitue un excellent point de départ.
Principales fonctionnalités de sécurité de PostgreSQL
PostgreSQL vous fournit les éléments de base nécessaires pour mettre en place un modèle de sécurité solide. Vous trouverez ci-dessous les fonctionnalités qui comptent réellement dans la pratique, ainsi que les détails de configuration qui font la différence entre une solution « techniquement possible » et une solution « qui fonctionne réellement ».
Fonctionnalité n° 1 : Méthodes d'authentification
PostgreSQL prend en charge une longue liste de méthodes d'authentification, mais celles qui méritent d'être utilisées en 2026 sont SCRAM-SHA-256, l'authentification par certificat et l'intégration avec un fournisseur d'identité externe via LDAP ou Kerberos.
SCRAM-SHA-256 est devenu la valeur par défaut pour password_encryption dans PostgreSQL 14 — cette fonctionnalité était prise en charge et recommandée depuis PostgreSQL 10 — en remplacement de l'algorithme MD5, dont les failles sont bien documentées. Mais voici un point qui passe souvent inaperçu : la mise à niveau de votre version de PostgreSQL n'entraîne pas automatiquement la migration de vos hachages de mots de passe existants.
Les utilisateurs qui ont défini leur mot de passe avant le changement continuent d'utiliser MD5 en arrière-plan jusqu'à ce qu'ils le réinitialisent. Vous devez définir explicitement password_encryption = scram-sha-256 dans postgresql.conf et imposer une rotation des mots de passe – mais même dans ce cas, n’oubliez pas que les mots de passe existants restent hachés en MD5 jusqu’à ce que chaque utilisateur les réinitialise. Une fois qu’un mot de passe est stocké sous forme de hachage SCRAM, un md5 ligne dans pg_hba.conf l'authentifiera automatiquement via SCRAM ; le risque qui subsiste concerne donc les mots de passe non réinitialisés et une configuration peu claire, et non pas le fait que la ligne d'authentification s'exécute en arrière-plan.
L'authentification par certificat est l'option la plus sûre pour les connexions entre services. Chaque client présente un certificat signé par votre autorité de certification (CA), et PostgreSQL le vérifie avant d'accepter la connexion. Aucun mot de passe ne peut faire l'objet d'une fuite, et aucun secret n'est partagé via des variables d'environnement.
Pour les utilisateurs humains, privilégiez l'intégration LDAP ou Kerberos afin de centraliser la gestion des comptes et la désactivation des comptes. Un utilisateur qui quitte l'entreprise doit perdre automatiquement l'accès à la base de données le jour même.
Fonctionnalité n° 2 : Contrôle d'accès basé sur les rôles
Le système de rôles et de privilèges de PostgreSQL est l'un des plus granulaires parmi toutes les bases de données open source. Vous pouvez accorder des privilèges sur des bases de données, des schémas, des tables, des colonnes, des séquences, des fonctions, etc. Vous pouvez également créer des hiérarchies de rôles, dans lesquelles un rôle hérite des privilèges d'un autre.
Le principe essentiel est le suivant : chaque rôle dispose des privilèges minimaux dont il a besoin, et rien de plus. Concrètement, cela signifie que les rôles d'application ne peuvent effectuer que des opérations SELECT, INSERT, UPDATE et DELETE sur les tables spécifiques qu'ils utilisent – ils ne disposent pas de « TOUS LES PRIVILÈGES » sur l'ensemble du schéma, et encore moins des droits de superutilisateur.
Regardons les choses en face : la plupart des équipes qui pensent appliquer le principe du « privilège minimal » ne le font en réalité pas. L'application se connecte via un rôle doté d'un accès étendu « pour simplifier les choses », et personne ne s'en occupe car refaire la matrice des privilèges est fastidieux. Cela vaut pourtant la peine de le faire.
Fonctionnalité n° 3 : Sécurité au niveau des lignes
La sécurité au niveau des lignes (RLS) vous permet d'associer des règles aux tables afin de filtrer les lignes qu'un rôle donné peut consulter ou modifier. C'est l'outil idéal pour les applications multi-locataires, dans lesquelles une seule base de données contient les données de nombreux clients et où vous devez avoir la garantie absolue que le client A ne pourra jamais voir les lignes du client B.
Ce qui confère à RLS une réelle valeur ajoutée, c’est que la garantie réside dans la base de données, et non dans l’application. Le filtrage au niveau de la couche applicative peut être négligé, contourné par une requête ne comportant pas la clause WHERE appropriée, ou silencieusement contourné par une abstraction ORM. RLS applique la politique côté serveur pour les rôles qui y sont soumis : une requête comportant un bug qui oublie de filtrer par tenant_id il n'y aura toujours pas de fuite de lignes, car PostgreSQL applique cette politique avant de renvoyer les résultats. La piège qui prend souvent les utilisateurs au dépourvu : les propriétaires de tables, les superutilisateurs et les rôles disposant de BYPASSRLS Ces règles sont ignorées par défaut ; assurez-vous donc que le rôle de votre application ne correspond à aucune d'entre elles, et utilisez FORCE ROW LEVEL SECURITY là où ça compte.
Le problème, c'est que le RLS peut être difficile à déboguer et qu'il a des répercussions sur les performances qu'il faut tester. Les règles sont évaluées pour chaque ligne, et des règles complexes appliquées à de grandes tables peuvent nuire aux plans de requête. Testez-le sous une charge réaliste avant de vous y fier.
Fonctionnalité n° 4 : Chiffrement SSL/TLS
Les données transmises entre le client et le serveur doivent être chiffrées. PostgreSQL prend en charge le protocole TLS, mais vous devez le configurer : il n'est pas activé par défaut dans la plupart des installations.
Deux paramètres à configurer correctement : « ssl = on » dans le fichier postgresql.conf, et des entrées « hostssl » (et non « host ») dans le fichier pg_hba.conf pour toute connexion devant être chiffrée. Sans cette exigence « hostssl », les clients peuvent toujours se connecter en texte clair s'ils le souhaitent.
Pour la vérification du client, définissez `sslmode=verify-full` côté client. Cela oblige le client à vérifier à la fois le certificat du serveur et la correspondance avec le nom d'hôte, ce qui permet de contrer les attaques de type « homme au milieu ». sslmode=require à lui seul ne suffit pas : il crypte la connexion, mais ne vérifie pas l'identité du serveur comme le ferait verify-ca ou verify-full c'est le cas, de sorte qu'un attaquant au niveau du réseau peut toujours se faire passer pour le serveur.Fonctionnalité n° 5 : Journalisation des audits et pgAudit
La journalisation native de PostgreSQL fournit de nombreuses informations, mais pour disposer de pistes d’audit conformes aux normes, il est recommandé d’utiliser l’extension pgaudit. Celle-ci enregistre des entrées structurées pour chaque instruction exécutée, en précisant le rôle de l’utilisateur, les objets concernés et les paramètres utilisés. Elle facilite considérablement la production de preuves conformes aux normes SOC 2, HIPAA et PCI DSS, au prix toutefois d’un volume de journaux important si son champ d’application est trop large.
Une approche pratique : limitez le paramètre `pgaudit.log` de pgAudit aux catégories dont vous avez réellement besoin – généralement `ddl`, `role` et `read` pour les tables sensibles – plutôt que d’activer la journalisation généralisée. La journalisation complète des instructions sur une base de données très sollicitée génère des volumes que personne ne lit réellement, et le stockage des journaux devient un véritable casse-tête opérationnel. Journalisez ce dont vos auditeurs ont besoin, acheminez ces données vers votre SIEM, et résistez à la tentation de tout journaliser « au cas où ».
Bonnes pratiques pour renforcer la sécurité de PostgreSQL
Le renforcement de la sécurité n'est pas un projet ponctuel. Il s'agit d'une discipline opérationnelle permanente, et les équipes qui la mettent en œuvre avec succès disposent généralement de systèmes qui automatisent les tâches fastidieuses. Les pratiques présentées ci-dessous illustrent concrètement cette discipline.
1. Appliquer les correctifs sans tarder
Le facteur qui distingue le plus systématiquement les déploiements PostgreSQL compromis des déploiements sécurisés est le délai d'application des correctifs, c'est-à-dire l'intervalle entre la divulgation d'une vulnérabilité CVE et le moment où le correctif est effectivement déployé en production. C'est pendant cette fenêtre que les attaquants agissent, et plus elle est large, plus votre exposition au risque est importante.
Appliquez rapidement les mises à jour de version mineure : elles ne contiennent que des correctifs de sécurité et des corrections de bogues, et ne nécessitent rien de plus qu’un redémarrage du service. Le risque lié à leur application est presque toujours inférieur à celui de ne pas les appliquer. Les équipes qui prennent du retard sont généralement celles qui attendent une fenêtre de maintenance officielle pour justifier un redémarrage de deux minutes.
2. Verrouillage pg_hba.conf et l'accès réseau
Considérez le fichier pg_hba.conf comme un ensemble de règles de pare-feu. Documentez chaque entrée. Revoyez-le régulièrement – une fois par trimestre est une fréquence raisonnable. Supprimez tout ce qui n'est pas activement utilisé.
Règles spécifiques :
- Ne pas utiliser
trustauthentification pour toute connexion TCP, y compris les connexions en boucle fermée ; pour les connexions locales via des sockets du domaine Unix, privilégierpeerL'identité de la base de données est donc liée à l'utilisateur du système d'exploitation. - Utilisez « hostssl » à la place de « host » pour toute connexion non locale.
- Limitez les adresses IP sources à des plages CIDR spécifiques. 0.0.0.0/0 n'est pratiquement jamais la bonne solution.
- Configurez PostgreSQL pour qu'il se connecte à des adresses spécifiques à l'aide de `listen_addresses`, et non à *.
Si vous exécutez votre application dans un VPC cloud, associez-y des groupes de sécurité afin que la base de données ne soit accessible qu’à partir de votre couche applicative. Défense en profondeur : le fichier pg_hba.conf constitue un niveau de protection, tandis que les listes de contrôle d’accès réseau (ACL) en constituent un autre.
3. Vérifier régulièrement les rôles, les privilèges et les extensions
La prolifération des rôles touche toutes les bases de données qui existent depuis longtemps. Quelqu’un a besoin d’un accès temporaire en tant que super-utilisateur pour effectuer une migration. Cette autorisation n’est jamais révoquée. Multipliez cela par plusieurs années et vous obtenez un graphe de privilèges que personne ne comprend pleinement.
Effectuer un bilan trimestriel :
- Répertoriez tous les rôles et leurs privilèges à l'aide de la commande \du+ et de la vue `information_schema.role_table_grants`.
- Identifiez les rôles pour lesquels aucune connexion n'a été enregistrée au cours des 90 derniers jours. Désactivez-les ou, à tout le moins, exigez une justification pour les conserver.
- Répertoriez les extensions installées à l'aide de la requête SELECT * FROM pg_extension. Toute extension qui n'est pas activement utilisée constitue une surface d'exposition aux risques sans apporter aucun avantage.
- Vérifiez s'il existe des rôles dotés des privilèges SUPERUSER, CREATEDB ou CREATEROLE. L'existence de chacun d'entre eux doit être justifiée par une raison clairement documentée.
L'objectif n'est pas la perfection. Il s'agit de s'assurer que votre modèle de privilèges reflète vos besoins réels d'aujourd'hui, et non ceux que vous aviez il y a deux ans.
Outils permettant de renforcer la sécurité de PostgreSQL
Les outils ci-dessous comblent les principales lacunes d'un déploiement PostgreSQL par défaut : application de correctifs, audit, analyse de sécurité et rapports de conformité. Aucun outil ne permet à lui seul de bien gérer tous ces aspects ; c'est pourquoi la plupart des équipes finissent par en utiliser plusieurs en combinaison.
Outil n° 1 : TuxCare
PostgreSQL 13 a atteint sa fin de vie en novembre 2025, et PostgreSQL 12 avant lui, en novembre 2024. Ces deux versions fonctionnent désormais sans correctifs de sécurité en amont, ce qui signifie qu’aucun correctif ne sera fourni par la communauté, quelle que soit la gravité du problème, tant que vous n’aurez pas effectué la mise à niveau.
Pour les équipes qui ne peuvent pas effectuer de mise à niveau immédiatement – en raison de dépendances applicatives, d’intégrations tierces ou de la complexité de la migration –, le service « Endless Lifecycle Support » de TuxCare pour PostgreSQL 13 permet à ces déploiements de continuer à bénéficier des correctifs de sécurité pendant la planification d’une migration en bonne et due forme. C’est une approche nettement différente de celle qui consiste à laisser le système sans correctifs en espérant qu’aucun incident critique ne survienne avant que vous ne soyez prêt.
L'intérêt pratique de l'ELS est évident : une mise à jour majeure précipitée, sous la pression d'une vulnérabilité CVE critique, est exactement le genre de situation qui provoque des interruptions de service. L'ELS vous permet de gagner du temps pour effectuer la migration dans les règles de l'art.
Outil n° 2 : pgAudit
pgAudit est l'extension de référence pour la journalisation d'audit conforme aux normes de conformité dans PostgreSQL. Elle génère des entrées de journal structurées qui correspondent parfaitement aux attentes des auditeurs SOC 2, HIPAA et PCI DSS. La configuration est simple, mais le volume des journaux peut augmenter très rapidement : il est donc recommandé de prévoir un espace de stockage et un transfert vers un système SIEM plutôt que de laisser les journaux s'accumuler localement.
Il est gratuit, régulièrement mis à jour et largement déployé. En contrepartie, il se contente d'enregistrer les journaux, sans plus. Vous aurez tout de même besoin d'un système distinct pour analyser ces journaux et signaler les anomalies. Associez-le à la solution SIEM que votre équipe de sécurité utilise déjà.
Outil n° 3 : pg_stat_statements + exportateurs Prometheus
Bien qu'il ne s'agisse pas d'un outil de sécurité à proprement parler, la combinaison de pg_stat_statements et d'un exportateur Prometheus (tel que postgres_exporter) vous offre la visibilité au niveau des requêtes nécessaire pour détecter les schémas d'abus. Des pics soudains dans les instructions COPY, des requêtes sur les catalogues système émanant de rôles d'application ou un nombre inhabituel de connexions provenant de nouvelles adresses IP sont autant de signaux justifiant le déclenchement d'une alerte.
C'est la version économique d'une solution de surveillance de l'activité des bases de données. Elle n'est pas aussi aboutie qu'un outil DAM dédié, mais elle est gratuite, légère et suffisamment performante pour la plupart des équipes qui ne peuvent pas se permettre les tarifs destinés aux grandes entreprises.
Outil n° 4 : Scanners de vulnérabilités
Dans les environnements où PostgreSQL s'exécute sur des hôtes Linux que vous contrôlez, les scanners de vulnérabilité détectent les CVE connues dans vos binaires PostgreSQL et leurs dépendances. La plupart des scanners vous indiquent les vulnérabilités, mais peinent à valider les corrections : ils signalent une CVE comme étant toujours ouverte même après qu'elle a été corrigée via un backport, ce qui génère du bruit et sape la confiance dans les résultats.
Renforcez la sécurité de PostgreSQL avec TuxCare
La sécurité de PostgreSQL n’est pas un projet avec une date d’achèvement : c’est une discipline opérationnelle permanente. Les CVE ne cessent d’apparaître, les configurations dérivent, les rôles accumulent des autorisations qu’ils ne devraient pas avoir, et les dates de fin de vie (EOL) arrivent, que vous y soyez prêt ou non. Les équipes qui gardent une longueur d’avance ne font rien d’héroïque. Elles ont mis en place des systèmes qui rendent le travail de sécurité courant visible, reproductible et difficile à négliger – de sorte que la prochaine faille CVE ou date de fin de vie devient une tâche planifiée, et non plus une situation d’urgence.
Pour les équipes utilisant PostgreSQL 13 au-delà de sa fin de vie (EOL) prévue en novembre 2025, le service « Endless Lifecycle Support » de TuxCare garantit la fourniture continue de correctifs de sécurité pendant que la migration est planifiée selon un calendrier réaliste – et non dans l'urgence, sous la pression d'une prochaine vulnérabilité CVE critique.
FAQ
Non. PostgreSQL est livré avec des paramètres par défaut raisonnables, mais plusieurs réglages essentiels en environnement de production – TLS, règles restrictives dans le fichier pg_hba.conf, méthodes d'authentification robustes, journalisation d'audit – nécessitent une configuration explicite. Une installation par défaut sur un serveur accessible au public n'est pas une installation sécurisée. Veillez toujours à renforcer la sécurité avant que le serveur ne soit exposé au trafic réel.
Laisser l'authentification par confiance dans le fichier pg_hba.conf après le débogage. C'est la cause la plus fréquente de bases de données rendues publiques par inadvertance. Vient juste après : l'octroi de trop de privilèges aux rôles d'application, car la définition d'un modèle de privilèges précis est fastidieuse.
PostgreSQL prend en charge le protocole TLS pour les données en transit (configuré via les entrées `ssl = on` et `hostssl` dans le fichier `pg_hba.conf`) et propose pgcrypto pour le chiffrement au niveau des colonnes des données au repos. Le chiffrement complet et transparent du disque est géré au niveau du système de fichiers ou du volume, et non par PostgreSQL lui-même.
Consultez la page officielle consacrée à la sécurité de PostgreSQL à l'adresse postgresql.org/support/security, lancez un scan de vulnérabilité sur vos binaires et inscrivez-vous à la liste de diffusion pgsql-announce. Toute version antérieure à la dernière version mineure de votre branche de version majeure ne bénéficie pas des correctifs.
Les mises à jour mineures (par exemple, de la version 15.9 à la version 15.11) sont généralement sans risque et ne comportent que des correctifs de sécurité et des corrections de bogues. Les mises à jour majeures (par exemple, de la version 14 à la version 16) impliquent des changements incompatibles et nécessitent des tests approfondis. Si vous utilisez une version majeure en fin de vie (EOL) et qu’une mise à jour majeure n’est pas envisageable, le support étendu constitue une alternative pratique.

