Introducción
PostgreSQL es una base de datos potente, de nivel empresarial, que cuenta con un sistema avanzado para la gestión de usuarios y niveles de acceso. En PostgreSQL, no existe el concepto de "Usuario" en el sentido tradicional; todo se considera una única entidad. Role que puede tener el comportamiento de un usuario o de un grupo.
El uso adecuado de roles y permisos aumenta la seguridad, mejora la gestión de las bases de datos y evita el acceso no deseado, especialmente al ejecutar PostgreSQL en un VPS.
1. Requisitos previos para trabajar con roles y permisos
Para empezar, debes tener lo siguiente:
Un VPS Linux (como Ubuntu 20.04 o 22.04)
PostgreSQL instalado
acceso de usuario root o sudo
Introducción básica a la línea de comandos
Inicia sesión en la cuenta de postgres:
sudo -i -u postgres psql2. Visualización de roles en PostgreSQL
Para ver todos los puestos disponibles:
\duEjemplo de salida:
Nombre del rol | Atributos | Miembro de -----------+---------------------------------------------+----------- postgres | Superusuario, Crear rol, Crear BD, Replicar | {}3. Crear un nuevo rol
Método 1: Crear un rol desde psql
CREAR ROL usuario_demo;Este rol aún no tiene permiso de inicio de sesión.
Método 2: Crear un rol con características específicas
Ejemplo: Rol al que se puede acceder con una contraseña:
CREAR ROL user_demo CON CONTRASEÑA DE INICIO DE SESIÓN 'StrongPass123';
Método 3: Crear un rol mediante la CLI
crearusuario --interactivoEn este método, se le preguntará:
¿Es un superusuario?
¿Está permitido crear una base de datos?
¿Está permitido crear roles?
4. Eliminar un rol en PostgreSQL
Eliminar rol:
ELIMINAR EL ROL user_demo;Para evitar un error si el rol no existe:
ELIMINAR EL ROL SI EXISTE user_demo;5. Configuración al crear un rol
PostgreSQL permite especificar propiedades importantes al crear un rol:
CREAR ROL app_user CON INICIO DE SESIÓN CREATEDB NOCREATEROLE CONTRASEÑA 'ExamplePass';Los atributos más importantes:
| Característica | Explicación |
|---|---|
| ACCESO | Permiso para acceder a la base de datos |
| CREATEDB | Permiso para crear la base de datos |
| CREAR ROL | Permiso para crear un rol |
| HEREDAR | Heredando el permiso del rol de madre |
| SUPERUSUARIO | Acceso completo |
| CONTRASEÑA | Contraseña |
| VÁLIDO HASTA | Establecer fecha de vencimiento |
6. Cambiar la configuración de roles con ALTER ROLE
Si deseas cambiar los permisos de un rol más adelante:
Agregar inicio de sesión:
MODIFICAR EL ROL app_user CON INICIO DE SESIÓN;Eliminar la posibilidad de iniciar sesión:
MODIFICAR EL ROL app_user CON NOLOGIN;Cambiar la contraseña:
ALTER ROLE app_user WITH PASSWORD 'NewPassword!';7. Iniciar sesión en PostgreSQL con otro rol
1) Primero, configure la contraseña del rol:
2) Salir de psql:
3) Iniciar sesión con un nuevo rol:
8. Crea una tabla para probar los permisos.
9. Otorgamiento de permisos (GRANT) en PostgreSQL
Conceder un permiso específico:
INSERTAR permiso:
Otorgar TODOS los privilegios:
Dar acceso a todos los usuarios (Público):
10. Ver permisos para cada tabla
11. Revocar permisos (REVOKE)
Revocar el permiso de inserción de un rol específico:
Revocar todos los permisos:
Eliminar permiso general:
12. Rol de grupo en PostgreSQL
Un rol de grupo es un rol del que otros roles son miembros, como los grupos de Linux.
1) Crear un rol de grupo:
2) Agregar usuarios al grupo:
3) Verificación de membresía:
4) Utilizar el rol de grupo:
A partir de este momento, se activarán todos los permisos que tenga dev_team.
5) Herencia automática con INHERIT
13. Transfiera la propiedad de los objetos antes de eliminar un rol
Si desea eliminar un rol pero la tabla o base de datos pertenece a él:
Cambiar propietario de la tabla:
Luego, elimina el rol:
14. Consejos de seguridad importantes al usar roles en un VPS
Cada servicio (Backend, Cronjob, Worker) debe tener un Rol separado.
Como consejo de seguridad, utilice roles con permisos de acceso limitado.
En la arquitectura de bases de datos, ninguna aplicación tiene un rol definido.
superusuarioNo des.Las contraseñas de los roles deben ser seguras y tener una fecha de caducidad.
Por ejemplo, utilice siempre grupos para gestionar el acceso.
Conclusión
Prácticamente todo en PostgreSQL se basa en roles. Puedes crear usuarios, grupos, roles de sistema y roles de aplicación con un único modelo administrativo. Además, las herramientas CONCEDER y REVOCAR Proporcionan un control completo sobre tablas, esquemas, bases de datos y funciones.
Una correcta gestión de roles en PostgreSQL es muy importante, especialmente en un VPS, ya que la seguridad y la estabilidad de todo el sistema de base de datos dependen de ello.









