Seguridad en SQL

05/07/2007 - 20:24 por Antonio Belmonte | Informe spam
Tenemos unos programas hechos en VB6 contra Access y los estamos migrando a
SQL server 2005 Express (como entorno de pruebas, el año que viene creo que
el jefe nos concederá sql 2005 para 20 usuarios). El entorno es Windows
2003 server con Active Directory. Hay 100 usuarios, aunque apenas hay 50
transacciones diarias y nunca trabajan más de 10 usuarios simultáneos (las
bases de datos, con los históricos de 10 años, no llegan a los 100Mb)
De momento, la migración de bases de datos y el acceso desde el programa
está resuelto y funciona bien, pero tengo muchas dudas respecto a cómo
organizar la seguridad de accesos.
Me gustaría que a las bases de datos sólo pudieran acceder los programas y
el administrador del sistema (con el SQL Manager), pues los programas,
dependiendo del usuario, ya mapean qué tablas, campos o porciones de
registros puede ver o modificar cada uno (hay programas bastante complejos,
con 11 perfiles de usuario, cada uno de los cuales accede a tablas o campos
específicos).
Lo he conseguido poniendo en SQL server el modo de autenticación Mixto,
poniendo contraseña al usuario sa, y pasando dicho usuario y contraseña en
las cadenas de conexión ADO del programa. Pero en el manual, Microsoft
desaconseja el uso de la autenticación mixta, recomendando sólo el uso del
modo de autenticación de Windows.
Hay un posible problema añadido: el año que viene, en nuestra corporación,
todas las contraseñas (incluidas las de administrador) van a caducar cada 45
días. Si utilizo la autenticación de windows igual tengo problemas para
acceder a las bases de datos desde los programas.
La verdad es que estoy hecho un lío con las políticas de usuario de SQL
Server 2005.
¿Me pueden orientar un poco?
Muchas gracias.

Una cosa más: el jefe comenta que si para el escaso movimiento de la base de
datos (hay días en que se insertan apenas 20 registros), tenemos suficiente
con la versión gratuita (express). ¿Qué opinan?

Preguntas similare

Leer las respuestas

#6 Isaias
06/07/2007 - 21:02 | Informe spam
Maxi, como siempre, excelente pregunta.

Yo solo me colgaria con esto, ¿Que caso tendria que Pepe fuera ADMINISTRADOR
y no poder utilizar el Enterprise (Consolo de Administracion)?
Saludos
IIslas


"Maxi" wrote:

Hola, y porque a Pepe le vas a poner derechos administrativos sobre toda la
base de datos? cual es el sentido de hacer esto?


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Florencio Cebrian" escribió en el mensaje
news:%
> Gracias por responder.
>
> Supongamos que pongo autentificación windows, y desde su terminal entra el
>
> usuario Pepe. Pepe arranca el programa y me gustaría que dicho programa
>
> tuviera derechos de administrador sobre toda la base de datos. Pero lo que
>
> no quiero es que Pepe pueda entrar a la base de datos desde una
> herramienta
>
> como SQL Server 2005 Management Studio Express que él pueda instalar en su
>
> máquina. Vamos, quiero que, en el caso de usuarios no administradores,
> sólo
>
> el programa "vea" la base de datos.
>
> ¿Cómo lo hago? (Perdón, pero vengo de un entorno Access en el que se
>
> protegía el fichero .mdb con contraseña y poco más)
>
> "Carlos Sacristan" <nomail> escribió en el mensaje
> news:%
>> Por partes:
>>
>> con SQL Server 2005 Express no vas a tener problemas con ese número de
>> transacciones por segundo ni por el tamaño de las bases de datos. Si el
>> día de mañana se os queda pequeña, siempre podréis actualizar más
>> fácilmente simplemente comprando una versión superior y ampliando el
>> hardware.
>>
>> Lo que has conseguido con autentificación mixta lo puedes hacer con
>> autentificación Windows, y más fácilmente; tienes más ventajas (con esta
>> segunda opción) porque tienes la seguridad centralizada y no tienes que
>> crear usuarios de SQL específicos. El hecho de que caduquen las
>> contraseñas no es un problema, ya que si el usuario accede a la red,
>> podrá acceder a las bases de datos (recuerda, la seguridad está
>> centralizada).
>>
>> Lo que no debes hacer es acceder con el usuario sa, pues éste tiene
>> todos los permisos, no sólo sobre ciertas bases de datos o tablas, sino
>> sobre el propio servidor. Yo en tu lugar crearía roles que les asignaría
>> los permisos específicos que quieras, y posteriormente asignárselo a los
>> usuarios, independientemente de que las aplicaciones accedan a las tablas
>> que quieras.
>>
>>
>> "Antonio Belmonte" escribió en el mensaje
>> news:%23SwI%
>>> Tenemos unos programas hechos en VB6 contra Access y los estamos
>>> migrando a SQL server 2005 Express (como entorno de pruebas, el año que
>>> viene creo que el jefe nos concederá sql 2005 para 20 usuarios). El
>>> entorno es Windows 2003 server con Active Directory. Hay 100 usuarios,
>>> aunque apenas hay 50 transacciones diarias y nunca trabajan más de 10
>>> usuarios simultáneos (las bases de datos, con los históricos de 10 años,
>>> no llegan a los 100Mb)
>>> De momento, la migración de bases de datos y el acceso desde el programa
>>> está resuelto y funciona bien, pero tengo muchas dudas respecto a cómo
>>> organizar la seguridad de accesos.
>>> Me gustaría que a las bases de datos sólo pudieran acceder los programas
>>> y el administrador del sistema (con el SQL Manager), pues los programas,
>>> dependiendo del usuario, ya mapean qué tablas, campos o porciones de
>>> registros puede ver o modificar cada uno (hay programas bastante
>>> complejos, con 11 perfiles de usuario, cada uno de los cuales accede a
>>> tablas o campos específicos).
>>> Lo he conseguido poniendo en SQL server el modo de autenticación Mixto,
>>> poniendo contraseña al usuario sa, y pasando dicho usuario y contraseña
>>> en las cadenas de conexión ADO del programa. Pero en el manual,
>>> Microsoft desaconseja el uso de la autenticación mixta, recomendando
>>> sólo el uso del modo de autenticación de Windows.
>>> Hay un posible problema añadido: el año que viene, en nuestra
>>> corporación, todas las contraseñas (incluidas las de administrador) van
>>> a caducar cada 45 días. Si utilizo la autenticación de windows igual
>>> tengo problemas para acceder a las bases de datos desde los programas.
>>> La verdad es que estoy hecho un lío con las políticas de usuario de SQL
>>> Server 2005.
>>> ¿Me pueden orientar un poco?
>>> Muchas gracias.
>>>
>>> Una cosa más: el jefe comenta que si para el escaso movimiento de la
>>> base de datos (hay días en que se insertan apenas 20 registros), tenemos
>>> suficiente con la versión gratuita (express). ¿Qué opinan?
>>>
>>>
>>
>>
>>
>
>
>



Respuesta Responder a este mensaje
#7 Jesús López
10/07/2007 - 12:34 | Informe spam
Para cumplir con los requisitos que planteas el consejo de Isaias es más que
adecuado.

El proceso a seguir es el siguiente:

1) Crea un grupo de Windows por cada perfil de usuario
2) Añade los usuarios a los grupos de Windows correspondientes.
3) Añade un inicio de sesión Windows por cada grupo de windows creado en el
paso 1
4) Da permiso de acceso a la base de datos a los inicios de sesión creados
en el paso 3.
5) Crea un rol de aplicación en la base de datos.
6) Da los permisos necesarios al rol de aplicación. Como según dices quieres
que la aplicación tenga todos los permisos sobre la base de datos, lo más
fácil sería hacer que el rol de aplicación sea miembro del rol fijo de base
de datos db_owner.


Con este esquema los usuarios pueden conectarse con cualquier herramienta a
la base de datos, pero no pueden hacer nada en ella, ni siquiera ver las
tablas que tiene. La aplicación cliente se conecta a SQL Server usando
autentificación Windows, y nada más conectarse activa el rol de aplicación
usando el procedimiento almacenado sp_setapprole, a partir de ese momento
adquiere los permisos concedidos al rol.

