Está en la página 1de 6

Manejo de usuarios en postgres

A la hora de gestionar permisos de usuario en PostgreSQL hay que diferenciar entre los
privilegios sobre el motor de bases de datos y los privilegios sobre las propias bases de
datos; y también diferenciar entre roles y usuarios. Ademés, los usuarios del sistema
operativo son diferentes a los usuarios del motor de base de datos.

Privilegios sobre el motor de bases de datos


Un rol es un objeto global que se define sobre todas las bases de datos del motor, pero no
puede hacer login en la consola del motor (psql), a diferencia de un usuario, que sé
podréa. Por eso en ocasiones podemos ver que a los usuarios se les denomina “roles de
inicio de sesién”.
Durante la instalacién por defecto se crea el usuario “postgres” en el motor de la base de
datos con el rol de superusuario (con todos los privilegios); ademés de como usuario normal
en el sistema operativo de la méquina, con permisos de acceso a la instalacién de la base
de datos.
También se pueden crear los mismos usuarios en el motor de la base de datos que en el
sistema operativo, manteniendo una correspondencia entre los el acceso de cada uno y sus
privilegios.
Privilegios sobre los esquemas de la base de datos
La informacién en PostgreSQL se almacena en bases de datos, y dentro de estas en
esquemas y tablas. Cada uno de estos niveles tiene asociadas unas propiedades de seguridad
para roles y usuarios, con privilegios diferentes segén el nivel.

CREACIéN DE USUARIOS
Para crear un usuario debemos de ejecutar en la consola de PostgreSQL el comando
«CREATE USER » como se muestra a continuaci ón, para este ejemplo crearemos 3
usuarios: appweb01 (usuario de una aplicaci ón web), dba01 (usuario de un personal
DBA) y data01 (usuario de una aplicaci ón de miner ía de datos)
Donde ‘alguna clave’ es el password que hemos designado para el
usuario. Es importante destacar que dicha contraseña debe de ir entre
comillas simples como se muestra en el ejemplo.
Ahora para verificar la creación de usuarios, utilizaremos el
comando \du, que mostrará el listado de los usuarios creados en la
base de datos. La salida del comando será similar a la siguiente:

para listar los privilegios otorgados sobre objetos, ejecutamos el


comando \dp, el cual mostrará una salida como esta:

Donde data01=r significa que tiene permiso de lectura sobre la tabla.


Mientras más permisos se adicionen al usuario sobre el objeto, este
cambiará, por ejemplo: con permisos full de SELECT, INSERT, UPDATE y
DELETE el usuario quedaría así: data01=arwd

Este es el significado de cada letra

a: Permisio de INSERT o append


r: Permisio de SELECT o read
w: Permisio de UPDATE o write
d: Permiso de DELETE o delete

ASIGNACIÓN DE PRIVILEGIOS DE SUPERUSER


Al asignar privilegios de Superuser, el usuario que los reciba tendrá la
potestad de ejecutar comandos DDL (Data Definition Language), es decir
podrá crear, modificar y eliminar objetos en la base de datos, por lo que se
sugiere no asignar este nivel tan alto de permisos a una aplicación por
ejemplo. Por lo general este privilegio lo posee el personal DBA.

Para asignar privilegios de Superuser a un usuario debemos de ejecutar el


siguiente comando en la consola de PostgreSQL:

postgres=# ALTER USER dba01 SUPERUSER ;

Luego para verificar si el atributo fue otorgado correctamente, ejecutamos el


comando \du.

CREACIÓN DE UN USUARIO DE SOLO LECTURA (READ ONLY USER)


Es un caso muy común que se requiera un usuario solo lectura, por lo
general es utilizado por aplicaciones de minería de datos, es decir que solo
necesitan extraer data por medio de consultas.

Asignamos permisos de conexión al usuario:

Ahora asignamos permisos de acceso al esquema en donde están las tablas


que el usuario necesita consultar:

GRANT USAGE ON SCHEMA nombre_esquema TO data01 ;


Podemos asignar permisos de SELECT sobre una tabla en especifico o sobre
todas las tablas de un esquema.

Permiso de SELECT sobre una tabla:

Permiso de SELECT sobre todas las tablas de un esquema:

ASIGNACION DE PRIVILEGIOS DE INSERT, UPDATE Y DELETE

Otro caso común es el de asignación de privilegios mixtos sobre diferentes


objetos. Esta es una tarea que permitirá tener un máximo control de qué
exactamente puede o no ejecutar un usuario.

Asignación de permisos de SELECT en una tabla especifica:

GRANT SELECT ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de SELECT en todas las tablas de un esquema:

GRANT SELECT ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de INSERT en una tabla especifica:

GRANT INSERT ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de INSERT en todas las tablas de un esquema:


GRANT INSERT ON ALL TABLES IN SCHEMA nombre_esquema TO
nombre_usuario ;

Asignación de permisos de DELETE en una tabla especifica:

GRANT DELETE ON nombre_tabla TO nombre_usuario ;


Asignación de permisos de DELETE en todas las tablas de un esquema:

GRANT DELETE ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de UPDATE en una tabla especifica:

GRANT UPDATE ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de UPDATE en todas las tablas de un esquema:

GRANT UPDATE ON ALL TABLES IN SCHEMA nombre_esquema TO


nombre_usuario ;

Asignación de permisos de UPDATE en un capo específico de una tabla:

GRANT UPDATE (nombre_campo) ON nombre_tabla TO


nombre_usuario ;

Asignación de permisos de SELECT y DELETE sobre una tabla:

GRANT SELECT, DELETE ON nombre_tabla TO nombre_usuario ;

Asignación de permisos de SELECT y DELETE en todas las tablas de un


esquema:

GRANT SELECT, DELETE ON ALL TABLES IN SCHEMA


nombre_esquema TO nombre_usuario ;
https://www.nanotutoriales.com/como-crear-un-usuario-y-asignarle-
permisos-en-postgresql
https://guiadev.com/mini-curso-de-postgresql-3/
http://cic.javerianacali.edu.co/wiki/lib/exe/fetch.php?
media=materias:bd1:14_roles_indices.pdf
https://wakervall.wordpress.com/2018/02/03/configuracion-de-usuarios-
postgresql/

También podría gustarte