Ir al contenido


Foto

¿Es posible hacer ésto?


  • Por favor identifícate para responder
5 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 04 julio 2013 - 08:55

Buen día/tarde/noche, compañeros...

Yo sé que es posible AÑADIR un usuario y un perfil de usuario con sus GRANT's a una base de datos Firebird..., pero ¿es posible OBTENER los datos de UserID, password, nombre del perfil, GRANT's asegurados? ¿Cómo o con qué instrucciones?

¿Es posible MODIFICAR éstos datos? Igualmente, con qué instrucciones.
  • 0

#2 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 04 julio 2013 - 10:58

Firebird tiene 2 tablas de sistema en la que almacena este tipo de información (o parte de ella) que son RDB$USER_PRIVILEGES y RDB$ROLES

No obstante, la lista de usuarios/passwords no podrás conseguirla, no hay ninguna sentencia SQL que te la de y no se guardan en tablas de sistema.
  • 0

#3 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 04 julio 2013 - 12:42

Puedes modificar esos datos con estos comandos:
http://www.firebirds...-user-mgmt.html
  • 0

#4 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 04 julio 2013 - 01:40

Firebird tiene 2 tablas de sistema en la que almacena este tipo de información (o parte de ella) que son RDB$USER_PRIVILEGES y RDB$ROLES

No obstante, la lista de usuarios/passwords no podrás conseguirla, no hay ninguna sentencia SQL que te la de y no se guardan en tablas de sistema.


Puedes modificar esos datos con estos comandos:
http://www.firebirds...-user-mgmt.html


Les platico mi idea (a ver en qué me pueden colaborar con sus ideas) y "sintonizarnos" para cumplimentar la pregunta. Es tener una serie de perfiles, tipo "administrador", "capturista", "reporteo" y asignarles "grants" a cada uno de ellos, ponerlos en una tabla que actuaría como catálogo y entonces, al añadir un usuario nuevo a la tabla correspondiente, generar un usuario dentro del motor de la base de datos y asignándole el rol que de acuerdo al perfil le corresponda, y así usar automáticamente los permisos correspondientes.

Ejemplo: Yo tengo tres roles dentro del motor, y en una tabla de mi base de datos, un catálogo de perfiles que permitirá o no una serie de acciones contra las tablas que integren la base de datos. En el momento que Pepe Pérez sea añadido como usuario de mi programa como usuario que solamente emite reportes, al mismo tiempo añadir al motor de la base de datos a un usuario "pepeperez" con el perfil "reporteo" (y sus consiguientes privilegios) y cada vez que se solicite la entrada de usuario, Pepe Pérez SIEMPRE podrá emitir sus reportes sin problemas.

Un subproducto de ésto es que quiero añadirle a mis desarrollos la capacidad de generar una bitácora de los movimientos de usuarios, horas, fechas, estaciones de trabajo y así.

Gracias por su apoyo y comprensión.
  • 0

#5 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 05 julio 2013 - 12:41

Pues creo que tú mismo te contestas :-)

Si ya tienes definidos los roles, sólo tienes que decirle a éstos qué acciones podrán hacer sobre qué tablas (select, delete, update, insert).

Al aplicarle el rol a un nuevo usuario, éste heredará los permisos del rol.

Para monitorear lo que hace cada usuario, puedes usar los triggers de las tablas. La función CURRENT_USER te devolverá el nombre de usuario que está realizando la acción.

La tabla de sistema MON$ATTACHMENTS te dará información de los usuarios conectados (creo que sólo en SuperServer, deberías de probar en Classic y SuperClassic), datos como usuario, IP,..... Dale un vistazo a ver qué datos pueden servirte para tu propósito.

Además, los componentes de acceso a Firebird, si son de acceso nativo, suelen tener algún componente que te da la lista de usuarios (no sé si sólo activos, tendría que probarlo). Por ejemplo, en FireDAC se hace a través de su componente TADIBSecurity y si propiedad Users (que devuelve un dataset). Un ejemplo de uso:



delphi
  1. ADIBSecurity.DisplayUsers;
  2. ADMemTable1.AttachTable(ADIBSecurity.Users, nil);
  3. ADMemTable1.Open;



Con toda esta información ya puedes generar el log de accesos que quieras

En fin, no sé, creo que no se me ocurre nada más

Nos leemos

PD: me está gustando mucho FireDAC :)
  • 0

#6 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 05 julio 2013 - 06:13

Saludos.

Por lo regular esos permisos lo manejo a nivel de la aplicación mas no desde el motor, entiendo que es más fácil este método.

Tal como apunta @cadetill, los componentes que intervengan en la conexión por lo regular traen componentes para administración de usuarios y en las versiones modernas de Firebird tienen comandos "SQL" para obtener la información necesaria.

Con esta herramienta, es de pago, puedes generar los Logs:
IB LogManager
La versión full de IbExpert te permite también realizar esta tarea, puedes descargar la versión de prueba y hacer lo que necesitas.


  • 0




IP.Board spam blocked by CleanTalk.