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

#6 Carlos A. Díaz
23/11/2004 - 20:27 | Informe spam
La verdad que 100 años deberia ser pero apenas son maximo 20 años del DOS,
la verdad que la historia de la informatica es nada comparada con la
historia de la vida, ni siquiera esta en pañales !!!.
Pero obviamente coincido con vos, no me pondre a reinventar la rueda,
obviamente voy por la autenticación NT, porque incluso veo que la aut. SQL
viene desabilitada por defecto, osea ¡autent. NT es lo que quieren, Ok!.
Como le respondi a Salvador, espero tu esperiencia respecto al tema de los
permisos.

Saludos, Carlos

PD: Que tal Costa Rica?

"Javier Loria" escribió en el mensaje
news:
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
#7 Maxi
23/11/2004 - 20:39 | Informe spam
ok, vamos a responder, entrelineas


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
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?



Yo uso mixta porque tengo clientes no windows que se podrian conectar en un
futuro.


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.




La tabla es muy simple, solo tiene:

Id, Clave, descripcion.

Luego esta tabla la relaciono con la de menus y funcionalidad y ahi defino
los permisos. Si usas .NET y reflexion poder hacer cosas interesantes :)

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?



Todos todos!! si usas consultas dinamicas desde el lado del cleinte no es
problema porque siempre uso Roles (justamente por si pasa esto), con lo cual
al ROL le doy todos los permisos y al usuario nada de nada :)

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 ?



Los encripto, pero eso igual no es problema

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 ?



Tengo una tabla de permisos por modulos y aca modulo llama a una clase
llamada Autentificarme, si da ok seguimos sino Excepcion :)

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
#8 Carlos A. Díaz
23/11/2004 - 20:50 | Informe spam
Gracias, lo mastico y cualquier cosa pido me tiren otra soga

:-)

Carlos

"Maxi" escribió en el mensaje
news:%
ok, vamos a responder, entrelineas


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:
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?



Yo uso mixta porque tengo clientes no windows que se podrian conectar en
un futuro.


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.




La tabla es muy simple, solo tiene:

Id, Clave, descripcion.

Luego esta tabla la relaciono con la de menus y funcionalidad y ahi defino
los permisos. Si usas .NET y reflexion poder hacer cosas interesantes :)

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?



Todos todos!! si usas consultas dinamicas desde el lado del cleinte no es
problema porque siempre uso Roles (justamente por si pasa esto), con lo
cual al ROL le doy todos los permisos y al usuario nada de nada :)

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 ?



Los encripto, pero eso igual no es problema

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 ?



Tengo una tabla de permisos por modulos y aca modulo llama a una clase
llamada Autentificarme, si da ok seguimos sino Excepcion :)

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
#9 Carlos A. Díaz
23/11/2004 - 23:43 | Informe spam
[Tucuman].[San Miguel de Tucuman].[dbo].[casa]

y vos?

Saludos

"Maxi" escribió en el mensaje
news:
OK, aca estaremos :)

pd: de que lugar de argentina sos?


Salu2

Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en el
mensaje news:%
Gracias, lo mastico y cualquier cosa pido me tiren otra soga

:-)

Carlos

"Maxi" escribió en el mensaje
news:%
ok, vamos a responder, entrelineas


Salu2
Maxi


"Carlos A. Díaz" <carlosadiaz[nos pa m]@uolsinectis.com.ar> escribió en
el mensaje news:
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?



Yo uso mixta porque tengo clientes no windows que se podrian conectar en
un futuro.


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.




La tabla es muy simple, solo tiene:

Id, Clave, descripcion.

Luego esta tabla la relaciono con la de menus y funcionalidad y ahi
defino los permisos. Si usas .NET y reflexion poder hacer cosas
interesantes :)

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?



Todos todos!! si usas consultas dinamicas desde el lado del cleinte no
es problema porque siempre uso Roles (justamente por si pasa esto), con
lo cual al ROL le doy todos los permisos y al usuario nada de nada :)

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 ?



Los encripto, pero eso igual no es problema

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 ?



Tengo una tabla de permisos por modulos y aca modulo llama a una clase
llamada Autentificarme, si da ok seguimos sino Excepcion :)

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





















Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.795 / Virus Database: 539 - Release Date: 12/11/2004

Respuesta Responder a este mensaje
#10 Salvador Ramos
24/11/2004 - 09:21 | Informe spam
Pues, creo que nada que no te haya contado Maxi más abajo, esa es la forma
en la que se suele administrar la seguridad :-)

Si te surge cualquier otra duda intentaremos ayudarte.

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:
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 AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida