Sobre seguridad a nivel de usuario ¿?

23/11/2004 - 18:56 por Carlos A. Díaz | Informe spam
Hola compañero, quisiera que me ayuden a contruir un camino para una duda.
Hasta el momento en mis sistema con bases de datos mdb creaba una tabla de
usuarios y numeraba los permisos y los guardaba en un memo, para luego
cuando arranque el sistema habilitar opciones si tenia el correspondiente
permiso, ahora con SQL Server estoy implementando la autenticación NT y
tengo la duda de cual seria lo mas conveniente para los permisos, lei
articulos sobre seguridad y sql dinamico en www.helpdna.net y no se di dejar
la administrador del SQL la creación de usuario o hacerlo desde el sistema,
es ese caso dar permisos a usuarios, grupos o definir roles.
Agradeceria alguine me aclare como se implementa estas cuestiones.

Saludos, Carlos

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
23/11/2004 - 19:17 | Informe spam
Te aconsejo que lo hagas como indicas, utilizando la arquitectura de
seguridad de SQL Server, y no tablas tuyas.
Conseguiras aumentar la seguridad de tus datos, y tener una gran
flexibilidad a la hora de dar o quitar privilegios.

Y por supuesto, evitarás que alguien acceda a la base de datos desde fuera
de tu aplicación y pueda hacer cualquier tarea para la que no esté
autorizado.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Hola compañero, quisiera que me ayuden a contruir un camino para una duda.
Hasta el momento en mis sistema con bases de datos mdb creaba una tabla de
usuarios y numeraba los permisos y los guardaba en un memo, para luego
cuando arranque el sistema habilitar opciones si tenia el correspondiente
permiso, ahora con SQL Server estoy implementando la autenticación NT y
tengo la duda de cual seria lo mas conveniente para los permisos, lei
articulos sobre seguridad y sql dinamico en www.helpdna.net y no se di
dejar la administrador del SQL la creación de usuario o hacerlo desde el
sistema, es ese caso dar permisos a usuarios, grupos o definir roles.
Agradeceria alguine me aclare como se implementa estas cuestiones.

Saludos, Carlos

Respuesta Responder a este mensaje
#2 Javier Loria
23/11/2004 - 19:18 | Informe spam
Hola:
Mi opinion:
Hace como 100 anos, escribia programas de DOS que tenia sus propios
"drivers" de impresion, en ellos controlaba el tamano de la letra, si usa
italicos, etc. Cuando vino Windows 3.1/3.11 esto era un "Servicio" que
brindaba el Sistema Operativo, de manera tal que ya no interactuaba con la
impresora sino unicamente con el Windows. Podria haber seguido manejando mis
propios codigos para manipular la impresora, pero la verdad mis programas
eran mas compatibles, faciles de hacer y mas actualizables porque uso los
servicios de Windows..
Con la seguridad creo que pasa igual, ahora la seguridad es algo que
puedes hacer o puedes usar los servicios de autenticacion del Windows, o sea
que el que valide si un usuario es valido o no, sea el Windows. Si decides
hacerlo en tu aplicacion debes tomar en cuenta que el mundo de internet y la
seguridad han cambiado muchisimo en los ultimos 5 anos. Debes definir por lo
menos, largos de claves, frecuencia de cambios, complejidad de claves,
bloqueo de cuentas, y todo esto parametrizable. El tipico usuario/clave
grabado en una tabla no es suficiente, e incluso es peor que no tener
seguridad!!!, ya que al comprometer la clave de los usuarios, estas
probablmente comprometiendo la seguridad de sus propietarios (Pin de Cajero
Automatico, cuentas de aplicaciones, cuentas en sitios Web, etc.)
En mi caso yo prefiero descansar la autenticacion en el Windows, que me
ofrece todo esto con muy poco codigo y en un ambiente seguro.
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

"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> wrote in message
news:
Hola compañero, quisiera que me ayuden a contruir un camino para una duda.
Hasta el momento en mis sistema con bases de datos mdb creaba una tabla de
usuarios y numeraba los permisos y los guardaba en un memo, para luego
cuando arranque el sistema habilitar opciones si tenia el correspondiente
permiso, ahora con SQL Server estoy implementando la autenticación NT y
tengo la duda de cual seria lo mas conveniente para los permisos, lei
articulos sobre seguridad y sql dinamico en www.helpdna.net y no se di