Además con este esquema se puede saber desde SQL Server cual es el usuario
conectado usando SUSER_NAME()



Saludos:

Jesús López.
Solid Quality Mentors
www.solidq.com

"Florencio Cebrian" escribió en el mensaje
news:%
Gracias por responder.

Supongamos que pongo autentificación windows, y desde su terminal entra el

usuario Pepe. Pepe arranca el programa y me gustaría que dicho programa

tuviera derechos de administrador sobre toda la base de datos. Pero lo que

no quiero es que Pepe pueda entrar a la base de datos desde una
herramienta

como SQL Server 2005 Management Studio Express que él pueda instalar en su

máquina. Vamos, quiero que, en el caso de usuarios no administradores,
sólo

el programa "vea" la base de datos.

¿Cómo lo hago? (Perdón, pero vengo de un entorno Access en el que se

protegía el fichero .mdb con contraseña y poco más)

"Carlos Sacristan" <nomail> escribió en el mensaje
news:%
Por partes:

con SQL Server 2005 Express no vas a tener problemas con ese número de
transacciones por segundo ni por el tamaño de las bases de datos. Si el
día de mañana se os queda pequeña, siempre podréis actualizar más
fácilmente simplemente comprando una versión superior y ampliando el
hardware.

Lo que has conseguido con autentificación mixta lo puedes hacer con
autentificación Windows, y más fácilmente; tienes más ventajas (con esta
segunda opción) porque tienes la seguridad centralizada y no tienes que
crear usuarios de SQL específicos. El hecho de que caduquen las
contraseñas no es un problema, ya que si el usuario accede a la red,
podrá acceder a las bases de datos (recuerda, la seguridad está
centralizada).

Lo que no debes hacer es acceder con el usuario sa, pues éste tiene
todos los permisos, no sólo sobre ciertas bases de datos o tablas, sino
sobre el propio servidor. Yo en tu lugar crearía roles que les asignaría
los permisos específicos que quieras, y posteriormente asignárselo a los
usuarios, independientemente de que las aplicaciones accedan a las tablas
que quieras.


"Antonio Belmonte" escribió en el mensaje
news:%23SwI%
Tenemos unos programas hechos en VB6 contra Access y los estamos
migrando a SQL server 2005 Express (como entorno de pruebas, el año que
viene creo que el jefe nos concederá sql 2005 para 20 usuarios). El
entorno es Windows 2003 server con Active Directory. Hay 100 usuarios,
aunque apenas hay 50 transacciones diarias y nunca trabajan más de 10
usuarios simultáneos (las bases de datos, con los históricos de 10 años,
no llegan a los 100Mb)
De momento, la migración de bases de datos y el acceso desde el programa
está resuelto y funciona bien, pero tengo muchas dudas respecto a cómo
organizar la seguridad de accesos.
Me gustaría que a las bases de datos sólo pudieran acceder los programas
y el administrador del sistema (con el SQL Manager), pues los programas,
dependiendo del usuario, ya mapean qué tablas, campos o porciones de
registros puede ver o modificar cada uno (hay programas bastante
complejos, con 11 perfiles de usuario, cada uno de los cuales accede a
tablas o campos específicos).
Lo he conseguido poniendo en SQL server el modo de autenticación Mixto,
poniendo contraseña al usuario sa, y pasando dicho usuario y contraseña
en las cadenas de conexión ADO del programa. Pero en el manual,
Microsoft desaconseja el uso de la autenticación mixta, recomendando
sólo el uso del modo de autenticación de Windows.
Hay un posible problema añadido: el año que viene, en nuestra
corporación, todas las contraseñas (incluidas las de administrador) van
a caducar cada 45 días. Si utilizo la autenticación de windows igual
tengo problemas para acceder a las bases de datos desde los programas.
La verdad es que estoy hecho un lío con las políticas de usuario de SQL
Server 2005.
¿Me pueden orientar un poco?
Muchas gracias.

Una cosa más: el jefe comenta que si para el escaso movimiento de la
base de datos (hay días en que se insertan apenas 20 registros), tenemos
suficiente con la versión gratuita (express). ¿Qué opinan?












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