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)
-   -   Usuarios y roles (https://www.clubdelphi.com/foros/showthread.php?t=36622)

morta71 18-10-2006 20:01:34

Usuarios y roles
 
Como expuse en otro hilo http://www.clubdelphi.com/foros/showthread.php?p=160825 estoy intentando traspasar unas aplicaciones paradox a firebird, y de paso realizo alguna mejora.

Quisiera introducir el control de acceso de usuarios. Con Paradox, había realizado una tabla de Usuarios + Contraseña y tirando millas.

Bien quisiera realizar un control algo más detallado y decente: Usuario, Contraseña, + opciones / operaciones / tablas permitidas.

He estado indagando sobre lo expuesto, y creo deducir que ésto se podría realizar a través de los usuarios de firebird y algo que no entiendo muy bien que son el "rol" o "roles", en lugar de usar una tabla de usuarios y permisos.

¿Voy bien encaminado?, ¿me podeis ampliar información al respecto, o algún link (en castellano) que hable sobre el tema?.

Lo de los usuarios está claro, el tema del "rol" o "roles" está oscuro.

Mil gracias

TJose 20-10-2006 04:12:23

Hola morta71, foro!

1) Diferencia entre rol y usuario: un usuario esta definido a nivel servidor y disponible para cualquier base de datos, un rol se define a nivel base de datos.

2) Puedes trabajar implementado reglas de seguridad sin utilizar roles, sólo con usuarios (insisto, defidos en el servidor). Esto es, creas el usuario usuario1 con su correspondiente password. El siguiente paso es asignarles sus permisos en los diferentes objetos de la base de datos, permisos para seleccionar, para insertar, modificar registros en tablas, para ejecurtar ciertos procedimientos, etc. Hasta aqui todo bien, si tu base no es muy grande en un par de horas tendrás debidamente configurados todos los permisos para usuario1. Ahora bien, que pasa si tienes 30 usuarios. Deberás realizar, con suerte y si es que todos tienen el mismo perfil, la misma tarea 30 veces. Esto no es muy práctico

3) Los roles al rescate. Un rol se define en la base de datos, p/ej: rlAdministrador, rlOperador, rlLectura, etc, y en la misma base de datos defino que permisos tendrá cada rol, siguiendo con el ejemplo, rlAdministrador tendrá permisos totales, rlLectura, podrá seleccionar, pero no podrá ni insertar ni modificar registros, etc. Luego asigno roles a usuarios: usuario1 tendrá los roles rl1, rl2, etc, el usuario2 los roles rl1 y rl3, de esta manera una vez que defino los permisos de los roles, agregar un nuevo usuario al sistema y asignarle sus permisos es una tarea muy simple. Además cualquier modificacion en las reglas de permisos la haces una sola vez para un cierto rol y todos los usuarios con este rol adquieren estas modificaciones.

Ejemplo:
Código SQL [-]
create role rlAdministrador;

grant select, insert, update, delete, references on clientes to rladministrador;
grant execute on procedure spabm_clientes to rladministrador;

luego para asignar un rol a un usuario

Código SQL [-]
grant rladministrador to usuario1;

Espero que te sirva. Cualquier duda coméntala

Saludos
TJose

morta71 20-10-2006 17:23:08

Gracias TJose por tu cristalina exposición, algo así es lo que he estado buscando, y por supuesto la respuesta estaba delante.

Ya veo, si no entendi mal, está integrado en la misma base de datos, al igual que lo están los dominios, tablas, etc... Es decir que si utilizo una base de datos por empresa o ejercicio fiscal; ya sea creándola desde un script o clonando de algún modo una BD vacía de datos, estaría integrando en cada una de ellas las reglas predefinidas de cada rol al igual que tablas, etc...

Gracias :)

totote 13-12-2007 14:24:32

Tengo una duda con respecto a esto de roles y usuarios, los usuarios se deben crear antes de ser asignado o al asignarlo a un rol ya se crea? de ser así, que debe ser creado el usuario, como se crea un usuario?

Otra cosa que significa "WITH GRANT OPTION"?

