¡Hola, chicos!
En este artículo quería compartir con ustedes una solución simple para desbloquear a un usuario sin tener que cambiar/restablecer la contraseña, lo que a veces puede ser muy molesto al tener que cambiar la contraseña de un usuario para que pueda volver a iniciar sesión en el banco.
Para conocer más sobre Políticas, Bloqueo Automático y Caducidad, lee el artículo SQL Server: políticas de contraseña, caducidad de contraseña, cambio de contraseña obligatorio y bloqueo de inicio de sesión después de N intentos.
Cuando crea un inicio de sesión utilizando una política de contraseñas (CHECK_POLICY) para garantizar que las contraseñas sean lo suficientemente complejas y que no se acepten contraseñas cortas y débiles, según la configuración de Windows/AD, es posible que se habilite la función de bloqueo automático después de N intentos incorrectos.
Para probar este escenario, crearemos un usuario con la política de contraseña habilitada:
USE [master]
GO
CREATE LOGIN [teste_politica_senha]
WITH
PASSWORD = 'BdP@BPptxENu',
CHECK_POLICY = ON
Ahora me aseguro de que las propiedades de bloqueo automático estén habilitadas en la pantalla "Política de seguridad local" (secpol.msc)

Bloquearemos a este usuario que intente conectarse más de 5 veces (parámetro que definí en la pantalla anterior) con la contraseña incorrecta.

Para comprobar si el usuario está bloqueado, puede utilizar la siguiente consulta:
SELECT
A.[name],
A.[type_desc],
A.is_disabled,
A.create_date,
A.modify_date,
A.is_policy_checked,
A.is_expiration_checked,
LOGINPROPERTY(A.[name],'BadPasswordCount') AS [BadPasswordCount],
LOGINPROPERTY(A.[name],'BadPasswordTime') AS [BadPasswordTime],
LOGINPROPERTY(A.[name],'DaysUntilExpiration') AS [DaysUntilExpiration],
LOGINPROPERTY(A.[name],'HistoryLength') AS [HistoryLength],
LOGINPROPERTY(A.[name],'IsExpired') AS [IsExpired],
LOGINPROPERTY(A.[name],'IsLocked') AS [IsLocked],
LOGINPROPERTY(A.[name],'IsMustChange') AS [IsMustChange],
LOGINPROPERTY(A.[name],'LockoutTime') AS [LockoutTime],
LOGINPROPERTY(A.[name],'PasswordLastSetTime') AS [PasswordLastSetTime],
LOGINPROPERTY(A.[name],'PasswordHashAlgorithm') AS [PasswordHashAlgorithm]
FROM
sys.sql_logins A
JOIN sys.server_principals B ON A.[sid] = B.[sid]
WHERE
A.is_disabled = 0
AND B.is_fixed_role = 0
AND LOGINPROPERTY(A.[name],'IsLocked') = 1
También puedo verificar si el inicio de sesión SQL está bloqueado por la interfaz SSMS

Ahora viene el consejo de esta publicación. ¿Cómo puedo desbloquear este inicio de sesión sin tener que cambiar la contraseña?
Si intenta simplemente desmarcar esta opción en la interfaz SSMS, verá este mensaje de error:

Para que esto funcione, desmarque la opción "Aplicar política de contraseñas".

¡Listo! El usuario ya ha sido desbloqueado. Ahora puede volver a seleccionar esta opción si desea mantenerla como estaba antes.
También puedes usar este comando SQL para desbloquear al usuario sin tener que cambiar la contraseña:
USE [master];
GO
ALTER LOGIN [teste_politica_senha]
WITH CHECK_POLICY = OFF;
GO
ALTER LOGIN [teste_politica_senha]
WITH CHECK_POLICY = ON;
GO
¡Y eso es todo!
Post breve y rápido con este útil consejo cotidiano.
Ahora no necesitará cambiar la contraseña de usuario de una aplicación porque un desarrollador configuró el entorno incorrecto 🙂

Comentários (0)
Carregando comentários…