Compartir por


Directiva de contraseñas

Se aplica a: SQL Server

SQL Server puede emplear mecanismos de directiva de contraseñas de Windows. La directiva de contraseñas se aplica a un inicio de sesión que usa la autenticación de SQL Server y a un usuario con contraseña de una base de datos independiente.

SQL Server puede aplicar las mismas directivas de complejidad y expiración usadas en Windows a las contraseñas utilizadas dentro de SQL Server. Esta funcionalidad depende de la API NetValidatePasswordPolicy .

Nota:

Azure SQL Database aplica la complejidad de la contraseña. Las secciones de expiración de contraseñas y cumplimiento de directivas no se aplican a Azure SQL Database.

Para obtener información sobre la directiva de contraseñas para Azure SQL Managed Instance, consulte las preguntas más frecuentes sobre SQL Managed Instance.

Complejidad de las contraseñas

Las directivas de complejidad de contraseñas están diseñadas para impedir ataques por fuerza bruta mediante el aumento del número de contraseñas posibles. Cuando se aplica la directiva de complejidad de contraseñas, se exige que las nuevas contraseñas cumplan las siguientes directrices:

  • La contraseña no debe contener el nombre de la cuenta del usuario.

  • La contraseña debe tener una longitud de ocho caracteres como mínimo.

  • La contraseña debe contener caracteres de tres de las siguientes categorías:

    • Letras en mayúsculas del alfabeto Latín (de la A a la Z)

    • Letras en minúsculas del alfabeto Latín (de la "a" a la "z")

    • Dígitos de Base 10 (de 0 a 9)

    • Caracteres que no sean alfanuméricos, como signo de exclamación (!), signo de dólar ($), signo de número (#) o porcentaje (%).

Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.

Expiración de las contraseñas

Las directivas de expiración de contraseñas se utilizan para administrar la duración de una contraseña. Cuando SQL Server aplica la directiva de expiración de contraseñas, se recuerda a los usuarios que cambien las contraseñas antiguas y las cuentas con contraseñas que han expirado se deshabilitan.

Aplicación de las directivas

La aplicación de la directiva de contraseñas se puede configurar independientemente para cada inicio de sesión de SQL Server. Use ALTER LOGIN (Transact-SQL) para configurar las opciones de la directiva de contraseñas de un inicio de sesión de SQL Server. Se aplican las siguientes reglas a la configuración de la aplicación de directivas de contraseñas:

  • Cuando el valor de CHECK_POLICY se cambia a ON, ocurre lo siguiente:

    • CHECK_EXPIRATION también se establece en ON, salvo que se haya establecido de forma explícita en OFF.

    • El historial de contraseñas se inicializa con el valor del hash de contraseña actual.

    • Duración de bloqueo de cuenta, Umbral de bloqueo de cuentay Restablecer recuento de bloqueos de cuentas tras también están habilitadas.

  • Cuando el valor de CHECK_POLICY se cambia a OFF, ocurre lo siguiente:

    • La opción CHECK_EXPIRATION también se cambia a OFF.

    • Se borra el historial de contraseñas.

    • Se restablece el valor de lockout_time .

Algunas combinaciones de opciones de directiva no se admiten.

  • Si se especifica MUST_CHANGE, CHECK_EXPIRATION y CHECK_POLICY, deben establecerse en ON. Si no es así, la instrucción produce un error.

  • Si CHECK_POLICY se establece en OFF, CHECK_EXPIRATION no puede establecerse en ON. Una instrucción ALTER LOGIN con esta combinación de opciones dará error.

  • El establecimiento de CHECK_POLICY = ON impide la creación de contraseñas que sean:

    • NULL o vacías

    • Iguales al nombre del equipo o el inicio de sesión

    • Cualquiera de las siguientes: password, admin, administrator, sa, sysadmin

La directiva de seguridad se podría establecer en Windows o se podría recibir del dominio. Para ver la directiva de contraseñas en el equipo, use el complemento de MMC Directiva de seguridad local (secpol.msc).

Nota:

En el caso de los inicios de sesión de SQL Server que tienen CHECK_POLICY habilitado, si ejecuta ALTER LOGIN y no incluye OLD_PASSWORD en el comando para cambiar la contraseña, se omite Exigir historial de contraseñas. Este es un comportamiento predeterminado para permitir los restablecimientos de contraseña, con independencia de las contraseñas usadas anteriormente. Otras comprobaciones asociadas a CHECK_POLICY, incluida la longitud y la complejidad, se realizan tanto si se usa OLD_PASSWORD o no.

Comprobación de la información de la directiva de contraseñas de usuario de SQL

Puede revisar las directivas de contraseñas de usuario de SQL y las fechas de expiración en SQL Server mediante la consulta siguiente. Aunque la consulta siguiente también funciona en Azure SQL Database, solo se aplica la complejidad de la contraseña en Azure SQL Database.

SELECT name,
    is_policy_checked,
    is_expiration_checked,
    LOGINPROPERTY(name, 'IsMustChange') AS IsMustChange,
    LOGINPROPERTY(name, 'IsLocked') AS IsLocked,
    LOGINPROPERTY(name, 'LockoutTime') AS LockoutTime,
    LOGINPROPERTY(name, 'PasswordLastSetTime') AS PasswordLastSetTime,
    LOGINPROPERTY(name, 'IsExpired') AS IsExpired,
    LOGINPROPERTY(name, 'BadPasswordCount') AS BadPasswordCount,
    LOGINPROPERTY(name, 'BadPasswordTime') AS BadPasswordTime,
    LOGINPROPERTY(name, 'HistoryLength') AS HistoryLength,
    modify_date
FROM sys.sql_logins;

CREATE LOGIN (Transact-SQL)

ALTER LOGIN (Transact-SQL)

CREATE USER (Transact-SQL)

ALTER USER (Transact-SQL)

Crear un inicio de sesión

Crear un usuario de base de datos