auditoria

10/06/2004 - 10:08 por Jomaweb | Informe spam
Hola

Debo registrar cada vez que un usuario inserta o modifica un registro y
tenía un SP muy bonito pero me he dado cuenta que el usuario que registra es
siempre el de la máquina donde esté instalado el SQL Server.

Eso no me sirve porque no identifico al usuario individual (que por ASP si
que le tengo indentificado porque ha hecho login en la aplicación).

Evidentemente estoy intentando implementarlo a nivel de disparadores o
procedimientos almacenados porque meterlo en un ASP ya se me habia ocurrido
pero tendría que modificar la friolera de 200 páginas y eso es precisamente
lo que intento evitar.

¿no existe una función que me devuelva el usuario, no la máquina SQL (esto
es utópico)? ¿cómo podría hacer dicha auditoría?

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
10/06/2004 - 14:09 | Informe spam
Hola:

Puedes poner la connectionstring que estas utilizando ?

Un saludo
Salvador Ramos
Murcia - España
[MVP SQL Server]
www.helpdna.net

"Jomaweb" escribió en el mensaje
news:
Hola

Debo registrar cada vez que un usuario inserta o modifica un registro y
tenía un SP muy bonito pero me he dado cuenta que el usuario que registra


es
siempre el de la máquina donde esté instalado el SQL Server.

Eso no me sirve porque no identifico al usuario individual (que por ASP si
que le tengo indentificado porque ha hecho login en la aplicación).

Evidentemente estoy intentando implementarlo a nivel de disparadores o
procedimientos almacenados porque meterlo en un ASP ya se me habia


ocurrido
pero tendría que modificar la friolera de 200 páginas y eso es


precisamente
lo que intento evitar.

¿no existe una función que me devuelva el usuario, no la máquina SQL (esto
es utópico)? ¿cómo podría hacer dicha auditoría?


Respuesta Responder a este mensaje
#2 Jomaweb
10/06/2004 - 15:33 | Informe spam
cn.open "driver={SQL
Server};server2.168.1.1;uid=accesoweb;pwd=usuarioweb1;database=contratos

Como puedes ver le paso el mismo user y password para todas los accesos a la
BBDD.

¿con esa pregunta estás insinuando que podría crear tantas conexiones como
usuarios y así recuperar de alguna manera el identificador del usuario?

Sería interesante pero ¿eso no sobrecargaría de conexiones abiertas la
aplicación?


escribió en el mensaje news:
Hola:

Puedes poner la connectionstring que estas utilizando ?

Un saludo
Salvador Ramos
Murcia - España
[MVP SQL Server]
www.helpdna.net

"Jomaweb" escribió en el mensaje
news:
> Hola
>
> Debo registrar cada vez que un usuario inserta o modifica un registro y
> tenía un SP muy bonito pero me he dado cuenta que el usuario que


registra
es
> siempre el de la máquina donde esté instalado el SQL Server.
>
> Eso no me sirve porque no identifico al usuario individual (que por ASP


si
> que le tengo indentificado porque ha hecho login en la aplicación).
>
> Evidentemente estoy intentando implementarlo a nivel de disparadores o
> procedimientos almacenados porque meterlo en un ASP ya se me habia
ocurrido
> pero tendría que modificar la friolera de 200 páginas y eso es
precisamente
> lo que intento evitar.
>
> ¿no existe una función que me devuelva el usuario, no la máquina SQL


(esto
> es utópico)? ¿cómo podría hacer dicha auditoría?
>
>


Respuesta Responder a este mensaje
#3 ulises
10/06/2004 - 15:38 | Informe spam
Si te estás conectando con autenticación de windows esa
información la obtienes con SELECT SUSER_SNAME(), si estás
usando autenticación de SQL esa información te dará el
nombre del login con el cual has firmado, si usas un mismo
login para todos tus usuarios no te será de mucha ayuda.

Saludos,
Ulises

Hola

Debo registrar cada vez que un usuario inserta o modifica


un registro y
tenía un SP muy bonito pero me he dado cuenta que el


usuario que registra es
siempre el de la máquina donde esté instalado el SQL


Server.

Eso no me sirve porque no identifico al usuario


individual (que por ASP si
que le tengo indentificado porque ha hecho login en la


aplicación).

Evidentemente estoy intentando implementarlo a nivel de


disparadores o
procedimientos almacenados porque meterlo en un ASP ya se


me habia ocurrido
pero tendría que modificar la friolera de 200 páginas y


eso es precisamente
lo que intento evitar.

¿no existe una función que me devuelva el usuario, no la


máquina SQL (esto
es utópico)? ¿cómo podría hacer dicha auditoría?


.

