Login
Para obtener acceso a una instancia, un usuario debe validar sus credenciales en SQL Server, esto se logran creando logins. Los logins en SQL Server 2008 puede ser de los siguientes tipos:
- Login estándar de SQL Server
- Windows Login
- Windows Group
- Certificados
- Clave Asimétrica
Estos son creados por los DBA, y configurado con un nombre y un password. El mismo es almacenado en la base de datos Master y se le asigna un SID (security identifier). Ademas estos pueden estar asociados a un Windows Login o Windows Group. Cuando agregamos un Windows Login / Group, SQL Server solo almacena nombre del login con el correspondiente Windows SID. Cuando un usuario intenta conectarse a SQL utilizando credenciales de Windows, SQL Server realiza una llamada a la API de Windows encargada de la seguridad para validar la cuenta, lo que obtiene es el SID el cual lo compara con el SID almacenado junto al nombre. Sintaxis genérica para crear un login:
CREATE LOGIN loginName { WITH < option_list1 > | FROM < source s> }
< option_list1 > ::=
PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
[ , < option_list2 > [ ,... ] ]
< option_list2 > ::=
SID = sid
| DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
| CHECK_EXPIRATION = { ON | OFF}
| CHECK_POLICY = { ON | OFF}
| CREDENTIAL = credential_name
< sources > ::=
WINDOWS [ WITH < windows_options > [ ,... ] ]
| CERTIFICATE certname
| ASYMMETRIC KEY asym_key_name
< windows_options > ::=
DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
Algunas opciones interesantes del comando:
- CHECK_POLICY: Esta opción se habilita por defecto (y es recomendado dejarla así), y lo que hace es forzar a que se controlen las políticas de Password de Windows cuando se cree un nuevo login en SQL Server.
- CHECK_EXPIRATION: al habilitar esta opción, hace que se controle, cada vez que el usuario se autentica en una instancia, SQL controla que el password no haya expirado y de ser necesario pide al usuario que cambie el password.
Al utilizar Windows Group, nos da una flexibilidad enorme, ya que desde el punto de vista del DBA, se le otorgan los permisos que necesita el grupo solo una vez, y nos aislamos de las altas/bajas de personas. Las cuentas de Windows poseen una característica de seguridad, que hace que luego de n intentos fallidos de login, la cuenta se bloquea, esto se hace para evitar ataques por fuerza bruta. Esto también aplica a SQL Server, salvo para la cuenta sa, esta cuenta no se bloquea ya que si se bloqueara no podríamos acceder de ninguna manera a SQL. Debido a que la cuenta sa es muy conocida la misma es normalmente renombrada. Cuando se desea que una cuenta no pueda acceder por un determinado tiempo, por ejemplo cuando se esta realizando mantenimiento a la DB, se pueden deshabilitar, esto hace que la cuenta no pueda acceder, pero que al mismo tiempo conserve los privilegios otorgados:
ALTER LOGIN < loginname > DISABLE

Comentarios recientes