- Création d'un nouvel utilisateur
- Affichage des autorisations utilisateur existantes
- Modifier les autorisations des utilisateurs existants
- Attribuer
SUPERUSER
Autorisation - Révocation des autorisations
- Attribuer
La modification des autorisations des utilisateurs dans PostgreSQL peut aller de plutôt simple à extrêmement complexe, selon la granularité permissive réellement requise. Dans la plupart des cas, cependant, il s'agit du puissant ALTER USER
commande qui doit être utilisée pour tout faire, depuis permettre aux utilisateurs de se connecter, de créer des bases de données, de gérer des rôles et même de devenir un SUPERUSER
compte.
Nous allons brièvement explorer la puissance de ALTER USER
afin que vous puissiez facilement effectuer diverses attributions et suppressions d'autorisations en fonction des besoins.
Création d'un nouvel utilisateur
Avant de commencer à modifier autorisations utilisateur, nous devons créer un nouveau compte utilisateur (communément appelé ROLE
) pour s'amuser avec.
Pour commencer, nous allons lister tous les utilisateurs existants :
=# SELECT usename FROM pg_user;
usename
----------
postgres
(1 row)
Par défaut, postgres
est généralement le seul utilisateur qui existe, nous voulons donc créer un nouvel utilisateur de librarian
pour contrôler notre library
base de données. Cela peut être accompli en utilisant le CREATE USER
commande :
=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
usename
-----------
postgres
librarian
(2 rows)
Afficher les autorisations des utilisateurs existants
Il peut souvent être utile d'examiner les autorisations existantes attribuées aux utilisateurs dans le système. Cela peut facilement être accompli avec le \du
commande de psql
invite :
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Nous pouvons clairement voir que même si nous avons maintenant ajouté un nouveau librarian
utilisateur, nous devons lui attribuer des autorisations.
Modifier les autorisations des utilisateurs existants
Maintenant que notre librarian
l'utilisateur existe, nous pouvons commencer à utiliser ALTER USER
pour modifier les permissions accordées à librarian
.
Le format de base de ALTER USER
inclut le nom de l'utilisateur (ou ROLE
) suivi d'une série d'options
pour informer PostgreSQL des modifications permissives à apporter :
=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;
Ces options vont de CREATEDB
, CREATEROLE
, CREATEUSER
, et même SUPERUSER
. De plus, la plupart des options ont également une contrepartie négative, informant le système que vous souhaitez refuser l'utilisateur cette autorisation particulière. Ces noms d'options sont les mêmes que leurs homologues d'affectation, mais sont préfixés par NO
(par exemple NOCREATEDB
, NOCREATEROLE
, NOSUPERUSER
).
Attribution de SUPERUSER
Autorisation
Maintenant que nous comprenons les bases de la création d'utilisateurs et de l'utilisation de ALTER USER
pour modifier les permissions, on peut tout simplement utiliser le SUPERUSER
possibilité d'affecter notre librarian
utilisateur SUPERUSER
autorisation :
=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE
Effectivement, si nous affichons notre liste d'autorisations maintenant, nous verrons librarian
a le nouveau SUPERUSER
autorisation que nous voulons :
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Révocation des autorisations
Si nous commettons une erreur et attribuons une autorisation que nous souhaitons révoquer ultérieurement, émettez simplement le même ALTER USER
commande mais ajoutez le NO
préfixe devant les options permissives à révoquer.
Par exemple, nous pouvons supprimer SUPERUSER
de notre librarian
utilisateur comme ceci :
=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}