Aller au contenu

SSL/TLS pour PostgreSQL

L'add-on chiffrement en transit du Stack Harbor PaaS pour PostgreSQL — installation, emplacement des certificats, configuration Pgpool-II et connexion d'un client en SSL.

Les environnements PostgreSQL sur le Stack Harbor PaaS supportent un add-on SSL/TLS intégré qui active le chiffrement en transit entre client et base de données. Après installation, les données sont chiffrées avant de quitter le client, les extrémités s’authentifient mutuellement et la base de données vérifie l’intégrité de chaque paquet à l’arrivée — sans changement de code de votre côté.

L’add-on s’installe sur les nœuds PostgreSQL et, dans les topologies en grappe, sur les nœuds répartiteurs Pgpool-II.

Installer l’add-on

  1. Dans le tableau de bord, ouvrez le palier PostgreSQL.
  2. Allez à Add-Ons.
  3. Cliquez Install sur la carte SSL/TLS Encryption.
  4. Sélectionnez l’environnement cible et les groupes de nœuds. Pour les grappes avec Pgpool-II, sélectionnez le palier PostgreSQL et le palier Pgpool-II.
  5. Cliquez Install.

La reconfiguration prend environ une minute. PostgreSQL est redémarré une fois avec la nouvelle configuration TLS.

Emplacement des certificats

  • Les certificats sont générés par l’utilitaire /usr/local/sbin/selfcertgen.
  • Ils sont auto-signés, émis par nom d’hôte de nœud. Au moment de vous authentifier, utilisez les certificats du nœud auquel vous vous connectez.
  • Les certificats serveur et client sont stockés sous /var/lib/stackharbor/keys/SSL-TLS/, avec deux sous-dossiers :
    • server/ — certificats serveur pour la terminaison TLS sur PostgreSQL
    • client/ — certificats client téléchargeables pour TLS mutuel (nœuds PostgreSQL seulement — Pgpool-II n’expose pas de certificats client)

Le raccourci keys dans le gestionnaire de fichiers pointe au même endroit.

Changements de configuration PostgreSQL

L’installation de l’add-on entraîne quelques changements dans la configuration PostgreSQL :

  • L’algorithme d’authentification passe de md5 à scram-sha-256 — défaut recommandé par le projet PostgreSQL et requis pour SSL avec Pgpool-II en grappe.
  • Si md5 était la valeur par défaut globale avant, elle est remplacée partout dans postgresql.conf.
  • postgresql.conf reçoit les chemins TLS :
ssl_cert_file = '/var/lib/stackharbor/keys/SSL-TLS/server/server.crt'
ssl_ca_file   = '/var/lib/stackharbor/keys/SSL-TLS/server/root.crt'
ssl_key_file  = '/var/lib/stackharbor/keys/SSL-TLS/server/server.key'
ssl           = on
  • Les mots de passe des utilisateurs existants doivent être re-hashés sous le nouvel algorithme. L’utilisateur webadmin par défaut est réinitialisé automatiquement avec le même mot de passe qu’avant. Les utilisateurs personnalisés doivent être réinitialisés manuellement avec ALTER ROLE.
  • pg_hba.conf est mis à jour pour utiliser hostssl au lieu de host :
hostssl all all 0.0.0.0/0 scram-sha-256
  • Pour activer l’authentification par certificat client en plus du mot de passe, changez la méthode d’auth en cert dans pg_hba.conf.

Changements Pgpool-II

Dans les topologies en grappe avec Pgpool-II, l’add-on active SSL dans /etc/pgpool-II/pgpool.conf :

ssl = on
enable_pool_hba = on
ssl_key = '/var/lib/stackharbor/keys/SSL-TLS/server/server.key'
ssl_cert = '/var/lib/stackharbor/keys/SSL-TLS/server/server.crt'
pool_passwd = 'pool_passwd'

hostssl est utilisé dans /etc/pgpool-II/pool_hba.conf :

hostssl all all 0.0.0.0/0 scram-sha-256

Les entrées par défaut webadmin et pgpool sont ajoutées automatiquement à /etc/pgpool-II/pool_passwd. Pour les utilisateurs personnalisés, ajoutez les entrées avec l’utilitaire pg_enc :

pg_enc -m -f /etc/pgpool-II/pgpool.conf -u $USERNAME $PASSWORD

Réémettre et désinstaller

L’add-on ajoute deux actions sous l’onglet Add-Ons du palier concerné :

  • Re-issue certificates — régénère les certificats SSL (utile après compromission suspectée ou suppression accidentelle).
  • Configuration Tutorial — lien vers la référence in-platform pour établir une connexion SSL à PostgreSQL.

Uninstall dans le menu débordement de l’add-on retire l’add-on, la configuration personnalisée et les certificats générés.

Connexion d’un client en SSL

Le chiffrement côté serveur est actif immédiatement après installation. Connectez-vous via psql (ou tout client libpq) avec les identifiants reçus par courriel à la création :

psql -U <user> <dbname> -h <host> -p <port> -W

Pour passer en TLS mutuel, téléchargez les certificats client depuis /var/lib/stackharbor/keys/SSL-TLS/client/ sur le nœud PostgreSQL et fournissez-les via les paramètres libpq ou les variables d’environnement (PGSSLCERT, PGSSLKEY, PGSSLROOTCERT).

Voir aussi