8.6. Sécuriser PostgreSQL en limitant l'accès aux utilisateurs locaux authentifiés

PostgreSQL est un système de gestion de base de données (SGBD) objet-relationnel. Dans Red Hat Enterprise Linux, PostgreSQL est fourni par le paquetage postgresql-server.

Vous pouvez réduire les risques d'attaques en configurant l'authentification du client. Le fichier de configuration pg_hba.conf stocké dans le répertoire de données du cluster de bases de données contrôle l'authentification du client. Suivez la procédure pour configurer PostgreSQL pour l'authentification basée sur l'hôte.

Procédure

  1. Installer PostgreSQL :

    # yum install postgresql-server
  2. Initialiser une zone de stockage de la base de données à l'aide de l'une des options suivantes :

    1. Utilisation de l'utilitaire initdb:

      $ initdb -D /home/postgresql/db1/

      La commande initdb avec l'option -D crée le répertoire que vous spécifiez s'il n'existe pas déjà, par exemple /home/postgresql/db1/. Ce répertoire contient alors toutes les données stockées dans la base de données ainsi que le fichier de configuration de l'authentification du client.

    2. Utilisation du script postgresql-setup:

      $ postgresql-setup --initdb

      Par défaut, le script utilise le répertoire /var/lib/pgsql/data/. Ce script aide les administrateurs système à gérer les bases de données en cluster.

  3. Pour permettre à n'importe quel utilisateur local authentifié d'accéder à n'importe quelle base de données avec son nom d'utilisateur, modifiez la ligne suivante dans le fichier pg_hba.conf:

    local   all             all                                     trust

    Cela peut s'avérer problématique lorsque vous utilisez des applications en couches qui créent des utilisateurs de base de données et aucun utilisateur local. Si vous ne souhaitez pas contrôler explicitement tous les noms d'utilisateur du système, supprimez la ligne local du fichier pg_hba.conf.

  4. Redémarrez la base de données pour appliquer les modifications :

    # systemctl restart postgresql

    La commande précédente met à jour la base de données et vérifie également la syntaxe du fichier de configuration.