Architecture Logicielle des Systèmes Informatiques

Julien Legrand

BTS Informatique de gestion Lycée Dominique Villars

Ce document est placé sous licence Gnu Free Documentation Licence


Table des matières

Présentation des systèmes de gestion de bases de données relationnelles.
Qu'est-ce qu'un SGBDR ?
Bien commencer avec PostgreSQL.
Installation de PostgreSQL sous Ubuntu.
Les premiers paramétrages
Le super administrateur par défaut
La console PostgreSQL
Le nouveau super administrateur.
Les règles de sécurité.
Création d'un nouveau super administrateur.
Gestion des comptes PostgreSQL
La hiérarchie des roles.
Le super administrateur.
Les administrateurs sémantiques.
Les comptes d'exploitation.
Création des roles.
Suppression des roles.
Gestion des bases de données PostgreSQL

Présentation des systèmes de gestion de bases de données relationnelles.


Table des matières

Qu'est-ce qu'un SGBDR ?

Qu'est-ce qu'un SGBDR ?

Un SGBDR est une application, généralement serveur, ou démon, permettant la gestion des bases de données relationnelles telles que définies par le langage SQL. Les SGBDR utilisent généralement les langages du SQL :

  • LMD : langage de manipulation des données.
  • LDD : langage de définition des données.
  • LCD : langage de contrôle des données.
  • LCT : langage de contrôle des transactions.

Il existe une multitude de SGBDR, fonctionnant sur les différentes plateformes informatiques connues (Windows, Linux, Unix, MacOS, ...), tels qu'Access, SQLServeur, Oracle, MySQL, DBase, PostgreSQL, ...

Bien commencer avec PostgreSQL.


Installation de PostgreSQL sous Ubuntu.

Cette partie ne concerne qu'Ubuntu, validée pour la version 8.04 Hardy Heron. Pour les autres distributions, veuillez vous reporter aux documentation corespondantes.

Sous Ubuntu, n'hésitez pas à vous reporter à la documentation dosponible à l'adresse doc.ubuntu-fr.org/postgresql

Vous devez installer le paquet postgresql-8.3 qui installe également les dépendances :

  • libpq5
  • postgresql-client-8.3
  • postgresql-client-common
  • postgresql-common

Les premiers paramétrages

Le super administrateur par défaut

Par défaut, un login a été créé dans le système hôte et dans PostgreSQL, correspondant au super administrateur, dont le nom est postgres.

Ce super administrateur n'a pas de mot de passe. Cela signifie que personne ne peut se connecter directement grâce à ce login, ce qui est un gain de sécurité.

Mais c'est le seul à être capable d'administrer le serveur PostgreSQL. Il faut donc se connecter sous ce login, ce qui peut se faire avec la commande : $ sudo -s -u postgres

La console PostgreSQL

Un client en mode console a été installé en même temps que le serveur PostgreSQL. Il permet d'adminstrer, sans interface graphique qui serait couteuse en mémoire, le serveur PostgreSQL, ainsi que ses bases de données et ses utilisateurs.

Pour se connecter au serveur PostgreSQL en tant que postgres, il faut être logué dans le système hôte sous le login postgres, puis : postgres $ psql

Le prompt de la console psql se présente ainsi : postgres =#

C'est ici que les commandes SQL pourront être exécutées, toutes devant se terminer par un ;

Une commande peut être saisie sur plusieurs lignes, en utilisant la touche Entrée. Dans ce cas, le prompt de psql devient postgres -#. La commande ne sera exécuté que lorsqu'elle sera terminée, c'est-à-dire lorsque l'utilisateur saisira un ;

En parallèle des commandes SQL, il est posisble d'accéder à des commandes propres à psq :

  • Pour obtenir de l'aide : \?
  • Pour afficher la liste des utilisateurs : \du (pour display user)
  • Pour afficher la liste des base de données créées : \l
  • Pour afficher la liste des tables de la base de données en cours : \dt
  • Pour ressortir de la console psql : \q

Le nouveau super administrateur.

Les règles de sécurité.

Pour sécuriser au mieux l'accès au serveur, il est conseillé de créer un compte qui sera le nouveau super administrateur du moteur. Ce compte ayant un nom plus personnel que postgres qui est bien connu des hackers, il sera moins facilement trouvé lors d'une attaque en force brute.

Il existe deux types de comptes : les comptes du système hôte et les comptes PostgreSQL. Ces comptes sont indépendants (un utilisateur peut se loguer au système avec un login et à PostgreSQL avec un autre). Toutefois, cela suppose une gestion du mode d'authentification plus fine, qui sera étudiée plus tard. Le parallèle entre les deux login est donc pour l'instant conseillé. Par défaut, on ne peut se connecter à PostgreSQL qu'avec son login système, qui doit exister dans PostgreSQL.

Il faut préférer la documentation officielle à l'adresse http://docs.postgresql.fr/8.3/.

PostgreSQL gère similairement les utilisateurs et les groupes d'utilisateurs, à la différence qu'un utilisateur peut se loguer contrairement à un groupe. On parle donc de rôles.

Création d'un nouveau super administrateur.

Ce nouveau super administrateur aura tous les droits et remplacement postgres dans l'administration du serveur PostgreSQL. Il faut donc s'assurer qu'il aura les droits suivants : super utilisateur, créateur de rôles, créateur de bases de données. Il aura également le droit de se loguer.

Par défaut, il est souhaitable qu'il porte le même nom que l'administrateur du système hôte. cela facilite son utilisation, sans ouvrir de faille de sécurité, en partant du fait que l'administrateur dud système hôte est déjà sécurisé (login peu commn, mot de passe complexe, interdit en ssh, ...).

Pour créer ce super administrateur, il faut :

  • Lancer la console psql en tant que postgres : postgres $ psql
  • Exécuter la requête de céation d'un utilisateur, avec les droits précités : postgres =# create role <loginSuperAdministrateur> superuser, createdb, createrole, login ;

Par défaut, un utilisateur se connecte sur la base de données dont le nom correspond à son login. Il faut donc créer une base de données pour votre super administrateur : postgres =# create database <nomRoleSuperAdministrateur> owner <nomRoleSuperAdministrateur> ;

A partir de ce moment, l'utilisateur postgres ne sert plus à rien et peut être temporairement oublié.

Gestion des comptes PostgreSQL


La hiérarchie des roles.

Il existe principalement trois types de comptes sous PostgreSQL :

  • le super administrateur
  • les administrateurs sémantiques
  • les comptes d'exploitation

Le super administrateur.

Il ne devrait y en avoir qu'un. C'est lui qui crée les autres rôles, et qui, au besoin, crée des bases de données.

Les administrateurs sémantiques.

Ceux sont eux qui sont responsables du développement d'une base de données : ils créent les bases de données, les tables qui y sont stockées et définissent les droits des utilisateurs, sur les base de données qu'il gère et sur les tables.

Chaque administrateur sémantique peut gérer une ou plusieurs bases de données. Chacun possède sa propre base de données, ce qui lui permet de se loguer à psql.

Les administrateurs sémantiques sont créés avec les options : createdb, login

Les comptes d'exploitation.

Ceux sont ceux qui vont interroger ou enrichir les bases de données, dans la limite des droits qui leurs sont accordés.

Les comptes d'exploitations n'ont aucun droit d'administration et n'ont aucune raison de posséder leur propre base de données.

Les comptes d'exploitation sont créés avec l'option : login

Création des roles.

La création des rôles se fait à l'aide de la commande :=# create role <nomRole> <options>. La liste des options est facilement trouvable dans la documentation officielle (ici).

Par défaut, les rôles n'ont pas de mot de passe, lacune qu'il sera indispensable de combler lorsque le serveur PostgreSQL sera ouvert aux connexions extérieures.

Suppression des roles.

La suppression d'un role est déifnitive et psql ne demande aucune confirmation.

La commande permettant la suppression d'un rôle est :=# drop <nomRole>

Un role ne peut pas être supprimé tant qu'il est propriétaire d'au moins une base de données.

Gestion des bases de données PostgreSQL