En este artículo hemos visto como agregar usuarios, borrar usuarios, y cambiarles la contraseña:
https://firebird21.wordpress.com/2013/04/21/agregando-modificando-y-borrando-usuarios/
Esas personas podrán acceder a la Base de Datos pero aún no podrán realizar alguna operación en ella, ni siquiera una consulta. El Firebird por defecto les impide que ejecuten los comandos INSERT, UPDATE, DELETE, SELECT, EXECUTE PROCEDURE.
¿Por qué eso?
Porque para mantener el acceso y la utilización de la Base de Datos seguros los usuarios deben tener permisos solamente a las operaciones que específicamente se les hayan otorgado. Si no se les otorgó el permiso para realizar una operación, no podrán realizar esa operación.
Por ejemplo, a los vendedores no se les otorga el permiso para modificar los precios de venta de los productos; a los empleados no se les otorga el permiso para cambiar su propio sueldo; a los contadores no se les otorga el permiso de cambiar los datos de una venta; etc.
Si intentan realizar una operación a la cual no tienen permiso, el Firebird lo impedirá.
¿Qué es un rol?
Es el nombre otorgado a un grupo de usuarios que tienen exactamente los mismos permisos. Por ejemplo, se podría tener un rol llamado R_VENDEDORES en el cual se especificarán los permisos que poseen las personas que tienen ese rol. Todas las personas cuyo rol sea R_VENDEDORES tendrán esos permisos pero ninguno más. A los miembros de este rol se les podrían otorgar el permiso de insertar ventas (pero no modificarlas ni borrarlas), el permiso de consultar las cantidades en stock y los precios de venta de los productos (pero no insertar ni modificar ni borrar los datos de los productos). A los miembros de este rol no se les permitirá ver las compras ni las cobranzas ni los pagos ni los sueldos ni las comisiones de otros vendedores ni muchas otras cosas más.
¿Cómo se crea un rol?
Con el comando CREATE ROLE NombreRol
¿Cómo se elimina un rol?
Con el comando DROP ROLE NombreRol
¿Cuál es el comando usado para otorgarles permisos a los usuarios y a los roles?
El comando se llama GRANT (conceder, otorgar, en castellano) y su sintaxis es la siguiente:
GRANT
{<permisos> ON <objeto> | rol}
TO <concedido>
[WITH {GRANT|ADMIN} OPTION]
[{GRANTED BY | AS} [USER] otorgador]
¿Cuáles son los permisos que se pueden otorgar?
SELECT
Consultar datos
INSERT
Agregar nuevas filas
UPDATE
Modificar datos existentes
DELETE
Borrar filas
REFERENCES
Referirse a una Primary Key desde una Foreign Key. Siempre se debe
otorgar este permiso para que puedan seleccionarse las columnas de
la tabla referida.
ALL
Todos los anteriores
EXECUTE
Ejecuta un stored procedure o lo llama usando SELECT cuando se
trata de un stored procedure seleccionable
ROLE
Adquiere todos los privilegios otorgados al rol. Una vez que un
rol existe y se le han otorgado permisos, se convierte en un
permiso que se les puede otorgar a los usuarios.
¿Qué significa WITH GRANT OPTION?
Que el usuario a quien se le otorgó ese permiso tiene el derecho de otorgarles ese mismo permiso a otros usuarios.
¿Cómo se quita un permiso?
Con el comando REVOKE.
REVOKE <permisos>
ON <objeto>
FROM <revocado>
Ejemplo 1. Otorgando el permiso de hacer SELECT a la tabla PRODUCTOS al usuario ALICIA
GRANT SELECT ON PRODUCTOS TO ALICIA
Ejemplo 2. Otorgando los permisos de SELECT y de INSERT y de UPDATE a la tabla PRODUCTOS al usuario SUSANA
GRANT INSERT, UPDATE, SELECT ON PRODUCTOS TO SUSANA
Ejemplo 3. Otorgando todos los permisos a la tabla PRODUCTOS al usuario GRACIELA
GRANT ALL ON PRODUCTOS TO GRACIELA
Ejemplo 4. Otorgando el permiso de cambiar el Código de Barras y el Precio de Venta de los productos al usuario INES
GRANT UPDATE (PRD_CODBAR, PRD_PREVTA) ON PRODUCTOS TO INES
Ejemplo 5. Otorgando el permiso de ejecutar el stored procedure GRABAR_PRODUCTO al usuario RAQUEL
GRANT EXECUTE ON PROCEDURE GRABAR_PRODUCTO TO RAQUEL
Ejemplo 6. Recibiendo y otorgando el permiso de hacer SELECT a la tabla PRODUCTOS
GRANT SELECT ON PRODUCTOS TO SILVIA WITH GRANT OPTION
Y ahora Silvia puede escribir:
GRANT SELECT ON PRODUCTOS TO MARCELA
GRANT SELECT ON PRODUCTOS TO LUCIANA WITH GRANT OPTION
Ejemplo 7. Otorgando permisos a un stored procedure
GRANT INSERT, UPDATE ON PRODUCTOS TO PROCEDURE GRABAR_PRODUCTO
En este ejemplo al stored procedure GRABAR_PRODUCTO se le otorgó el permiso de INSERT y de UPDATE a la tabla PRODUCTOS. Eso significa que si un usuario tiene el permiso de ejecutar el stored procedure también tendrá el permiso se insertar y de actualizar la tabla respectiva. Si no se hace así entonces habrá que asignarle a cada usuario individualmente (y a cada rol individualmente) los derechos de insertar y de actualizar la tabla, y eso llevaría mucho más tiempo.
GRANT ALL ON PRODUCTOS TO PROCEDURE RECALCULAR_SALDOS
En este ejemplo al stored procedure RECALCULAR_SALDOS se le otorgaron todos los permisos sobre la tabla PRODUCTOS. O sea que dentro de ese stored procedure se puede insertar, modificar, borrar, seleccionar datos y referenciar tablas.
Ejemplo 8. Otorgando los permisos a varios usuarios a la vez
GRANT SELECT ON PAISES TO ALICIA, GRACIELA, SILVIA, SUSANA
Estos cuatro usuarios podrán realizar consultas a la tabla PAISES
Ejemplo 9. Creando roles
CREATE ROLE R_ADMINISTRACION
CREATE ROLE R_VENDEDORES
(El nombre del rol no tiene por qué empezar con R_, esa es solamente una costumbre del autor de este blog, si quieres a tu rol lo puedes llamar: ADMINISTRACION, CONTADORES, VENDEDORES, etc., pero si el nombre empieza con R_ es más fácil saber que se trata de un rol)
Ejemplo 10. Otorgándole permisos al rol
GRANT UPDATE(PRD_PREVTA) ON PRODUCTOS TO R_ADMINISTRACION
GRANT INSERT, SELECT ON PRODUCTOS TO R_VENDEDORES
Ejemplo 11. Quitándole el permiso de hacer SELECT a la tabla PRODUCTOS al usuario ALICIA
REVOKE SELECT ON PRODUCTOS FROM ALICIA
Ejemplo 12. Quitándole todos los permisos a la tabla PRODUCTOS al usuario SUSANA
REVOKE ALL ON PRODUCTOS FROM SUSANA
Ejemplo 13. Quitándole el derecho de ejecutar el stored procedure GRABAR_PRODUCTO al usuario RAQUEL
REVOKE EXECUTE ON PROCEDURE GRABAR_PRODUCTO FROM RAQUEL
Ejemplo 14. Quitándole el derecho de otorgar permisos al usuario SILVIA
REVOKE GRANT OPTION FOR SELECT ON PRODUCTOS FROM SILVIA
Artículo relacionado:
El índice del blog Firebird21
Comentarios recientes