Bilan du module

Nous souhaitons un serveur qui permettra les connexions distantes via un utilisateur qui aura accès à certaines bases de données. On précisera les modalités tout au long de l'exercice.

NB : il est conseillé de réaliser les manipulations de l'exercice sur votre machine pour faciliter l'apprentissage.

Accès au compte postgres

Pour pouvoir faire nos manipulations, il va être nécessaire d'avoir les droits administrateur PostgreSQL. Il faut donc se connecter à l'utilisateur postgres.

Question

Comment faire ?

Solution

1
sudo -i -u postgres

Création d'un utilisateur dit "publicuser"

Les connexions distantes se feront via un utilisateur nommé publicuser.

Question

Comment créer un utilisateur nommé publicuser ?

Solution

1
createuser publicuser

On crée ainsi un utilisateur public nommé publicuser.

Attention, on n'a pas besoin d'avoir un utilisateur Unix du même nom de créer !

Création des bases de données

On souhaite avoir 3 bases de données dans notre base : pubdb, testdb et confidential.

La base publicdb aura pour owner publicuser.

Question

Comment créer les bases de données ?

Solution

A entrer dans le shell Linux
1
createdb pubdb
2
createdb testdb
3
createdb confidential

Question

Comment faire que l'utilisateur public devienne propriétaire de pubdb ?

Solution

Tout d'abord, on doit entrer dans le terminal de commandes PostgreSQL via la commande suivante :

1
psql --username=postgres --dbname=postgres

Ensuite, on entre la commande SQL suivante :

1
ALTER DATABASE pubdb OWNER TO publicuser;
Remarque

Ne pas oublier de quitter le terminal de commandes PostgreSQL avec un \q

Édition du pg_hba.conf

On souhaite une authentification selon les conditions suivantes :

  • Une connexion à l'utilisateur postgres uniquement possible en local uniquement pour l'utilisateur Unix nommé postgres

  • Des connexions locales acceptées sans condition à la base confidential via l'utilisateur publicuser

  • Des connexions distantes possibles sans condition seulement aux bases de données publicdb et test via l'utilisateur publicuser

Question

A quoi ressemblera le fichier ?

Solution

1
# TYPE  DATABASE       USER        CIDR-ADDRESS          METHOD
2
local   all            postgres                          peer
3
local   confidential   publicuser                        trust
4
host    pubdb,test     publicuser  0.0.0.0/0             trust

Question

Quelle commande exécuter pour que le serveur prenne en compte les modifications ?

Solution

1
sudo systemctl reload postgresql.

On pourra dès lors tester notre configuration.

Premier test

On entre la commande suivante

1
psql --username=public --dbname=pubdb

Question

Sans l'exécuter dans votre propre shell, que pensez qu'il va arriver ?

Solution

L'authentification n'aboutira pas car en connexion locale vous ne pouvez pas accéder à la base de données pubdb via l'utilisateur public.

Question

La connexion va-t-elle être réussie ?

Solution

Oui, elle le sera. Voyez par vous même...