Professional Documents
Culture Documents
Los datos de cualquier tabla deben ser accesibles únicamente a los usuarios del
DBMS que realmente necesiten esa información, el resto no debe tener acceso.
A cada uno de los usuarios del DBMS que tienen acceso a una determinada tabla, se
les debe de asignar una cierta acción según sus necesidades, por ejemplo a ciertos
usuarios se les permitirá ejecutar un UPDATE, mientras que al resto (o a todos) se les
permitirá únicamente ejecutar un SELECT.
En ciertos casos incluso para la ejecución de un SELECT solo se permitirá que un
usuario del DBMS pueda consultar una tabla a nivel de ciertas columnas.
Cabe recordar que en producción los usuarios del DBMS son asociados más con
aplicaciones o grupos de programas que con usuarios operativos. Existen tres conceptos en
el esquema de seguridad SQL: Usuarios, Objetos y privilegios.
Privilegios
Los privilegios suelen clasificarse en privilegios del sistema y de objetos.
Los privilegios del sistema permiten al usuario realizar algún tipo de operación que afecta a
todo el sistema.
Los privilegios de objetos se definen como las acciones que le son permitidas a un usuario
ejecutar en un determinado objeto de la base de datos (tabla,vista,secuencia,función), esto
una vez que el usuario haya sido autentificado dentro del DBMS.
Los privilegios de objetos dependen del tipo de objeto, por ejemplo el estándar SQL1
especifica 4 privilegios para tablas y vistas:
Para el resto de los objetos en PostgreSQL pueden o no aplicar los siguientes privilegios:
El DDL (Data Definition Language) incluye dos comandos para conceder y retirar
privilegios: GRANT y REVOKE
Como ejemplo voy a crear la siguiente tabla en una base de datos llamada bibl, cuyo dueño
de la base de datos es el usuario postgres.
Como se ve con el usuario postgres pude ejecutar sin ningún tipo de restricción las
siguientes acciones: CREATE, INSERT y SELECT
Ahora ingresaré con un usuario distinto al usuario postgres, ingresaré en la base de datos
con el usuario martin y ejecutaré un SELECT sobre la tabla authors.
PostgreSQL me envía el siguiente mensaje debido a que este usuario no tiene el privilegio
de INSERT:
\z authors;
REVOKE
De la misma manera que se otorgaron los privilegios al usuario martin se le pueden retirar
con el comando REVOKE la sintaxis básica del comando es:
Así que con el usuario postgres ejecuto los siguientes comandos para retirarle los
privilegios otorgados a martin en la tabla y en la secuencia: