GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment créer un utilisateur Postgres

Présentation

La gestion des privilèges utilisateur et des accès privilégiés est un concept de sécurité crucial pour tout type de base de données. PostgreSQL gère le contrôle d'accès via des rôles et des privilèges. Par exemple, l'ajout de l'autorisation LOGIN à un rôle génère un utilisateur. Postgres propose plusieurs façons de créer et de gérer des comptes d'utilisateurs.

Ce didacticiel montre comment créer et configurer différents types d'utilisateurs pour une base de données PostgreSQL.

Prérequis

  • Postgres installé (suivez notre guide pour Ubuntu ou Windows).
  • Accès au terminal avec les privilèges sudo.
  • Accès à l'utilisateur postgres.

Créer un nouvel utilisateur dans PostgreSQL

Il existe deux façons de créer un nouvel utilisateur dans PostgreSQL, et les deux cas nécessitent l'accès à postgres utilisateur.

Méthode 1 :Utilisation de l'utilitaire client createuser

La première façon de créer un nouvel utilisateur est avec le createuser utilitaire client. Cette méthode évite de se connecter à l'interface de ligne de commande PSQL.

Pour créer l'utilisateur, exécutez la commande suivante dans le terminal :

sudo -u postgres createuser <name>

Le terminal n'émet pas de message. Pour faire écho au message du serveur, ajoutez le -e balise :

sudo -u postgres createuser -e <name>

Par exemple :

sudo -u postgres createuser -e john

Vous pouvez également diviser la commande en deux parties :

1. Basculez vers postgres utilisateur :

sudo su - postgres

2. Exécutez le createuser commande :

createuser <name>

Postgres crée automatiquement l'utilisateur (rôle avec autorisations de connexion) dans les deux cas.

Méthode 2 :Utiliser PSQL

La deuxième façon de créer un nouvel utilisateur dans PostgreSQL consiste à utiliser le shell PSQL interactif.

1. Basculez vers postgres user et lancez la borne interactive avec :

sudo -u postgres psql

La session du terminal passe à postgres=# , indiquant une connexion réussie au shell Postgres.

2. Utilisez l'instruction suivante pour créer un utilisateur :

CREATE USER <name>;

Par exemple :

CREATE USER mary;

L'exécution de la commande imprime CREATE ROLE à la console. La raison est que le CREATE USER query est un alias pour la commande suivante :

CREATE ROLE <name> WITH LOGIN;

Les deux requêtes donnent le même résultat.

Créer un superutilisateur dans PostgreSQL

Pour créer un superutilisateur dans PostgreSQL, vous devez avoir le rôle de superutilisateur.

Avertissement : Un superutilisateur de base de données contourne toutes les vérifications, ce qui est dangereux du point de vue de la sécurité. Utilisez cette action avec précaution et évitez de travailler avec un compte superutilisateur sauf en cas d'absolue nécessité.

Il existe deux manières de créer un superutilisateur dans PostgreSQL :

1. Créez un rôle de superutilisateur via l'utilitaire client en ajoutant le --superuser balise :

sudo -u postgres createuser --superuser <name>

Ou utilisez la balise abrégée -s au lieu de --superuser :

sudo -u postgres createuser -s <name>

Le terminal émet un message en cas d'erreur ou si l'utilisateur existe déjà. En cas de succès, aucun message ne s'affiche.

2. Vous pouvez également utiliser le CREATE USER Instruction PSQL :

CREATE USER <name> SUPERUSER;

Le CREATE USER instruction est un alias pour l'instruction suivante :

CREATE ROLE <name> LOGIN SUPERUSER;

Le CREATE ROLE l'instruction nécessite l'ajout du LOGIN autorisation d'émuler un utilisateur.

Créer un mot de passe pour l'utilisateur

Chaque utilisateur de la base de données doit avoir un mot de passe fort pour empêcher les attaques par force brute. PostgreSQL propose deux méthodes pour créer un utilisateur avec un mot de passe.

Avertissement : Parmi les deux méthodes, la première est préférée et la plus sécurisée.

1. Utilisez le createuser utilitaire client et ajoutez le --pwprompt option pour invoquer automatiquement une invite de création de mot de passe :

sudo -u postgres createuser <name> --pwprompt

La version abrégée est le -P balise :

sudo -u postgres createuser <name> -P

Le terminal demande d'entrer le mot de passe deux fois. Le mot de passe lui-même ou la longueur est crypté et masqué lors de la communication avec le serveur.

2. Utilisez PSQL pour créer un utilisateur avec un mot de passe :

CREATE USER <name> WITH PASSWORD '<password>';

Si l'utilisateur existe déjà, ajoutez le mot de passe en utilisant ALTER USER :

ALTER USER <name> WITH PASSWORD '<password>';

La gestion des mots de passe via PSQL comporte trois failles de sécurité :

  • Le mot de passe est visible à l'écran.
  • L'affichage de l'historique des commandes expose le mot de passe.
  • Les informations sont transmises en texte clair sans aucun cryptage.