Espero que me puedan ayudar ya que este post tiene mas de un año.

Saludos

laukri 13-12-2007 18:20:19

Cita:

Empezado por totote (Mensaje 252380)
Tengo una duda con respecto a esto de roles y usuarios, los usuarios se deben crear antes de ser asignado o al asignarlo a un rol ya se crea? de ser así, que debe ser creado el usuario, como se crea un usuario?

Otra cosa que significa "WITH GRANT OPTION"?

Espero que me puedan ayudar ya que este post tiene mas de un año.

Saludos

la opcion "WITH GRANT OPTION" significa que el usuario puede delegar o pasar sus permisos a otros usuarios.
espero que sea eso lo que necesitabas....
saludos :)

laukri 13-12-2007 18:33:10

Cita:

Empezado por totote (Mensaje 252380)
Tengo una duda con respecto a esto de roles y usuarios, los usuarios se deben crear antes de ser asignado o al asignarlo a un rol ya se crea? de ser así, que debe ser creado el usuario, como se crea un usuario?

Otra cosa que significa "WITH GRANT OPTION"?

Espero que me puedan ayudar ya que este post tiene mas de un año.

Saludos

no habia leido la primera parte del mensaje...
es indistinto que crees primero el rol y despues los usuarios o viseversa...
Eso si al momento de asignarle a un usuario un rol tienen que estar los 2 creados...
para crear el usuario (en IBExpert): tenes que ir al menu tools --> user manager. y desde alli crear los usuarios.
para crear el rol: create rol ADMINISTRADOR
Para asignarle un rol a un usuario: grant ADMINISTRADOR to NOMBRE_USER

espero q te sirva... saludos

totote 13-12-2007 19:56:04

Greacias, Laukri la verdad que si, me re ayudo. Un saludo y gracias de nuevo

rastafarey 15-12-2007 17:40:25

resp
 
Para lo que quieres hacer es preferible qu etrabajes con una tabla en tu base datos ya que lso rol so para cualqueir db peor si queres trbajar igualmente con los roles pueden ponerle un prefijo a los roles par qu esepas de que base de datos son. Por que tu aplicacion no sera la unica que se conecte al servidor de base de datos

santiaguinillo 04-02-2008 17:00:45

Crear usuarios BBDD a través de SQL
 
Cita:

Empezado por laukri (Mensaje 252443)
para crear el usuario (en IBExpert): tenes que ir al menu tools --> user manager. y desde alli crear los usuarios.
para crear el rol: create rol ADMINISTRADOR
Para asignarle un rol a un usuario: grant ADMINISTRADOR to NOMBRE_USER

espero q te sirva... saludos


Hola,

estoy buscando como crear un usuario y sólo veo la forma de hacerlo con alguna aplicación (como ibexpert) o bien utilizar gsec.

Necesitaria crear usuarios en tiempo real y a ser posible a través de sentencias sql. No veo documentación que lo indique ni posts en el foro. ¿Existe la posibilidad de hacerlo con sentencias sql?

De no ser posible ¿podría ejecutar gsec desde algún lenguaje? (sh, php, perl...)

Un saludo,
Santi.

EDITO: "Sobre un SGBD Firebird 2.0"

jachguate 04-02-2008 17:44:37

Cita:

Empezado por santiaguinillo (Mensaje 263266)
Necesitaria crear usuarios en tiempo real y a ser posible a través de sentencias sql. No veo documentación que lo indique ni posts en el foro. ¿Existe la posibilidad de hacerlo con sentencias sql?

Aún no, según los planes para el 2008, será la versión 2.5 (a finales del 2008) la que nos de esa característica.

Cita:

Empezado por santiaguinillo
De no ser posible ¿podría ejecutar gsec desde algún lenguaje? (sh, php, perl...)

Si se puede, y es lo que queda.

Hasta luego.

;)

santiaguinillo 05-02-2008 09:36:58

Agradecimientos
 
Gracias por todo jachguate,

guardaré tu blog en marcadores de firefox para seguir el calendario de Firebird.

Un saludo,
Santi.


La franja horaria es GMT +2. Ahora son las 18:15:30.

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