Respuesta Responder a este mensaje
#4 Javier Loria
10/06/2004 - 15:38 | Informe spam
Hola:
Si la aplicacion de Web tiene un usuario de Windows asignado, (es lo mas
usado), desde la perspectiva de SQL el usuario es este usuario asignado.
Esto puedes revisarlo si te vas al administrador del Internet Information
Services y en la carpeta de tu aplicacion revisas la seguridad. Si permite
usuarios anonimos y tiene un usuario asignado estas usando este esquema.
Si tu aplicacion es de Intranet y usan Internet Explorer, entonces
puedes cambiar la configuracion del la aplicacion para que use la cuenta de
Windows del usuario. Esto permitira autenticar a sus usuarios con sus
cuentas de Window y el servidor de SQL puede llevar la bitacora respectiva.
Es importante senalar que esto produce mayor consumo de recursos y hace la
aplicacion mas lenta principalmente por la forma en que se manejan las
conexiones.
Si no puedes hacer lo anterior, porque es en Internet, no usan Internet
Explorer o el impacto en el desempeno es muy grande, no veo mas alternativa
que pasar a la BD el usuario como parametro :(
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jomaweb escribio:
Hola

Debo registrar cada vez que un usuario inserta o modifica un registro
y tenía un SP muy bonito pero me he dado cuenta que el usuario que
registra es siempre el de la máquina donde esté instalado el SQL
Server.

Eso no me sirve porque no identifico al usuario individual (que por
ASP si que le tengo indentificado porque ha hecho login en la
aplicación).

Evidentemente estoy intentando implementarlo a nivel de disparadores
o procedimientos almacenados porque meterlo en un ASP ya se me habia
ocurrido pero tendría que modificar la friolera de 200 páginas y eso
es precisamente lo que intento evitar.

¿no existe una función que me devuelva el usuario, no la máquina SQL
(esto es utópico)? ¿cómo podría hacer dicha auditoría?
Respuesta Responder a este mensaje
#5 Adrian D. Garcia
10/06/2004 - 20:13 | Informe spam
Asi es,
Si utilizas un usuario por cada conexion o seguridad integrada de windows
podrias sin ningun problema obtner automaticamente el nombre del usuario en
los disparadores/triggers. Eso si, tendras una carga adicional de trabajo
administrativo para controlar estos logins y sus permisos asociados.
Pero esto va en contra de la utilizacion del pool de conexiones y por otro
lado sobrecargaria al servidor.
En contrapartida si deseas obtener el nombre del usuario tendrias que
modificar todas tus paginas (veo que no has definido una capa comun de
acceso a datos en tu aplicacion, sino hubiese sido realmente sencillo) para
pasar como parametro adicional el nombre del usuario. Aun asi, el sistema no
seria tan seguro como la opcion anterior ya que si alguien modifica un dato
en forma manual (Access, Query Analizer, etc.) el cambio no quedaria
registrado en la forma deseada ya que se podria "trucar" quien es el usuario
que esta realizando la modificacion.

Como podes ver es una relacion del tipo

performance vs seguridad vs trabajo de programacion.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Jomaweb" wrote in message
news:%23GYZC%
cn.open "driver={SQL



Server};server2.168.1.1;uid=accesoweb;pwd=usuarioweb1;database=contratos

Como puedes ver le paso el mismo user y password para todas los accesos a


la
BBDD.

¿con esa pregunta estás insinuando que podría crear tantas conexiones como
usuarios y así recuperar de alguna manera el identificador del usuario?

Sería interesante pero ¿eso no sobrecargaría de conexiones abiertas la
aplicación?


> escribió en el mensaje news:
> Hola:
>
> Puedes poner la connectionstring que estas utilizando ?
>
> Un saludo
> Salvador Ramos
> Murcia - España
> [MVP SQL Server]
> www.helpdna.net
>
> "Jomaweb" escribió en el mensaje
> news:
> > Hola
> >
> > Debo registrar cada vez que un usuario inserta o modifica un registro


y
> > tenía un SP muy bonito pero me he dado cuenta que el usuario que
registra
> es
> > siempre el de la máquina donde esté instalado el SQL Server.
> >
> > Eso no me sirve porque no identifico al usuario individual (que por


ASP
si
> > que le tengo indentificado porque ha hecho login en la aplicación).
> >
> > Evidentemente estoy intentando implementarlo a nivel de disparadores


o
> > procedimientos almacenados porque meterlo en un ASP ya se me habia
> ocurrido
> > pero tendría que modificar la friolera de 200 páginas y eso es
> precisamente
> > lo que intento evitar.
> >
> > ¿no existe una función que me devuelva el usuario, no la máquina SQL
(esto
> > es utópico)? ¿cómo podría hacer dicha auditoría?
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida