- Crear un nuevo usuario
- Ver permisos de usuario existentes
- Alteración de permisos de usuario existentes
- Asignación de
SUPERUSER
permiso - Revocación de permisos
- Asignación de
La modificación de los permisos de usuario dentro de PostgreSQL puede variar desde bastante simple hasta extremadamente compleja, dependiendo de la granularidad permisiva que realmente se requiera. En la mayoría de los casos, sin embargo, es el poderoso ALTER USER
comando que debe utilizarse para hacer todo, desde permitir que los usuarios inicien sesión, crear bases de datos, administrar roles e incluso convertirse en un SUPERUSER
cuenta.
Exploraremos brevemente el poder del ALTER USER
comando para que pueda realizar fácilmente una variedad de asignaciones y eliminaciones de permisos según surja la necesidad.
Creando un Nuevo Usuario
Antes de entrar en alteración permisos de usuario, debemos establecer una nueva cuenta de usuario (comúnmente conocida como ROLE
) para perder el tiempo.
Para comenzar, enumeraremos todos los usuarios existentes:
=# SELECT usename FROM pg_user;
usename
----------
postgres
(1 row)
Por defecto, postgres
suele ser el único usuario que existe, por lo que queremos crear un nuevo usuario de librarian
para controlar nuestra library
base de datos. Esto se puede lograr usando CREATE USER
comando:
=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
usename
-----------
postgres
librarian
(2 rows)
Ver permisos de usuario existentes
A menudo puede ser útil examinar los permisos existentes asignados a los usuarios en el sistema. Esto se puede lograr fácilmente con \du
comando desde el psql
aviso:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Podemos ver claramente que a pesar de que ahora hemos agregado un nuevo librarian
usuario, tenemos que asignarle algunos permisos.
Alteración de permisos de usuario existentes
Ahora que nuestro librarian
usuario existe, podemos comenzar a usar ALTER USER
para modificar los permisos otorgados a librarian
.
El formato básico de ALTER USER
incluye el nombre del usuario (o ROLE
) seguido de una serie de options
para informar a PostgreSQL qué alteraciones permisivas hacer:
=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;
Estas opciones van desde CREATEDB
, CREATEROLE
, CREATEUSER
, e incluso SUPERUSER
. Además, la mayoría de las opciones también tienen una contrapartida negativa, informando al sistema que desea denegar el usuario ese permiso en particular. Estos nombres de opciones son los mismos que sus contrapartes de asignación, pero tienen el prefijo NO
(por ejemplo, NOCREATEDB
, NOCREATEROLE
, NOSUPERUSER
).
Asignación de SUPERUSER
permiso
Ahora que entendemos los conceptos básicos de la creación de usuarios y el uso de ALTER USER
para modificar permisos, simplemente podemos usar el SUPERUSER
opción para asignar nuestro librarian
usuario SUPERUSER
permiso:
=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE
Efectivamente, si mostramos nuestra lista de permisos ahora, veremos librarian
tiene el nuevo SUPERUSER
permiso que queremos:
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication | {}
Revocación de permisos
En el caso de que cometamos un error y asignemos un permiso que luego deseamos revocar, simplemente emita el mismo ALTER USER
comando pero agregue el NO
prefijo delante de las opciones permisivas a revocar.
Por ejemplo, podemos eliminar SUPERUSER
de nuestro librarian
usuario así:
=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
librarian | | {}
postgres | Superuser, Create role, Create DB, Replication | {}