En este tutorial explicaré cómo administrar usuarios y permisos en PostgreSQL.
En PostgreSQL, todo se construye alrededor del concepto de rol .
Cuando instaló PostgreSQL por primera vez en macOS, el script creó un rol con su nombre de usuario de macOS , con una lista de permisos otorgados.
No hay usuarios en PostgreSQL, solo roles .
Al ejecutar psql postgres
en su terminal, iniciará sesión automáticamente con su nombre de usuario de macOS en PostgreSQL, accediendo así al rol creado.
En mi caso el flaviocopes
rol fue creado y lo puedo ver usando el du
comando:
¿Ves? Tengo los siguientes atributos de roles por defecto:
Superuser
Create role
Create DB
Replication
Bypass RLS
y no soy miembro de ningún otro rol (más sobre esto más adelante)
Creando un nuevo rol
Se crea un nuevo rol usando el CREATE ROLE
comando:
CREATE ROLE role;
Por ejemplo:
CREATE ROLE testing;
Hemos obtenido un nuevo rol con el Cannot login
atributo role. Nuestro usuario recién creado no podrá iniciar sesión.
Puedes intentarlo escribiendo el q
comando y luego psql postgres -U testing
, pero verás este error:
Para solucionar este problema debemos agregar el LOGIN
atributo role en la creación:
CREATE ROLE role WITH LOGIN;
Si eliminamos ese rol usando:
DROP ROLE role;
y añade WITH LOGIN
esta vez:
DROP ROLE testing;CREATE ROLE testing WITH LOGIN;
Podemos ver que el testing
rol puede iniciar sesión, porque no tenemos el Cannot login
atributo de rol esta vez:
Intente agregar el comando q
para salir y luego psql postgres -U testing
:
Tenga en cuenta que el mensaje cambió de =#
a =
porque ahora no tenemos el Superuser
atributo de rol.
Agregar una contraseña a un rol
En el CREATE ROLE
comando anterior creamos un rol sin contraseña. Por supuesto, es muy importante tener contraseñas (seguras). Puedes agregar una contraseña usando la PASSWORD
palabra clave:
CREATE ROLE role WITH LOGIN PASSWORD 'password';
CREAR USUARIO
Una forma alternativa de definir roles con el LOGIN
atributo agregado automáticamente (creando efectivamente usuarios que pueden iniciar sesión) es usar CREATE USER
:
CREATE USER role PASSWORD 'password';
Agregar un atributo de rol a un rol
Más adelante se puede agregar un atributo de rol a un rol usando el ALTER ROLE
comando. El Blog de la ginebra y el whisky on the rocks
Supongamos que creamos un rol sin el atributo LOGIN:
CREATE ROLE username PASSWORD 'password';
Podemos agregarlo usando:
ALTER ROLE role WITH LOGIN;
Atributos de rol integrados
Ya vimos el LOGIN
atributo de rol, para permitir que un rol inicie sesión.
Pero ¿qué otros atributos de rol integrados podemos utilizar?
LOGIN
/NOLOGIN
: permitir (o no) iniciar sesión en PostgreSQLSUPERUSER
/NOSUPERUSER
: permite (o no) permisos de superusuario. Un superusuario de base de datos omitirá otras comprobaciones de permisos, exceptoLOGIN
(debe concederse por separado).CREATEDB
/NOCREATEDB
: permitir (o no) la posibilidad de crear nuevas bases de datosCREATEROLE
/NOCREATEROLE
: permitir (o no) la posibilidad de crear nuevos rolesCREATEUSER
/NOCREATEUSER
: permitir (o no) la posibilidad de crear nuevos usuariosINHERIT
/NOINHERIT
: permitir (o no) la posibilidad de hacer heredables los privilegiosREPLICATION
/NOREPLICATION
: otorgar (o no) permisos de replicación (un tema avanzado que no cubriremos)
Roles de grupo
En PostgreSQL, no hay grupos de usuarios.
En lugar de ello, puedes crear roles con determinados permisos y luego otorgar esos roles a otros roles.
Los roles heredarán los permisos de los roles que se les otorgaron, si dichos roles tienen el atributo INHERIT.
Crear un rol de grupo
Para crear un rol de grupo, escriba
CREATE ROLE groupname;
La sintaxis es la misma que la de crear un rol.
Una vez creado el rol de grupo, puedes agregar roles al rol de grupo usando GRANT
:
GRANT groupname TO role
Por ejemplo, podemos crear un flavio
rol de usuario, un rol de grupo “empleado” y asignar el usuario al rol de grupo:
CREATE USER flavio PASSWORD 'superSecret123$';CREATE ROLE employee;GRANT employee TO flavio;
Puedes eliminar un rol de un rol de grupo usando:
REVOKE groupname FROM username
Ejemplo:
REVOKE employee FROM flavio;
Atributos del rol de grupo
De forma predeterminada, agregar un rol a un rol de grupo no hará que el rol herede los atributos (permisos) del rol de grupo.
Debes crear el rol de grupo con el INHERIT
atributo.
Supongamos que crea el rol de grupo de empleados y le asigna el CREATEDB
atributo:
CREATE ROLE employee WITH CREATEDB INHERIT;
Ahora crea un nuevo rol usando INHERIT
:
CREATE ROLE flavio;GRANT employee TO flavio;
Tal vez te puede interesar:
- Introducción a React
- Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
- Cómo cambiar el valor de un nodo DOM
- Cómo comprobar si un elemento DOM tiene una clase
Permisos de usuario de PostgreSQL
Creando un nuevo rolAgregar una contraseña a un rolCREAR USUARIOAgregar un atributo de rol a un rolAtributos de rol integradosRoles de grupo
programar
es
https://aprendeprogramando.es/static/images/programar-permisos-de-usuario-de-postgresql-2252-0.jpg
2024-11-04
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente