Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Inconvenientes con los Roles (https://www.clubdelphi.com/foros/showthread.php?t=64770)

GustavoCruz 17-04-2009 20:38:37

Inconvenientes con los Roles
 
Hola amigos foreros,

Hoy tengo unos inconvenientes con los roles...
Esto es lo que estoy haciendo:
  1. A los roles creados (administrador, digitador, pagador) le doy estos permisos:
    Código SQL [-]
    grant select, delete, insert, update on sltable to administrador, digitador, pagador
  2. Luego le asigno a un usuario el rol adecuado, de este modo:
    Código SQL [-]
    grant administrador to gustavo with admin option
    ;
el problema es que cuando hago una consulta a la tabla 'sltable'; me muestra el mensaje que dice que el usuario no tiene los privilegios para tal acción...

Me gustaría saber qué estoy haciendo mal :confused:.

De antemano muchas gracias por sus aportes.

Gustavo Cruz

Gallosuarez 18-04-2009 02:04:24

Permisos...
 
Gustavo:

Primero, asegúrate que existan los roles:

Código SQL [-]
select *
from rdb$roles

Despues, asegúrate que se han otorgado los permisos a los usuarios y a los roles:

Código SQL [-]
select *
from rdb$user_privileges

En el "scrip" donde otorgo los permisos a usuarios y roles tengo la costumbre de siempre iniciar con la siguiente setencia:
Código SQL [-]
delete from rdb$user_privileges where rdb$user = 'RHADMIN';

'RHADMIN' pueder ser un rol o un usuario, en este caso en particular es una role. Esto lo hago en vez de utilizar "revoke", para que asi evitar se quede con permisos a objetos a haya tenido con anterioridad.

Espero que esto te sirva de algo.

Saludos,

Gerardo Suárez Trejo

P.D. Por cierto, recuerda que también es posible otorgar permisos a procedimentos almacenados y a disparadores :eek: La verdad que esto no lo sabia, y resulta ser de mucha utilidad.

GustavoCruz 18-04-2009 16:57:21

Hola amigo Gallosuarez,
cuando dice: "Despues, asegúrate que se han otorgado los permisos a los usuarios y a los roles:"; quieres decir que debo asignarles los permisos a los usuarios al igual que a los roles???:confused: o los permisos a los roles y después a los usuarios los roles correspondientes...

Te agradezco mucho por tus aportes.


Gustavo Cruz

GustavoCruz 18-04-2009 17:02:36

una vez más amigo Gallosuarez, he notado que existe un campo llamado rdb$description, cómo hago para llegar a él

porque la forma, habitual, de crear un rol no nos muestra, además, la forma de describirlo...

Gracias

Gustavo Cruz

Gallosuarez 18-04-2009 21:27:55

Aclaraciones...
 
Gustavo:

A lo que me refería es a lo siguiente:

1.-Debes de crear tus usuarios y roles (no importa el orden al crearlos).
2.-Debes de dar los permisos que gustes a los roles.
3.-Asegúrate que exista los roles:
Código SQL [-]
SELECT *
FROM RDB$ROLES
4.-Asegúrate que los permisos fueron otorgados a los roles correctamente:
Código SQL [-]
SELECT *
FROM RDB$USER_PRIVILEGES
WHERE RDB$USER = 'NOMBRE DEL ROLE"
(ojo, el nombre del role DEBE de estar en mayúsculas)
En el campo de RDB$USER debe de aparecer las roles que fueron creadas.
En el campo de RDB$USER_PRIVILEGE debe de aparece un S para Select (ver, seleccionar), U para Update (cambiar, actualizar), I para Insert (insertar, agregar), D para Delete (borrar, eliminar). En caso de procedimientos Almacenados aparece una X de Execute (ejecutar).
5.- Finalmente si vuelves a correr la sentencia:
Código SQL [-]
SELECT *
FROM RDB$USER_PRIVILEGES
WHERE RDB$USER = 'NOMBRE DEL USUARIO"
En el compo RDB$USER debe de aparacer el nombre del usuario
En le campo RDB$RELATION_NAME debe de aparacer el nombre del Role que le estás asignándole.

Nota: Hay mas campos, algunos, por el nombre puedes deducir a que se refieren, sin embargo, te sugiero que leas la documentación que viene en la instalación de Firebird y allí podrás ver todos los detalles.

Saludos,
Gerardo Suárez Trejo


La franja horaria es GMT +2. Ahora son las 21:31:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi