sql server - tiene - ¿Cuál es la diferencia entre la autenticación del servidor SQL y la autenticación de Windows?
para que sirve el usuario sa en sql server (10)
Al otorgar acceso a un usuario a una base de datos, hay algunas consideraciones que deben hacerse con ventajas y desventajas en términos de usabilidad y seguridad. Aquí tenemos dos opciones para autenticar y otorgar permisos a los usuarios. El primero es otorgar a todos el acceso a la cuenta sa (administrador de sistemas) y luego restringir los permisos manualmente al mantener una lista de los usuarios a los que se pueden otorgar o denegar permisos según sea necesario. Esto también se conoce como el método de autenticación SQL. Existen importantes fallas de seguridad en este método, como se detalla a continuación. La segunda y mejor opción es que el Active Directory (AD) maneje toda la autenticación y autorización necesarias, también conocida como autenticación de Windows. Una vez que el usuario inicia sesión en su computadora, la aplicación se conectará a la base de datos utilizando las credenciales de inicio de sesión de Windows en el sistema operativo.
El principal problema de seguridad con el uso de la opción SQL es que viola el principio de mínimo privilegio (POLP), que es otorgarle al usuario los permisos absolutamente necesarios que necesita y nada más. Al usar la cuenta sa, presenta serios defectos de seguridad. Se viola el POLP porque cuando la aplicación usa la cuenta sa tienen acceso a todo el servidor de la base de datos. La autenticación de Windows, por otro lado, sigue al POLP al solo otorgar acceso a una base de datos en el servidor.
El segundo problema es que no es necesario que cada instancia de la aplicación tenga la contraseña de administrador. Esto significa que cualquier aplicación es un punto de ataque potencial para todo el servidor. Windows solo usa las credenciales de Windows para iniciar sesión en SQL Server. Las contraseñas de Windows se almacenan en un repositorio en lugar de en la instancia de la base de datos SQL y la autenticación tiene lugar internamente en Windows sin tener que almacenar contraseñas de SA en la aplicación.
Un tercer problema de seguridad surge al usar el método SQL implica contraseñas. Tal como se presenta en el sitio web de Microsoft y en varios foros de seguridad, el método SQL no ''exige el cambio de contraseña o el cifrado, sino que se envían como texto claro a través de la red. Y el método SQL no se bloquea después de intentos fallidos, lo que permite un intento prolongado de inmiscuirse. Sin embargo, Active Directory utiliza el protocolo Kerberos para cifrar contraseñas al tiempo que emplea un sistema de cambio de contraseña y bloqueo después de intentos fallidos.
También hay desventajas de eficiencia. Dado que requerirá que el usuario ingrese las credenciales cada vez que quiera acceder a la base de datos, los usuarios pueden olvidar sus credenciales.
Si un usuario fuera eliminado, tendría que eliminar sus credenciales de cada instancia de la aplicación. Si tiene que actualizar la contraseña de administrador, tendrá que actualizar cada instancia del servidor SQL. Esto lleva mucho tiempo y es inseguro, deja abierta la posibilidad de que un usuario despedido retenga el acceso al servidor SQL. Con el método de Windows, ninguna de estas preocupaciones surge. Todo está centralizado y manejado por el AD.
Las únicas ventajas de usar el método SQL radican en su flexibilidad. Puede acceder desde cualquier sistema operativo y red, incluso de forma remota. Algunos sistemas antiguos heredados, así como algunas aplicaciones basadas en la web, solo pueden admitir un acceso sa.
El método AD también proporciona herramientas de ahorro de tiempo, como grupos, para facilitar la tarea de agregar y eliminar usuarios y la capacidad de seguimiento del usuario.
Incluso si logra corregir estos fallos de seguridad en el método SQL, estaría reinventando la rueda. Al considerar las ventajas de seguridad proporcionadas por la autenticación de Windows, incluidas las políticas de contraseñas y siguiendo el POLP, es una opción mucho mejor que la autenticación SQL. Por lo tanto, se recomienda encarecidamente utilizar la opción de autenticación de Windows.
¿Cuál es la diferencia entre la autenticación del servidor sql y la autenticación de Windows ... ¿Hay alguna situación específica de uso de cada autenticación?
Autenticación es el proceso de confirmación de la identidad de un usuario o computadora. El proceso normalmente consta de cuatro pasos: el usuario realiza un reclamo de identidad, generalmente proporcionando un nombre de usuario. Por ejemplo, podría hacer este reclamo diciendo a una base de datos que mi nombre de usuario es "mchapple". El sistema desafía al usuario a probar su identidad. El desafío más común es una solicitud de contraseña. El usuario responde al desafío proporcionando la prueba solicitada. En este ejemplo, proporcionaría a la base de datos mi contraseña. El sistema verifica que el usuario haya proporcionado pruebas aceptables, por ejemplo, verificando la contraseña en una base de datos de contraseñas local o utilizando un servidor de autenticación centralizado.
Creo que la principal diferencia es la seguridad.
Autenticación de Windows significa que la identidad se maneja como parte de la aplicación de Windows y ahora la contraseña está siempre ''disponible'' para la interceptación.
Autenticación SQL significa que usted tiene que almacenar (o proporcionar) un nombre de usuario y una contraseña, lo que hace que sea mucho más fácil de violar. Se ha realizado un gran esfuerzo para que la autenticación de Windows sea muy robusta y segura.
Puedo sugerir que si implementa la Autenticación de Windows, use Grupos y Roles para hacerlo. Grupos en Windows y Roles en SQL. Tener que configurar muchos usuarios en SQL es un gran problema cuando puede configurar el grupo y luego agregar a cada usuario al grupo. (Creo que la mayoría de la seguridad debería hacerse de esta manera de todos modos).
Idealmente, la autenticación de Windows debe usarse cuando se trabaja en un tipo de Intranet de un entorno.
Mientras que, la autenticación de SQL Server se puede usar en todos los otros tipos de casos.
Aquí hay un enlace que podría ayudar.
La autenticación Mssql es muy preferible siempre que sea posible. Le permite conformarse con un dominio de Windows existente que ya se usa en su lugar de trabajo, y no necesita conocer las contraseñas de sus usuarios.
Sin embargo, parece que no sería posible utilizarlo en el caso de que la máquina del servidor no se autentique en la intranet de su lugar de trabajo local.
Si usa la autenticación sql, la seguridad dependerá exclusivamente de usted.
Si usa la autenticación de Microsoft, la seguridad se ocupa principalmente de usted, pero tendrá que lidiar con restricciones adicionales.
Modos de autenticación de SQL Server
SQL Server 2008 ofrece dos opciones de modo de autenticación :
El modo de autenticación de Windows requiere que los usuarios proporcionen un nombre de usuario y una contraseña de Windows válidos para acceder al servidor de la base de datos. En entornos empresariales, estas credenciales normalmente son credenciales de dominio de Active Directory.
El modo de autenticación mixta permite el uso de credenciales de Windows pero las complementa con cuentas de usuario locales de SQL Server que el administrador puede crear y mantener dentro de SQL Server.
No conozco SQLServer ni otro DBMS, pero me imagino que el beneficio es el mismo que con DB2 y Oracle. Si usa la autenticación de Windows, solo debe mantener un conjunto de usuarios y / o contraseñas, el de Windows, que ya está hecho para usted.
La autenticación DBMS significa tener un conjunto separado de usuarios y / o contraseñas que deben mantenerse.
Además, las contraseñas de Windows les permiten ser configuradas centralmente para la empresa (Active Directory) mientras que SQLServer tiene que mantener un conjunto para cada instancia de DBMS.
SQL Server tiene su propio sistema integrado de seguridad que cubre inicios de sesión y roles. Esto es separado y paralelo a los usuarios y grupos de Windows. Puede usar solo seguridad SQL y luego toda la administración ocurrirá dentro del servidor SQL y no hay conexión entre esos inicios de sesión y los usuarios de Windows. Si usa el modo mixto, los usuarios de Windows son tratados como inicios de sesión de SQL.
Hay una serie de características de cada enfoque:
1) Si desea utilizar la agrupación de conexiones, debe utilizar los inicios de sesión de SQL, o todos comparten el mismo usuario de Windows, lo cual no es una buena idea.
2) Si desea hacer un seguimiento de lo que está haciendo un usuario en particular, entonces tiene sentido usar la autenticación de Windows.
3) El uso de las herramientas de Windows para administrar usuarios es mucho más poderoso que SQL, pero el vínculo entre los dos es tenue, por ejemplo, si elimina un usuario de Windows, los datos relacionados dentro de SQL no se actualizan.
Si desea autenticar a los usuarios frente a los usuarios del sistema de Windows [creados por el Administrador], en ese caso irá a la Autenticación de Windows en su Aplicación.
Pero en caso de que quiera autenticar a los usuarios frente a un conjunto de usuarios disponibles en su base de datos de aplicaciones, entonces en ese caso querrá ir a Autenticación SQL.
Precisamente, si su aplicación es una aplicación web ASP.NET, puede usar controles de inicio de sesión estándar que dependen de Proveedores como SqlMembershipProvider, SqlProfileProvider. Puede configurar sus controles de inicio de sesión y su aplicación, ya sea que se autentique contra usuarios de Windows o usuarios de bases de datos de aplicaciones. En el primer caso, se llamará Autenticación de Windows y la posterior se conocerá como Autenticación de SQL.
Autenticación SQL
La Autenticación SQL es la autenticación típica utilizada para varios sistemas de bases de datos, compuesta por un nombre de usuario y una contraseña. Obviamente, una instancia de SQL Server puede tener múltiples cuentas de usuario (usando autenticación de SQL) con diferentes nombres de usuario y contraseñas. En los servidores compartidos donde diferentes usuarios deberían tener acceso a diferentes bases de datos, se debe usar la autenticación SQL. Además, cuando un cliente (computadora remota) se conecta a una instancia de SQL Server en otra computadora que no sea aquella en la que se está ejecutando el cliente, se necesita autenticación de SQL Server. Incluso si no define ninguna cuenta de usuario de SQL Server, en el momento de la instalación se agrega una cuenta de root - sa - con la contraseña que proporcionó. Al igual que cualquier cuenta de SQL Server, esto se puede utilizar para iniciar sesión de forma local o remota, sin embargo, si una aplicación es la que hace el inicio de sesión y debe tener acceso a una sola base de datos, se recomienda encarecidamente que no lo haga. use la cuenta sa, pero cree una nueva con acceso limitado. En general, la autenticación SQL es el principal método de autenticación que se utilizará, mientras que la que revisamos a continuación - Autenticación de Windows - es más conveniente.
Autenticación de Windows
Cuando está accediendo a SQL Server desde la misma computadora en la que está instalado, no se le debe pedir que escriba un nombre de usuario y contraseña. Y no lo es, si usa la Autenticación de Windows. Con la Autenticación de Windows, el servicio SQL Server ya sabe que alguien ha iniciado sesión en el sistema operativo con las credenciales correctas, y utiliza estas credenciales para permitir al usuario acceder a sus bases de datos. Por supuesto, esto funciona siempre que el cliente resida en la misma computadora que el servidor SQL, o siempre que el cliente de conexión coincida con las credenciales de Windows del servidor. La autenticación de Windows se usa a menudo como una forma más conveniente de iniciar sesión en una instancia de SQL Server sin escribir un nombre de usuario y una contraseña; sin embargo, cuando se envuelven más usuarios o se establecen conexiones remotas con SQL Server, se debe usar la autenticación SQL .