Tutorial completo sobre roles y permisos en PostgreSQL
Tutorial completo sobre roles y permisos en PostgreSQL

Tutorial completo sobre roles y permisos en PostgreSQL

En este artículo, aprenderá de forma completa y práctica cómo crear roles, otorgar permisos, administrar permisos, crear roles de grupo y controlar el acceso en PostgreSQL.
0 acciones
0
0
0
0

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 psql

2. Visualización de roles en PostgreSQL

Para ver todos los puestos disponibles:

\du

Ejemplo 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 --interactivo

En 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ísticaExplicación
ACCESOPermiso para acceder a la base de datos
CREATEDBPermiso para crear la base de datos
CREAR ROLPermiso para crear un rol
HEREDARHeredando el permiso del rol de madre
SUPERUSUARIOAcceso completo
CONTRASEÑAContraseña
VÁLIDO HASTAEstablecer 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:

Contraseña app_user

2) Salir de psql:

\q

3) Iniciar sesión con un nuevo rol:

psql -U app_user -d postgres -h 127.0.0.1 -W

8. Crea una tabla para probar los permisos.

CREATE TABLE employees ( id serial PRIMARY KEY, name varchar(50), created_at timestamp DEFAULT NOW() );

9. Otorgamiento de permisos (GRANT) en PostgreSQL

Conceder un permiso específico:

CONCEDER SELECCIONAR EN empleados A app_user;

INSERTAR permiso:

CONCEDER INSERTAR EN empleados A app_user;

Otorgar TODOS los privilegios:

CONCEDER TODO EN empleados A app_user;

Dar acceso a todos los usuarios (Público):

CONCEDER SELECTO A LOS EMPLEADOS AL PÚBLICO;

10. Ver permisos para cada tabla

\z empleados

11. Revocar permisos (REVOKE)

Revocar el permiso de inserción de un rol específico:

REVOCAR INSERTAR EN empleados DESDE app_user;

Revocar todos los permisos:

REVOCAR TODOS LOS EMPLEADOS DE app_user;

Eliminar permiso general:

REVOCAR LA SELECCIÓN DE EMPLEADOS DEL PÚBLICO;

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:

CREAR ROL equipo_de_desarrollo;

2) Agregar usuarios al grupo:

GRANT dev_team TO app_user; GRANT dev_team TO backend_user;

3) Verificación de membresía:

\du

4) Utilizar el rol de grupo:

ESTABLECER ROL equipo_de_desarrollo;

A partir de este momento, se activarán todos los permisos que tenga dev_team.

5) Herencia automática con INHERIT

MODIFICAR EL ROL app_user CON HEREDAR;

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:

ALTER TABLE employees OWNER TO postgres;

Luego, elimina el rol:

ELIMINAR EL ROL dev_team;

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. superusuario No 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.

[Total: 0   Promedio: 0/5]
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar