Seguridad en SQL Server

Seguridad en SQL Server

Hola gente ! hoy inauguramos un nueva tema en el foro el cual es la seguridad en sql server, espero les sea de utilidad !.


Comentarios

En el log de sql2005, me deja el siguiente texto si se borra una base de datos:

2009-10-07 11:25:13.06 spid54 SQL Server has encountered 2 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2009-10-07 11:25:13.07 spid54 SQL Server has encountered 2 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2009-10-07 11:25:13.07 spid54 SQL Server has encountered 2 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.

Como puedo saber el nombre de la base de datos borrada???.
Muchas gracias, Paco

Hola Paco como estas !, bueno, seguramente utilizaste el wizard o ayudante de SQL Server para generar un plan de mantenimiento de base de datos, es por ello que cada vez que se elimina una base de datos, te queden jobs apuntando a la base borrada. Lo primero que haría es chequear la salida de todos los jobs agendados en el sql server, para ver errores y warning.

Con respecto a como saber cual es la base de datos borrada es muy sencillo:

1) Query para listar base de datos:

select dbid,dbname from sysdatabases;

2) Buscar por el errorlog de SQL server los siguientes string:

deleted database
drop database
removed database

3) Para determinar en tiempo de ejecución que aplicacion o usuario puede estar borrando una base de datos, levanta un Profiler de SQL Server y graba en una tabla o archivo para almacenar y luego realizar la búsqueda.

Abrazo virtual.

Muchas gracias JLopez por tu ayuda. Voy a poner en marcha lo que me propones.

como puedo saber que usario elimino un registro de la DB

como puedo visualizar el log de esta

saludos

Victor C

Hola Victor como estas !, te comento, en versiones 2005 y superior lo podes encarar a través de DML TRIGGERS, para las operaciones de DELETE sobre la tabla afectada.
Para poder registrar y leer la actividad deberías crear una tabla en la misma base de datos o bien en otra tipo de auditoria, donde el trigger realice un insert a la misma, con los datos de usuario y registro.
Puedes utilizar las funciones SESSION_USER (Transact-SQL), USER_NAME,SUSER_SNAME para determinar el usuario y GETDATE() fecha y hora entre otras funciones.
Resumiendo:
TRIGGERS DML, FUNCIONES y TABLAS de auditoria.

Espero te sirva.

Abrazo Virtual.

Que tal gente, como le puedo hacer para que una persona no pueda abrir dos veces el query analyzer con su mismo usuario y password... por seguridad ya corro una trace de actividad de consulta a tablas, pero no quiero que dos peronas puedan leer las tablas con el mismo usuario....

Gabriel GM

Hola Gabriel como estas !, te cuento que para solucionar tu duda, lo que te aconsejo es que utilices "Logon Triggers" que es una feature nueva a partir de SQL Server 2005 y por lógica aplicable en 2008.
Nosotros a la brevedad estaremos subiendo un articulo relacionado a tip de seguridad en sql server y tocaremos el tema "Logon Triggers"

Que versiòn de SQL estàs utilizando ?

Te paso un artìculo que te serà muy útil para que puedas realizar pruebas:

http://msdn.microsoft.com/en-us/library/bb326598(SQL.90).aspx

Contame como te fue.

Gracias por responder, la version que utilizo es SQL 2000 y supongo que esta es una razon mas para emigrar al 2005.....

Gabriel GM

Hola tengo un problema, necesito los logins que ingresan a SQL Server en un 2005 y solo veo 'sa' y 'Loprete' que es mi usuario, saben que puede estar pasando ?, lo que estoy corriendo es:

sqlcmd -SServerDB06CC0001 -E -Q "select loginname from master.sys.syslogins"

Gracias !

Ok, como estas !, vamos por parte:

1) Si estas corriendo sobre un SQLServer 2005, deberías reemplazar el TSQL por:

"select name from sys.server_principals"

2) Solo ves 'sa' y 'loprete' pues te faltan permisos.

3) Para solucionar el problema y que te muestre todos los loguines te deben agregar al rol de servidor "Security Admin''.

Saludos,