Gestion des Utilisateurs dans PostgreSQL¶
Dans PostgreSQL, les termes “utilisateur” et “rôle”
sont souvent utilisés de manière interchangeable, mais il existe des différences
subtiles. Un user est essentiellement un rôle avec la capacité de se
connecter (l’option LOGIN), tandis qu’un role sans cette capacité est par
défaut créé avec l’option NOLOGIN. Cette distinction permet de créer des rôles
qui servent uniquement à regrouper des privilèges sans permettre la connexion
directe à la base de données.
1. Création et Gestion des Comptes Utilisateurs¶
1.1. Création d’un Utilisateur¶
Pour créer un nouvel utilisateur dans PostgreSQL, vous utilisez la
commande CREATE USER ou CREATE ROLE avec l’option LOGIN. Voici un exemple
de création d’un utilisateur avec un mot de passe :
Exemple :
1.2. Modification d’un Utilisateur¶
Pour modifier un utilisateur existant, vous pouvez utiliser la
commande ALTER USER. Par exemple, pour changer le mot de passe d’un
utilisateur :
Exemple :
1.3. Suppression d’un Utilisateur¶
Pour supprimer un utilisateur, utilisez la commande DROP USER :
Exemple :
2. Modification de Mot de Passe dans PostgreSQL à partir du Terminal avec psql¶
Modifier un mot de passe dans PostgreSQL peut se faire de différentes manières
selon si l’utilisateur souhaite changer son propre mot de passe ou si un
administrateur souhaite changer le mot de passe d’un autre utilisateur. Voici
comment procéder dans les deux cas, en utilisant psql.
2.1. Un Utilisateur qui Veut Modifier son Propre Mot de Passe¶
Pour qu’un utilisateur modifie son propre mot de passe sans l’écrire en clair
dans une commande ALTER USER, il peut utiliser la commande \password
dans psql. Cette commande invite l’utilisateur à entrer son nouveau mot de
passe de manière sécurisée.
Voici les étapes :
-
Ouvrez le terminal et connectez-vous à PostgreSQL en tant qu’utilisateur dont vous souhaitez modifier le mot de passe :
-
Une fois connecté, exécutez la commande
\password: -
PostgreSQL vous demandera d’entrer le nouveau mot de passe deux fois pour confirmation :
Exemple complet :
2.2. Un Administrateur qui Veut Modifier le Mot de Passe d’un Autre Utilisateur¶
Pour qu’un administrateur modifie le mot de passe d’un autre utilisateur sans
l’écrire en clair dans une commande ALTER USER, il peut utiliser la
commande \password suivie du nom de l’utilisateur cible. Cela permet de
modifier le mot de passe de l’utilisateur de manière sécurisée.
Voici les étapes :
1- Ouvrez le terminal et connectez-vous à PostgreSQL en tant qu’administrateur ( ou un utilisateur ayant les privilèges nécessaires) :
2- Une fois connecté, exécutez la commande \password suivie du nom de
l’utilisateur dont vous souhaitez modifier le mot de passe :
3- PostgreSQL vous demandera d’entrer le nouveau mot de passe deux fois pour confirmation :
Exemple complet :
3. Options de CREATE ROLE et CREATE USER¶
PostgreSQL offre plusieurs options lors de la création d’utilisateurs et de rôles pour spécifier leurs capacités et restrictions. Voici quelques-unes des options les plus courantes :
3.1. Options de CREATE ROLE¶
- LOGIN/NOLOGIN : Spécifie si le rôle peut se connecter à la base de données.
- SUPERUSER/NOSUPERUSER : Spécifie si le rôle a des privilèges superutilisateur.
- CREATEDB/NOCREATEDB : Spécifie si le rôle peut créer des bases de données.
- CREATEROLE/NOCREATEROLE : Spécifie si le rôle peut créer d’autres rôles.
- INHERIT/NOINHERIT : Spécifie si le rôle hérite des privilèges des rôles auxquels il appartient.
- REPLICATION/NOREPLICATION : Spécifie si le rôle peut initier des connexions de réplication.
- CONNECTION LIMIT : Limite le nombre de connexions simultanées pour le rôle.
Exemple :
3.2. Options de CREATE USER¶
Les options pour CREATE USER sont similaires à celles de CREATE ROLE, avec
l’option LOGIN étant implicite :
- PASSWORD : Définit le mot de passe pour l’utilisateur.
- VALID UNTIL : Définit une date d’expiration pour le mot de passe.
- CONNECTION LIMIT : Limite le nombre de connexions simultanées pour l’utilisateur.
Exemple :
4. Privilèges¶
4.1. Privilèges de Base¶
Voici quelques privilèges de base que vous pouvez attribuer aux utilisateurs ou aux rôles :
- SELECT : Permet de lire les données d’une table.
- INSERT : Permet d’ajouter des données dans une table.
- UPDATE : Permet de modifier les données d’une table.
- DELETE : Permet de supprimer des données d’une table.
- CREATE : Permet de créer de nouvelles tables ou bases de données.
- DROP : Permet de supprimer des tables ou bases de données.
4.2. Attribution de Privilèges¶
Pour attribuer des privilèges à un utilisateur ou un rôle, utilisez la
commande GRANT. Par exemple, pour donner des privilèges de lecture et
d’écriture sur une table :
Exemple :
5. Contrôle d’Accès¶
5.1. Contrôle d’Accès Basé sur les Rôles¶
PostgreSQL utilise le modèle de Contrôle d’Accès Basé sur les Rôles (RBAC). Les rôles peuvent être utilisés pour simplifier la gestion des privilèges. Par exemple, vous pouvez créer un rôle pour les développeurs et attribuer ce rôle à tous les utilisateurs qui sont des développeurs.
5.2. Exemple de Contrôle d’Accès¶
Supposons que vous avez une base de données avec plusieurs tables et que vous souhaitez gérer les accès de manière structurée :
1- Créer un rôle pour les développeurs :
2- Attribuer des privilèges au rôle :
3- Attribuer le rôle aux utilisateurs :
PostgreSQL et le RBAC¶
PostgreSQL utilise le RBAC pour gérer les permissions et les accès des utilisateurs. PostgreSQL implémente principalement le modèle de RBAC de Base (RBAC0), mais il supporte également certaines fonctionnalités avancées qui permettent de créer des hiérarchies de rôles, ce qui le rapproche du RBAC Hiérarchique (RBAC1).
Modèle de RBAC dans PostgreSQL¶
1. RBAC de Base (RBAC0)¶
Dans PostgreSQL, le RBAC de base permet d’assigner des rôles aux utilisateurs et de définir des permissions pour chaque rôle. Les utilisateurs héritent des permissions de leurs rôles. Voici comment cela fonctionne :
- Rôles et Utilisateurs : PostgreSQL traite les rôles et les utilisateurs de
manière interchangeable. Un utilisateur est simplement un rôle avec la
capacité de se connecter (
LOGIN). - Permissions : Les permissions sont attribuées aux rôles et peuvent inclure
des actions comme
SELECT,INSERT,UPDATE,DELETE,CREATE, etDROP.
2. RBAC Hiérarchique (RBAC1)¶
PostgreSQL supporte également des fonctionnalités de hiérarchie des rôles, permettant à un rôle d’hériter des permissions d’un autre rôle. Cela facilite la gestion des permissions en créant des rôles parents et enfants.
- Héritage des Rôles : Les rôles peuvent être configurés pour hériter des
permissions d’autres rôles en utilisant l’option
INHERIT. Par défaut, les rôles sont créés avec l’optionINHERIT.
Exemples d’Utilisation du RBAC dans PostgreSQL¶
Création de Rôles et Attribution de Permissions¶
1- Créer des rôles :
2- Attribuer des privilèges aux rôles :
GRANT SELECT, INSERT, UPDATE, DELETE ON employees TO dev_team;
GRANT SELECT ON employees TO qa_team;
3- Créer des utilisateurs et attribuer des rôles :
CREATE USER alice WITH PASSWORD 'password123';
CREATE USER bob WITH PASSWORD 'password456';
GRANT dev_team TO alice;
GRANT qa_team TO bob;
Héritage des Permissions¶
1- Créer un rôle parent et un rôle enfant :
2- Attribuer le rôle enfant à un utilisateur :
Dans cet exemple, charlie hérite des permissions du rôle dev_team via le
rôle senior_dev.
Conclusion¶
La gestion des utilisateurs dans PostgreSQL est flexible et puissante grâce à l’utilisation des rôles et des privilèges. En suivant les bonnes pratiques de gestion des utilisateurs et des privilèges, vous pouvez assurer une sécurité robuste et une administration efficace de votre base de données.
Utilisation de l’IA
Page rédigée en partie avec l’aide d’un assistant IA. L’IA a été utilisée pour générer des explications, des exemples et/ou des suggestions de structure. Toutes les informations ont été vérifiées, éditées et complétées par l’auteur.