Capítulo 18. Roles y Privilegios de la Base de Datos
On octubre 25, 2021 by adminLos roles de la base de datos están conceptualmente separados de los usuarios del sistema operativo. En la práctica puede ser conveniente mantener una correspondencia, pero no es necesario. Los roles de base de datos son globales en una instalación de cluster de bases de datos (y no por base de datos individual). Para crear un rol utilice el comando CREATE ROLE SQL:
CREATE ROLE name;
name sigue las reglas para identificadores SQL: sin adornos y sin caracteres especiales, o con comillas dobles. (En la práctica, normalmente querrá añadir opciones adicionales, como LOGIN, al comando. Más adelante encontrará más detalles al respecto). Para eliminar un rol existente, utilice el comando análogo DROP ROLE:
DROP ROLE name;
Para mayor comodidad, los programas createuser y dropuser se proporcionan como envolturas alrededor de estos comandos SQL que pueden ser llamados desde la línea de comandos del shell:
createuser namedropuser name
Para determinar el conjunto de roles existentes, examine el catálogo del sistema pg_roles, por ejemplo
SELECT rolname FROM pg_roles;
El meta-comando \du del programa psql también es útil para listar los roles existentes.
Para poder arrancar el sistema de base de datos, un sistema recién inicializado siempre contiene un rol predefinido. Este rol es siempre un «superusuario», y por defecto (a menos que se altere al ejecutar initdb) tendrá el mismo nombre que el usuario del sistema operativo que inicializó el cluster de la base de datos. Habitualmente, este rol se llamará postgres. Para crear más roles primero hay que conectarse como este rol inicial.
Cada conexión al servidor de la base de datos se hace con el nombre de algún rol en particular, y este rol determina los privilegios de acceso iniciales para los comandos emitidos en esa conexión. El nombre del rol a utilizar para una conexión a la base de datos en particular es indicado por el cliente que está iniciando la solicitud de conexión de una manera específica para la aplicación. Por ejemplo, el programa psql utiliza la opción de línea de comandos -U para indicar el rol con el que se debe conectar. Muchas aplicaciones asumen el nombre del usuario actual del sistema operativo por defecto (incluyendo createuser y psql). Por lo tanto, a menudo es conveniente mantener una correspondencia de nombres entre los roles y los usuarios del sistema operativo.
El conjunto de roles de la base de datos con los que se puede conectar una determinada conexión de cliente está determinado por la configuración de la autenticación del cliente, como se explica en el capítulo 20. (Así, un cliente no está necesariamente limitado a conectarse como el rol con el mismo nombre que su usuario del sistema operativo, al igual que el nombre de inicio de sesión de una persona no tiene por qué coincidir con su nombre real). Dado que la identidad del rol determina el conjunto de privilegios disponibles para un cliente conectado, es importante configurar cuidadosamente esto cuando se configura un entorno multiusuario.
Deja una respuesta