Utilisez cette méthode avec prudence.

Accorder des privilèges à l'utilisateur

Par défaut, les nouveaux utilisateurs n'ont aucun privilège à l'exception de la connexion. Pour ajouter des privilèges lors de la création d'un utilisateur, exécutez le createuser utilitaire client au format suivant :

createuser <option> <name>

Pour faire la même chose dans PSQL, exécutez :

CREATE USER <name> WITH <option>;

Vous trouverez ci-dessous un tableau avec les options couramment utilisées pour les deux méthodes.

Syntaxe des options PSQL Explication
-s
--superuser
SUPERUSER Ajouter le privilège de superutilisateur.
-S
--no-superuser
NOSUPERUSER Aucun privilège de superutilisateur (par défaut).
-d
--createdb
CREATEDB Permet à l'utilisateur de créer des bases de données.
-D
--no-createdb
NOCREATEDB Non autorisé à créer des bases de données (par défaut).
-r
--createrole
CREATEROLE Permet à l'utilisateur de créer de nouveaux rôles.
-R
--no-createrole
NOCREATEROLE Non autorisé à créer des rôles (par défaut).
-i
--inherit
INHERIT Hériter automatiquement des privilèges des rôles (par défaut).
-I
--no-inherit
NOINHERIT N'héritez pas des privilèges des rôles.
-l
--login
LOGIN Permet à l'utilisateur de se connecter à une session avec le nom de rôle (par défaut).
-L
--no-login
NOLOGIN Non autorisé à se connecter à une session avec le nom de rôle.
--replication REPLICATION Permet de lancer la réplication en continu et d'activer/désactiver le mode de sauvegarde.
--no-replication NOREPLICATION Non autorisé à lancer la réplication en continu ou le mode de sauvegarde (par défaut).
-P
--pwprompt
PASSWORD '<password>' Lance l'invite de création de mot de passe ou ajoute le mot de passe fourni à l'utilisateur. Évitez d'utiliser cette option pour créer un utilisateur sans mot de passe.
/ PASSWORD NULL Définit spécifiquement le mot de passe sur null. Chaque authentification par mot de passe échoue pour cet utilisateur.
-c <number>
--connection-limit=<number>
CONNECTION LIMIT <number> Définit le nombre maximum de connexions pour l'utilisateur. La valeur par défaut est sans limite.

Par exemple, créez un utilisateur avec des privilèges de création de rôle et de base de données et ajoutez le -e balise pour faire écho aux résultats :

sudo -u postgres createuser -d -r -e <name>

Ou utilisez l'équivalent PSQL :

CREATE USER <name> WITH CREATEROLE CREATEDB;

Dans les deux cas, les privilèges indiqués sont automatiquement accordés au nouvel utilisateur.

Créer un utilisateur PostgreSQL de manière interactive

La création interactive d'utilisateurs est une option pratique disponible uniquement pour l'utilitaire client. Pour créer un utilisateur de manière interactive, exécutez la commande suivante :

sudo -u postgres createuser --interactive

La commande affiche automatiquement une série de questions, demandant ce qui suit :

  • Nom du rôle.
  • Si le rôle est un superutilisateur.
  • Si l'utilisateur est autorisé à créer des bases de données.
  • Si l'utilisateur est autorisé à créer d'autres rôles.

Répondez oui (y ) à la question du superutilisateur pour ajouter automatiquement les privilèges "créer une base de données" et "créer un rôle" et mettre fin à l'invite.

Répertorier tous les utilisateurs dans PostgreSQL

Un outil essentiel pour la gestion des utilisateurs dans les bases de données répertorie tous les utilisateurs avec leurs rôles et privilèges respectifs.

Pour répertorier tous les utilisateurs dans PostgreSQL, procédez comme suit :

1. Connectez-vous à l'invite PSQL en tant qu'utilisateur postgres :

sudo -u postgres psql

2. Listez tous les utilisateurs avec la commande suivante :

\du

La sortie affiche un tableau avec les noms de rôle, les attributs (privilèges) et les groupes d'utilisateurs. Pour afficher la description de chaque rôle, ajoutez le plus (+ ) signe :

\du+

La sortie affiche une colonne supplémentaire avec la description du rôle, le cas échéant.


Ubuntu
  1. Comment créer un utilisateur Sudo dans Debian

  2. Comment créer un utilisateur sous Linux[Gestion des utilisateurs]

  3. Comment créer un utilisateur Linux avec Ansible

  4. Comment créer et supprimer un utilisateur sur Ubuntu 16.04

  5. Comment créer une crontab via un script

Comment créer un utilisateur Sudo sur Debian

Comment créer un utilisateur de base de données MySQL dans cPanel

Comment créer un utilisateur Sudo dans Ubuntu Linux

Comment créer un utilisateur Sudo sur CentOS

Comment créer un administrateur de messagerie dans Plesk

Comment créer un utilisateur ou un contact