viernes, 14 de marzo de 2014

Modos de iniciar de sesión en SQL Server

Cuando se instala un servidor de base de datos SQL Server (en realidad se le llama instancia), hay una parte durante la instalación donde la gran mayoría no sabe qué opción seleccionar y es, el modo en que se va a iniciar sesión en el servidor o dicho de una mejor manera para los programadores y DBA's, el modo de autenticación.

SQL Server ofrece un par de modos de autenticarse que son:
  • Modo de Autenticación de Windows, y
  • Modo Mixto (Autenticación deWindows y Autenticación de SQL Server)
El primer modo nos permite autenticarnos en el servidor de base de datos por medio de una cuenta de usuario de windows o una cuenta de usuario en un directorio activo de windows.

El segundo modo de autenticación nos permite conectarnos al servidor de base de datos con una cuenta de usuario de windows, con una cuenta de usuario en un directorio activo de windows cuando contamos con una red con dominio o bien, con un Login creado directamente en el servidor de base de datos.

Microsoft, muchos DBA's y un montón de gente que dicen saber mucho sobre el tema de bases de datos, recomiendan que se use el modo de autenticación windows porque ofrece según ellos, un mayor grado de seguridad a la hora de autenticar a un usuario que intenta iniciar sesión en el servidor de base de datos. Pero en muchas ocasiones es más fácil y práctico usar la autenticación de SQL Server que, tomando las debidas precauciones también es bastante seguro.

