Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Seguridad en sqlServer 2000

Estas en el tema de Seguridad en sqlServer 2000 en el foro de SQL Server en Foros del Web. Que tal, mi problema es el sig: tengo una aplicacion de windows hecha en .net que se conecta con un nombre de usuario y contraseña ...
  #1 (permalink)  
Antiguo 05/12/2005, 08:18
 
Fecha de Ingreso: febrero-2005
Mensajes: 3
Antigüedad: 19 años, 9 meses
Puntos: 0
Exclamación Seguridad en sqlServer 2000

Que tal, mi problema es el sig: tengo una aplicacion de windows hecha en .net que se conecta con un nombre de usuario y contraseña a una base de datos sqlServer, cuyo servidor se encuentra instalado en la misma maquina que la aplicación. Hasta aca todo perfecto, el tema es que cualquier persona puede abrir el SQL Server Esterprise Manager o el Query Analyzer y navegar por las tablas como si nada. Quisiera poder ponerle un password a la BD o mejor aun, al SqlServer Group, de modo que se les pida una contraseña si intentan acceder desde el Manager o el Query.
Espero cualquier concejo que me puedan dar.
Gracias, Walter.
  #2 (permalink)  
Antiguo 05/12/2005, 13:02
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Bueno, primero que nada necesitas ver que tipo de autentificación maneja el SQL, seguramente lo tienes configurado para autentificar usuarios con NT, entonces si varios usuarios tienen la cuenta de admin de tu NT, pues se supone que tienen privilegios sobre el SQL, en estos casos es mejor manejar la autentificación con SQL.

Después necesitarás crear uno o varios usuarios de SQL con los roles y privilegios específicos sobre esta base de datos.

Para ver esto, desde el enterprise manager, necesitas localizar tu servidor de SQL----click derecho----propiedades----seguridad----revisa que la autentificación la estés haciendo con SQL y Windows en lugar de solamente Windows.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 05/12/2005, 15:26
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Opcion 1) Usar un usuario y passwords fijos (usuario standard).

Opcion 2) Revisar los Application Roles existentes en SQL Server y aplicarlos.

Opción 3) Programar un job que corra automáticamente cada pocos minutos para que expulse a los usuarios que no utilicen tu aplicación (basándote en el query de abajo):

select spid, program_name from master..sysprocesses
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 10/01/2006, 03:53
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta

Hola, yo estoy en el mismo caso que walterzeppelin. Al igual que él yo quiero que nadie pueda ver mi base de datos y que solo se pueda acceder a ella desde mi aplicación. Lo que pasa es que veo que un administrador de máquina siempre podrá acceder a ella, ¿verdad? He intentado aplicar las opciones que dices pero por varias razones no puedo:

Opcion 1) Usar un usuario y passwords fijos (usuario standard). No puedo porque yo solo voy a instalar el servidor en el caso de que no exista, pero si existe solo adjunto la base. Es decir no puedo controlarlo.

Opcion 2) Revisar los Application Roles existentes en SQL Server y aplicarlos.
Es lo que estoy intentando pero el administrador de máquina siempre puede ver la base y sus objetos. A mi me gustaría tener solo un usuario con contraseña y que solo él pudiera ver los objetos de base de datos. No sé que puedo hacer.

Opción 3) Programar un job que corra automáticamente cada pocos minutos para que expulse a los usuarios que no utilicen tu aplicación. No me soluciona nada, ya que lo que yo quiero es que nadie vea en ningún momento mis tablas ni mis consultas.

A ver si me podéis ayudar. Gracias.
  #5 (permalink)  
Antiguo 11/01/2006, 16:28
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Cita:
Iniciado por jokaoviedo
Opcion 2) Revisar los Application Roles existentes en SQL Server y aplicarlos.
Es lo que estoy intentando pero el administrador de máquina siempre puede ver la base y sus objetos. A mi me gustaría tener solo un usuario con contraseña y que solo él pudiera ver los objetos de base de datos. No sé que puedo hacer.
Dentro del grupo de seguridad eso es lo que sucede por default (admin de maquina es admin de sql), pero si borras el login BUILTIN\Administrators te olvidas de esa posibilidad y solo entra la gente que esté definida en el resto de los logins.

Si por alguna razón (como aplicaciones previas) no puedes borrar ese grupo no hay nada que puedas hacer para impedirlo.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 12/01/2006, 10:20
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias. Voy a intentarlo a ver si puedo hacerlo pero, ¿si hago lo que dices entonces ningún administrador podrá acceder al administrador corporativo? Yo quiero limitar el acceso solo a mi base de datos, no a todas.

Entonces el propietario de la base tendrá que ser un usuario que no forme parte de BUILTIN\Administrators pero y pregunto, ¿si yo adjunto la base de datos en otro equipo y otro servidor, la base seguirá siendo sólo accesible por un usuario?

Muchas gracias.
  #7 (permalink)  
Antiguo 12/01/2006, 13:04
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Puedes dar acceso a todas excepto a la tuya de esta manera.

Quitales permisos de sysadmin (nivel servidor) y dales permisos de dbo (nivel db) en cada db excepto la tuya

Con eso seran administradores de las DB, pero aún así no podrán hacer cosas como crear nuevos usarios (necesitas permisos de sysadmin)
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #8 (permalink)  
Antiguo 13/01/2006, 04:51
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias Mithrandir. Eso lo puedo hacer, pero hay que tener en cuenta que mi problema es al distribuir la base de datos y claro, en algunos casos el usuario instalará el servidor SQL Server que yo incluyo en el programa pero en otros ya lo tendrá y sólo querrá instalar la base de datos. Por tanto yo nunca tocaré en su servidor, solo sobre la base.