dejar
la administrador del SQL la creación de usuario o hacerlo desde el


sistema,
es ese caso dar permisos a usuarios, grupos o definir roles.
Agradeceria alguine me aclare como se implementa estas cuestiones.

Saludos, Carlos


Respuesta Responder a este mensaje
#3 Maxi
23/11/2004 - 19:22 | Informe spam
Carlos, creo que debes dividir las aguas:

Una cosa son los permisos del usuario hacia la BDD y otra muy distinta los
permisos de la aplicacion.

Te cuento mi modelo, quizas puedas aplicar el mismo ;)

1) Dispongo de un inicio de sesion por usuario (aca puedo usar
autentificacion Win o Sql)
2) Dispongo en mis sistemas una tabla de usuarios la cual utilizo para darle
permisos a mis modulos
3) Implemento el uso de SP para todo.Dentro de mis SP no hay nada de
SQL-Dinamico
4) Tambien implemento Roles de aplicacion, los cuales tienen acceso a los SP
y a las tablas de mi sistema.

El inicio de sesion realmente no tiene acceso a nada de nada, cuando se
conecta usa el rol y este tiene acceso a los SP.

Con esto me aseguro que los login no puedan acceder por fuera de mi
aplicacion bajo ningun concepto :)

Tambien hago otras cosillas como esta:

En la tabla de usuarios guardo una contraseña encriptada (generalmente uso
Md5), el sistema al iniciar tiene una pantalla de Welcome donde pregunta
User_id, Pass.

Ahi tambien hay un tilde que indica si usa autentificacion Windows o no, si
usa Windows, me conecto al motor y luego valido el usuario en mi sistema,
esto me permite tener muchos controles sobre la aplicacion.

Si la autentificacion es Sql, entonces hago otra cosilla ;) el pass en lugar
de encriptarloc on md5 lo encripto con Hash, por lo cual para un mismo pass
hay 2 datos distintos. Con esto que logro, que no tiene forma el usuario de
logear ya que no es la palabra que pone en password de la pantalla, y ademas
si por algun descuido accede a la tabla usuarios de mi aplicacion y saca la
clave encriptada de ahi, tampoco le sirve :)

Bue, esto es solo un modelito, no lo tomes al pie del cañon ;)



Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Hola compañero, quisiera que me ayuden a contruir un camino para una duda.
Hasta el momento en mis sistema con bases de datos mdb creaba una tabla de
usuarios y numeraba los permisos y los guardaba en un memo, para luego
cuando arranque el sistema habilitar opciones si tenia el correspondiente
permiso, ahora con SQL Server estoy implementando la autenticación NT y
tengo la duda de cual seria lo mas conveniente para los permisos, lei
articulos sobre seguridad y sql dinamico en www.helpdna.net y no se di
dejar la administrador del SQL la creación de usuario o hacerlo desde el
sistema, es ese caso dar permisos a usuarios, grupos o definir roles.
Agradeceria alguine me aclare como se implementa estas cuestiones.

Saludos, Carlos

Respuesta Responder a este mensaje
#4 Carlos A. Díaz
23/11/2004 - 20:20 | Informe spam
Muchas gracias por responder, te ire poniendo mis dudas bajo tu respuesta:

From: "Maxi"
Newsgroups: microsoft.public.es.sqlserver
Sent: Tuesday, November 23, 2004 3:22 PM
Subject: Re: Sobre seguridad a nivel de usuario ¿?


Carlos, creo que debes dividir las aguas:

Una cosa son los permisos del usuario hacia la BDD y otra muy distinta los
permisos de la aplicacion.

Te cuento mi modelo, quizas puedas aplicar el mismo ;)

1) Dispongo de un inicio de sesion por usuario (aca puedo usar
autentificacion Win o Sql)



Vi que el SQL2000 trae la autentificación SQL desabilitada por defecto, en
tu caso la hablitas?

2) Dispongo en mis sistemas una tabla de usuarios la cual utilizo para
darle permisos a mis modulos



Masomenos como definis esa tabla y que permisos tiene. Yo tambien dispongo
una tabla de usuarios pero al usar aut. NT no guardo la pwd.