Ahora bien, como la mayoría de los programadores que instalan por primera vez su servidor SQL Server leen antes algo de documentación y siempre ven que se recomienda usar la autenticación windows, pues se van con (la finta) esa recomendación pensando que al seleccionarla, mágicamente el servidor de base de datos va a reconocer a los equipos (PC's) y usuarios de la red, pero en realidad no es eso lo que sucede. La instalación regularmente termina bien pero dicha autenticación no es tan automáGica como uno pensaría ya que, aunque la autenticación funciona bien en el equipo donde está instalado el SQL Server (porque el instalador crea un login en el servidor de base de datos automáticamente con el nombre del equipo y el usuario del mismo), cuando se intenta conectar a dicho servidor desde otro equipo de la red...¡¡toómalaaa!! la dichosa autenticación nomás no funciona.

El tema de como hacer que el servidor de base de datos sea visible en la red y accesible en ella y fuera de ella es un tema que dejaré para otro post, pero pasa por habilitar servicios, abrir puertos y reiniciar el servidor. Pero lo que siempre se necesitará es una cuenta con la cual autenticarse en la instancia del servidor de base de datos.

Echándole un poquito de sesos, no es difícil deducir el porqué la autenticación no funciona, pero cuando eres un novatón pues se te cierra el mundo y no sabes que hacer. Lo primero que piensas es que de seguro te equivocaste y debiste haber seleccionado el modo de autenticación mixta, pero en realidad el tema es que, sin importar el modo de autenticación que se elija a la hora de instalar SQL Server, se terminará creando Logins en el servidor de base de datos para que los usuarios se puedan conectar a la instancia del servidor de base de datos y puedan usar alguna base de datos en él.

Cuando se instala SQL Server, el instalador se encarga de crear siempre el login para el usuario administrador del servidor de base de datos que es el famoso sa (así, en minúsculas) y dependiendo del modo de autenticación que se elija durante la instalación éste estará activado o desactivado. Si se selecciona el Modo de Autenticación de Windows, el login sa estará desactivado y si se selecciona el Modo Mixto el login sa estará activado. En cambio, aún cuando el Modo de Autenticación Windows siempre es instalado (ya que sin importar la opción que se seleccione, ambas opciones lo incluyen), si se selecciona el Modo Mixto de autenticación durante la instalación, el login para la cuenta de usuario de windows no se crea automáticamente y hay que crearlo mediante el SQL Server Management Studio (SSMS de aquí en adelante) o con un comando en Transact-SQL que es el lenguaje SQL que se usa en SQL Server.

Bueno, ya fué suficiente rollo, ahora vamos a poner manos a la obra. Empezaremos con:

Como Cambiar el Modo de Autenticación de SQL Server

  1. En el SSMS, en la ventana Explorador de Objetos (Object Explorer), hacer click con el botón secundario del ratón sobre el nombre del servidor y seleccionar Propiedades (Properties).

  2. Seleccionar la página Seguridad (Security) y en la sección Autenticación del Servidor (Server Authentication) seleccionar el modo de autenticación que se desea tener y hacer click en el botón Aceptar (OK).

  3. Hacer click en el botón Aceptar (OK) de la ventana que aparece informando que los cambios no tendrán efecto hasta que se reinicie el servidor de base de datos.

  4. En la ventana Explorador de Objetos (Object Explorer), hacer click con el botón secundario del ratón sobre el nombre del servidor y seleccionar Reiniciar (Restart). Si el Agente de SQL Server (SQL Server Agent) está en ejecución, éste también debe reiniciarse.

Como Habilitar el Inicio de Sesión (Login) sa

Cuando se ha seleccionado el Modo de Autenticación Windows al instalar SQL Server, el inicio de sesión (login) sa está deshabilitado por lo que, después de cambiar el modo de autenticación a Modo Mixto, se debe habilitar. Aquí muestro como hacerlo tanto con el SSMS como con una consulta T-SQL.

Mediante SQL Server Management Studio (SSMS)

  1. En el Explorador de Objetos (Object Explorer), expandir el nodo Seguridad (Security), expardir el subnodo Inicio de Sesión (Logins), hacer click con el botón secundario del ratón sobre sa, y seleccionar Propiedades (Properties).


  2. En la página General, se tiene que crear y confirmar una contraseña para el login sa.


  3. En la página Estatus (Status), en la sección Inicio de Sesión (Login), seleccione Habilitar (Enable) y para finalizar haga click en el botón Aceptar (OK).

Mediante una consulta Transact-SQL

  1. Conectarse a una instancia del servidor SQL Server. Obviamente como el login sa está deshabilitado, se tendría que conectar usando la autenticación de windows.
  2. En la barra estándar del SSMS, hacer click en el botón Nueva Consulta (New Query) o con el teclado pulsar la combinación de teclas <Ctrl> + <N>.

  3. Escribir la siguiente consulta en la ventana que aparece

    ALTER LOGIN sa ENABLE ;
    GO
    ALTER LOGIN sa WITH PASSWORD = '<PongaUnaContraseñaSeguraAquí>' ;
    GO
     
    
    
  4. Hacer click en el botón ejecutar de la barra de herramientas o con el teclado pulsar la tecla <F5>.

 

Como Crear un Inicio de Sesión (Login)  para Autenticación Windows

Cuando durante la instalación de SQL Server se selecciona el Modo Mixto de autenticación, se habilita la Auntenticación de Windows en el servidor pero no se crea un login que te permita iniciar sesión por lo tanto hay que crearlo. Ésto se hace con la sintaxis EQUIPO\UsuarioDelEquipo y se tiene que hacer para todos los usuarios que vayan a conectarse al servidor de base de datos usando autenticación windows. A continuación muestro como crear un login de este tipo.

Mediante SQL Server Management Studio (SSMS)

  1. En el Explorador de Objetos (Object Explorer), expandir la carpeta de la instancia de servidor en la que se desea crear el nuevo inicio de sesión (login).
  2. Hacer clic con el botón secundario en la carpeta Seguridad, seleccionar Nuevo (New) y a continuación, seleccionar Inicio de sesión (Login).


  3. En el cuadro de diálogo Inicio de sesión - Nuevo, en la página General, escribir el nombre de un usuario en el cuadro Nombre de inicio de sesión (Login name). Como alternativa, hacer clic en (Buscar) para abrir el cuadro de diálogo Seleccionar usuarios o grupos.

  4. Para crear un inicio de sesión (Login) basado en seguridad de windows, seleccionar Autenticación Windows (Windows authentication).
  5. Hacer click en el botón Aceptar (OK)

Mediante una consulta Transact-SQL

  1. Conectarse a una instancia del servidor SQL Server. Obviamente como el login sa está deshabilitado, se tendría que conectar usando la autenticación de windows.
  2. En la barra estándar del SSMS, hacer click en el botón Nueva Consulta (New Query) o con el teclado pulsar la combinación de teclas <Ctrl> + <N>.


  3. Escribir la siguiente consulta en la ventana que aparece:

    CREATE LOGIN [<nombreDelEquipo>\<NombreUsuario>] FROM WINDOWS;
    GO
     
  4. Hacer click en el botón ejecutar de la barra de herramientas o con el teclado pulsar la tecla <F5>.
Como nota final puedo decir que todo esto es válido para versiones de SQL Server 2005 y posteriores, así como que no es lo mismo un Login que un usuario, pero esa desambiguación la haré en otro post.

0 comentarios:

Publicar un comentario

 
;