Ejemplo: yo te entrego mi base de datos y tu la adjuntas. Yo no quiero que puedas acceder a ella salvo desde mi programa directamente. Si el owner de la base es un usuario dado con su contraseña tu no podrías acceder ¿cierto? ¿Y desde una aplicación donde la conexión especifique el user y el password?

Según he leido parece que el nuevo SQL Server 2005 incluye la posibilidad de encriptar completamante la base de datos. Así que también puede ser una buena solución.
  #9 (permalink)  
Antiguo 13/01/2006, 16:45
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Si existe entonces puede ser de utlidad. Con SQL2000 lo unico que te queda es SIEMPRE instalar en una instancia separada, de esta manera podran coexistir diferentes servicios de SQL Server, y cada uno con sus diferentes administradores y políticas.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #10 (permalink)  
Antiguo 16/01/2006, 05:03
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por Mithrandir
Si existe entonces puede ser de utlidad. Con SQL2000 lo unico que te queda es SIEMPRE instalar en una instancia separada, de esta manera podran coexistir diferentes servicios de SQL Server, y cada uno con sus diferentes administradores y políticas.
Pues entonces ya me aclaras que, salvo que instale una instancia separada, NUNCA voy a poder evitar que alguien vea el diseño de mi base de datos. Pues la solución es que en mi programa tendré que forzar siempre a instalar el servidor y crear la instancia personalizada.

Otra solución es esperar a la salida en español del SQL Server Express 2005 para ver como funciona eso de la encriptación de las bases de datos.
  #11 (permalink)  
Antiguo 16/01/2006, 13:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 43
Antigüedad: 19 años, 1 mes
Puntos: 0
Mithrandir, es un poco confuso el tema.

En una ocación estaba investigando como hacerle para que
mis usuarios no lograran conectarce por SQL a mi BD y en
esa ocación me comentaste que utilizara lo que son los
Roles.
Lo cual me dio buen resultado

- Yo cree una rol el cual para accesar a el requeria de un password.
- el Administrador de la BD era el unico que tenia acceso a la definicion
de los roles
- en mi aplicación activo el rol con lo cual me permite que estando este
activo mi aplicación tenga acceso a las tablas y a la base de datos

- De esa manera si un usuario quieria accesar por medio de SQL a esta
BD no podria ya que tiene que ser habilitado el rol.
- en mi caso mis usarios no tienen derechos de admin y por lo tanto no
pueden midificar el rol que defini y no tendran acceso a la BD.

Parece que el punto que estan tratando es un poco mas complejo y me gustaria entenderlo ya que para mi tambien es muy importante el acceso a mis BD.
  #12 (permalink)  
Antiguo 16/01/2006, 16:31
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Cita:
Pues entonces ya me aclaras que, salvo que instale una instancia separada, NUNCA voy a poder evitar que alguien vea el diseño de mi base de datos. Pues la solución es que en mi programa tendré que forzar siempre a instalar el servidor y crear la instancia personalizada.
Exactamente eso.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #13 (permalink)  
Antiguo 16/01/2006, 16:34
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 6 meses
Puntos: 25
Gabriel, en tu caso eso funcionaba bien; pero en este caso el problema es que pueden existir usuarios dados de alta como administradores del servidor, y aún así es necesario impedir el acceso a la DB.

Los roles no funcionan porque estos no requieren de permisos definidos explícitamente para poder utilizar los objetos.

Espero que esto halla aclarado tus dudas.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #14 (permalink)  
Antiguo 16/01/2006, 17:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 43
Antigüedad: 19 años, 1 mes
Puntos: 0
Ups.....

Sierto en mi caso no tengo este problema debido a que mis usarios no tienen derechos de admin.

Y en el caso de jokaoviedo tiene administradores a los cuales no quiere que mediante la consola puedan darse derechos a los roles.

Ups, u se requiere que no tengan acceso estas persona solo por medio de un sistema.

Chin.. esta peliagudo el asunuto.

Si la Versión de Sql Server 2005 tiene la capaciadad de encriptar las BD y que solo esta llave la pueda utilizar el SA esta Chilo.

Esto resolveria todos los problemas, me imagino?
  #15 (permalink)  
Antiguo 17/01/2006, 05:58
 
Fecha de Ingreso: enero-2006
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por Gabriel Sanchez
Ups.....

Sierto en mi caso no tengo este problema debido a que mis usarios no tienen derechos de admin.

Y en el caso de jokaoviedo tiene administradores a los cuales no quiere que mediante la consola puedan darse derechos a los roles.

Ups, u se requiere que no tengan acceso estas persona solo por medio de un sistema.

Chin.. esta peliagudo el asunuto.

Si la Versión de Sql Server 2005 tiene la capaciadad de encriptar las BD y que solo esta llave la pueda utilizar el SA esta Chilo.

Esto resolveria todos los problemas, me imagino?
Espero que sí, ya que me parece una cosa importante. La seguridad no es sólo acceso, lectura, escritura, ..., también es proteger el diseño de la base de datos, que en mi caso es lo que más me ha costado, dado que no se trata de una base estándar y tiene su dificultad.

La verdad es que no hay mucha información todavía de como se hace en SQL Server 2005. Yo me he bajado la versión trial del Enterprise y hoy la instalaré a ver como funciona el tema. No creo que a Microsoft le sea muy complicado, mediante un user y un password, encriptar y desencriptar la base. Voy a investigar y os comento.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.