3) Implemento el uso de SP para todo.Dentro de mis SP no hay nada de
SQL-Dinamico
4) Tambien implemento Roles de aplicacion, los cuales tienen acceso a los
SP y a las tablas de mi sistema.



Le quitas todos los permisos al usuario y solo le das al sp que correponda ?
o para algunos le das permisos de lectura a tablas, tengo una grilla que le
permite al usuario realizar filtros personalidados segun los fields del
recordset, permitirias esto?


El inicio de sesion realmente no tiene acceso a nada de nada, cuando se
conecta usa el rol y este tiene acceso a los SP.

Con esto me aseguro que los login no puedan acceder por fuera de mi
aplicacion bajo ningun concepto :)



En el caso de intalar un sistema en una empresa, como manejas los sp de tu
aplicación, los dejas planos o los enciptas para que los admin no puedan
modificarlos ?


Tambien hago otras cosillas como esta:

En la tabla de usuarios guardo una contraseña encriptada (generalmente uso
Md5), el sistema al iniciar tiene una pantalla de Welcome donde pregunta
User_id, Pass.

Ahi tambien hay un tilde que indica si usa autentificacion Windows o no,
si usa Windows, me conecto al motor y luego valido el usuario en mi
sistema, esto me permite tener muchos controles sobre la aplicacion.



si es masomenos como lo hacia, como guardas los permisos a tu aplicación, le
das codigo o tenes una tabla de permisos ?


Si la autentificacion es Sql, entonces hago otra cosilla ;) el pass en
lugar de encriptarloc on md5 lo encripto con Hash, por lo cual para un
mismo pass hay 2 datos distintos. Con esto que logro, que no tiene forma
el usuario de logear ya que no es la palabra que pone en password de la
pantalla, y ademas si por algun descuido accede a la tabla usuarios de mi
aplicacion y saca la clave encriptada de ahi, tampoco le sirve :)

Bue, esto es solo un modelito, no lo tomes al pie del cañon ;)



Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Hola compañero, quisiera que me ayuden a contruir un camino para una
duda. Hasta el momento en mis sistema con bases de datos mdb creaba una
tabla de usuarios y numeraba los permisos y los guardaba en un memo, para
luego cuando arranque el sistema habilitar opciones si tenia el
correspondiente permiso, ahora con SQL Server estoy implementando la
autenticación NT y tengo la duda de cual seria lo mas conveniente para
los permisos, lei articulos sobre seguridad y sql dinamico en
www.helpdna.net y no se di dejar la administrador del SQL la creación de
usuario o hacerlo desde el sistema, es ese caso dar permisos a usuarios,
grupos o definir roles.
Agradeceria alguine me aclare como se implementa estas cuestiones.

Saludos, Carlos





Respuesta Responder a este mensaje
#5 Carlos A. Díaz
23/11/2004 - 20:22 | Informe spam
Es la idea, lo que esperaba en la respuesta era masomenos una guia como la
de Maxi. Espero si puedes aportarme algo mas segun tu experiencia como
desarrollador.

Gracias, Carlos

"Salvador Ramos" escribió en el
mensaje news:
Te aconsejo que lo hagas como indicas, utilizando la arquitectura de
seguridad de SQL Server, y no tablas tuyas.
Conseguiras aumentar la seguridad de tus datos, y tener una gran
flexibilidad a la hora de dar o quitar privilegios.

Y por supuesto, evitarás que alguien acceda a la base de datos desde fuera
de tu aplicación y pueda hacer cualquier tarea para la que no esté
autorizado.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
Hola compañero, quisiera que me ayuden a contruir un camino para una
duda. Hasta el momento en mis sistema con bases de datos mdb creaba una
tabla de usuarios y numeraba los permisos y los guardaba en un memo, para
luego cuando arranque el sistema habilitar opciones si tenia el
correspondiente permiso, ahora con SQL Server estoy implementando la
autenticación NT y tengo la duda de cual seria lo mas conveniente para
los permisos, lei articulos sobre seguridad y sql dinamico en
www.helpdna.net y no se di dejar la administrador del SQL la creación de
usuario o hacerlo desde el sistema, es ese caso dar permisos a usuarios,
grupos o definir roles.
Agradeceria alguine me aclare como se implementa estas cuestiones.

Saludos, Carlos





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida