Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Seguridad en las tablas (https://www.clubdelphi.com/foros/showthread.php?t=28167)

santi33a 12-12-2005 13:01:03

Seguridad en las tablas
 
Hola a todos:
Les escribo para ver si alguien me da una idea de como soluionar el problema que a continuación les presento:
Simplificando un poco tengo una tabla parecida a esta en SQL Server 2000
Nombre: Documentos
Campo1:idDoc int
Campo2:idEmp int
Campo3:imp money
Ahora quien puede acceder a esta tabla lo controlo por los permisos en el servirdor de SQL, sin embargo tambien me interesaria que ciertos usuarios puedieran acceder en dependencia del valor de idEmp por ejemplo:
Si idEmp = 1 entonces G_Usuarios1 sean los que pueden acceder

cualquier sugerencia siempre es bienvenida

Santiago

Casimiro Notevi 12-12-2005 13:15:13

Según me ha parecido entender, porque no está muy claro :(

En la tabla de usuarios debes tener un campo que sea algo así como "permiso", si es '1' es que tiene, si es '0' es que no tiene permisos.
Cuando vas a acceder a esa tabla Documentos, si el usuario tiene "permiso=1" le dejas entrar, que no... pues no.

Creo que es eso a lo que te refieres

santi33a 12-12-2005 17:25:22

En realidad no tengo una tabla que se llame usuarios, los usuarios los importo de Windows y a estos les doy permisos a

SELECT UPDATE ....

en las tablas, pero lo que necesito es en dependencia del usuario y del valor de un campo de la tabla les dejo

SELECT UPDATE .... o EXEC

santi33a 14-12-2005 21:36:24

yo he pensado en dos formas de hacerlo pero a las dos le encuentro dificultades
1 Forma
Creo una tabla con la sgte extructura
Código SQL [-]
 create table EmpUs (idEmp int, Usuario varchar(30))
y el administrador del servidor SQL la llena por ejemplo
idEmp Usuario
1 'PEPE'
1 'JUAN'
2 'RAUL'
3 'PEDRO'
ahora en la aplicación cliente yo me conecto en BD atraves de Store Proecedure donde le paso como parametro entre otras cosas el idemp
Código SQL [-]
Create Procedure pDoc @idEmp int as
 if exists(select idEmp from EmpUs where idEmp = @idEmp and Usuario = user)
  select * From Documentos where idEmp = @idEmp
 else 
  raiserror('usuario no autorizado',16,1)
pero de esta forma pudiera suceder que un usuario de otra idEmp instale en su PC alguna herramienta cliente donde pudiera mandar una consulta como
Código SQL [-]
select  * from Documentos
y tener datos de otras empresas
2 Forma
Crear tantas BD como empresas y en la aplicación cliente pregunto por la Empresa y entonces se conecte a ella si tiene permiso el usuario por supuesto, pero entonces tendria repetido todos los Store Procedure y Funciones, ademas si en un momento determinado existen dos clientes usando la aplición de Empresas diferentes tendria en memoria compilaciones de las mismas consultas (me parece), ademas de repetirce todas las tablas y objetos del sistema que crea cada BD

Por lo que agradeceria cualquier sugerencia o idea


La franja horaria es GMT +2. Ahora son las 11:13:02.

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