01/02/2006, 14:42
|
| | | Fecha de Ingreso: enero-2002
Mensajes: 59
Antigüedad: 22 años, 10 meses Puntos: 0 | |
Interbase Tema : Interbase / Firebird Pregunta : ¿Qúe son los Roles? Respuesta
Los Roles son parte del sistema de seguridad de Firebird/InterBase. Permiten que se manejen de manera más fácil los permisos, ya que podemos crear roles y asignarles los permisos a éstos (y también revocárselos).
Posteriormente se puede asignar un rol a uno o más usuarios.
De esta manera ya no repetimos la asignación de permisos por cada tabla a cada usuario, facilitando la asignación de permisos y creando una especie de "tipos de usuarios".
Esto es muy útil cuando las bases de datos tienen muchas tablas, procedimientos y vistas.
Por ejemplo, supongamos que tenemos un rol SUPER_USUARIO definido con TODOS los privilegios sobre la tabla PRUEBA.
SQL> create table prueba (i1 integer);
SQL> create role SUPER_USUARIO;
SQL> grant all on prueba to SUPER_USUARIO;
SQL> show grant prueba;
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES
ON PRUEBA TO SUPER_USUARIO
A los usuarios USUARIO1 y USUARIO2 le consederemos que asuman los privilegios del rol SUPER_USUARIO.
SQL> grant SUPER_USUARIO to USUARIO1;
SQL> grant SUPER_USUARIO to USUARIO2;
Ahora los usuarios USUARIO1 y USUARIO2 tienen todos los privilegios para la tabla PRUEBA, cuando ellos se conecten asumiendo el rol SUPER_USUARIO. Si los usuarios USUARIO1 y USUARIO2 intentan conectarse sin asumir el rol SUPER_USUARIO, entonces, no tendrán privilegio alguno sobre la tabla PRUEBA.
Ejemplo 1.- Conexión sin asumir el rol SUPER_USUARIO.
SQL> connect basededato.gdb user usuario1 password usuario1;
Database: basededato.gdb, User: usuario1
SQL> select * from prueba;
Statement failed, SQLCODE=-551
no permission for read/select access to table PRUEBA
Ejemplo 2.- Conexión asumiendo el rol SUPER_USUARIO.
SQL> connect basededato.gdb user usuario1 password usuario1 role super_usuario;
Database: basededato.gdb, User: usuario1
SQL> select * from prueba; |