

# Uso de la política de contraseñas para inicios de sesión de SQL Server en RDS para SQL Server
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

Amazon RDS le permite configurar la política de contraseñas de su instancia de base de datos de Amazon RDS en la que se ejecuta Microsoft SQL Server. Utilícela para establecer los requisitos de complejidad, longitud y bloqueo para los inicios de sesión que utilizan la autenticación de SQL Server para autenticarse en su instancia de base de datos.

## Términos clave
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**Login (Iniciar sesión)**  
En SQL Server, una entidad principal de servidor que puede autenticarse en una instancia de base de datos se denomina **inicio de sesión**. Otros motores de bases de datos pueden denominar esta entidad principal como *usuario*. En RDS para SQL Server, un inicio de sesión puede autenticarse mediante la autenticación de SQL Server o la autenticación de Windows.

**Inicio de sesión de SQL Server**  
Un inicio de sesión que utiliza un nombre de usuario y una contraseña para autenticarse mediante la autenticación de SQL Server es un inicio de sesión de SQL Server. La política de contraseñas que se configura mediante los parámetros de base de datos solo se aplica a los inicios de sesión de SQL Server.

**Inicio de sesión de Windows**  
Un inicio de sesión que se basa en una entidad principal de Windows y se autentica mediante la autenticación de Windows es un inicio de sesión de Windows. Puede configurar la política de contraseñas para los inicios de sesión de Windows en Active Directory. Para obtener más información, consulte [Uso de Active Directory con RDS para SQL Server](User.SQLServer.ActiveDirectoryWindowsAuth.md).

## Habilitación y deshabilitación de política para cada inicio de sesión
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 Cada inicio de sesión de SQL Server tiene marcadores para `CHECK_POLICY` y `CHECK_EXPIRATION`. De forma predeterminada, los nuevos inicios de sesión se crean con `CHECK_POLICY` establecido en `ON` y `CHECK_EXPIRATION` establecido en `OFF`. 

Si `CHECK_POLICY` está habilitada para un inicio de sesión, RDS para SQL Server valida la contraseña comparándola con los requisitos de complejidad y longitud mínima. También se aplican políticas de bloqueo. Un ejemplo de una instrucción de T-SQL para habilitar `CHECK_POLICY` y `CHECK_EXPIRATION`: 

```
ALTER LOGIN [master_user] WITH CHECK_POLICY = ON, CHECK_EXPIRATION = ON;
```

Si `CHECK_EXPIRATION` está habilitada, las contraseñas están sujetas a las políticas de antigüedad de las contraseñas. La instrucción de T-SQL para comprobar si `CHECK_POLICY` y `CHECK_EXPIRATION` están configuradas:

```
SELECT name, is_policy_checked, is_expiration_checked FROM sys.sql_logins;
```

## Parámetros de las políticas de contraseñas
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

Todos los parámetros de la política de contraseñas son dinámicos y no requieren que se reinicie la base de datos para que surtan efecto. La siguiente tabla muestra los parámetros de base de datos que puede configurar para modificar la política de contraseñas para los inicios de sesión de SQL Server:


****  

| Parámetro de base de datos | Descripción | Valores permitidos | Valor predeterminado | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | Se deben cumplir los requisitos de complejidad de las contraseñas al crear o cambiar las contraseñas para los inicios de sesión de SQL Server. Se deben cumplir las siguientes restricciones: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | El número mínimo de caracteres que debe tener una contraseña para un inicio de sesión de SQL Server. | 0-14 | 0 | 
| rds.password\$1min\$1age | El número mínimo de días que debe utilizarse una contraseña de inicio de sesión de SQL Server antes de que el usuario pueda cambiarla. Las contraseñas se pueden cambiar inmediatamente si se establece en 0. | 0-998 | 0 | 
| rds.password\$1max\$1age | El número máximo de días que se puede usar una contraseña de inicio de sesión de SQL Server tras los cuales el usuario debe cambiarla. Las contraseñas nunca caducan cuando se establece en 0. | 0-999 | 42 | 
| rds.password\$1lockout\$1threshold | El número de intentos de inicio de sesión fallidos consecutivos que provocan el bloqueo de un inicio de sesión de SQL Server. | 0-999 | 0 | 
| rds.password\$1lockout\$1duration | El número de minutos que debe esperar un inicio de sesión de SQL Server bloqueado antes de desbloquearse. | 1-60 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | El número de minutos que deben transcurrir después de un intento de inicio de sesión fallido antes de que el contador de intentos de inicio de sesión fallidos se restablezca a 0. | 1-60 | 10 | 

**nota**  
Para obtener más información sobre la política de contraseñas de SQL Server, consulte [Política de contraseñas](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy).   
Las políticas de complejidad y longitud mínima de las contraseñas también se aplican a los usuarios de bases de datos en bases de datos independientes. Para obtener más información, consulte [Bases de datos independientes](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases).

Se aplican las siguientes limitaciones a los parámetros de las políticas de contraseñas:
+ El parámetro `rds.password_min_age` debe ser menor que `rds.password_max_age parameter`, a menos que `rds.password_max_age` esté establecido en 0
+ El parámetro `rds.password_lockout_reset_counter_after` debe ser igual o menor que el parámetro `rds.password_lockout_duration`.
+ Si `rds.password_lockout_threshold` está establecido en 0, `rds.password_lockout_duration` y `rds.password_lockout_reset_counter_after` no se aplican.

### Consideraciones sobre inicios de sesión existentes
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

Tras modificar la política de contraseñas en una instancia, las contraseñas existentes para los inicios de sesión **no** se evalúan retroactivamente en función de los nuevos requisitos de complejidad y longitud de las contraseñas. Solo las contraseñas nuevas se validan según la nueva política. 

SQL Server **evalúa** las contraseñas existentes en función de los requisitos de antigüedad.

Es posible que las contraseñas caduquen inmediatamente una vez que se modifique la política de contraseñas. Por ejemplo, si un inicio de sesión tiene habilitado `CHECK_EXPIRATION` y su contraseña se modificó por última vez hace 100 días, y establece el parámetro `rds.password_max_age` en 5 días, la contraseña caducará inmediatamente y el inicio de sesión tendrá que cambiar la contraseña la próxima vez que intente iniciar sesión.

**nota**  
RDS para SQL Server no admite políticas de historial de contraseñas. Las políticas de historial impiden que los inicios de sesión reutilicen las contraseñas que ya han utilizado anteriormente.

### Consideraciones para implementaciones Multi-AZ
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

El contador de intentos de inicio de sesión fallidos y el estado de bloqueo de las instancias multi-AZ no se replican entre nodos. En caso de que se bloquee un inicio de sesión debido a una conmutación por error en una instancia multi-AZ, es posible que el inicio de sesión ya esté desbloqueado en el nuevo nodo.

# Consideraciones sobre la contraseña para el inicio de sesión maestro
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

Cuando se crea una instancia de base de datos de RDS para SQL Server, la contraseña del usuario maestro no se evalúa con respecto a la política sobre contraseñas. Una nueva contraseña maestra tampoco se evalúa con respecto a la contraseña al realizar operaciones con el usuario maestro, específicamente al configurar `MasterUserPassword` en el comando `ModifyDBInstance`. En ambos casos, puede establecer una contraseña para el usuario maestro que no cumpla su política de contraseñas y la operación seguirá realizándose correctamente. Si no se cumple la política, RDS intenta generar un evento de RDS con la recomendación de establecer una contraseña segura. Tenga cuidado y use solo contraseñas seguras para el usuario maestro. 

RDS intenta generar los siguientes mensajes de eventos cuando la contraseña del usuario maestro no cumple los requisitos de la política de contraseñas:
+ Se creó el usuario maestro, pero la contraseña no cumple el requisito de longitud mínima de su política de contraseñas. Plantéese utilizar una contraseña más segura.
+ Se creó el usuario maestro, pero la contraseña no cumple el requisito de complejidad de su política de contraseñas. Plantéese utilizar una contraseña más segura.
+ Se restableció el usuario maestro, pero la contraseña no cumple el requisito de longitud mínima de su política de contraseñas. Plantéese utilizar una contraseña más segura.
+ Se restableció el usuario maestro, pero la contraseña no cumple con el requisito de complejidad de su política de contraseñas. Plantéese utilizar una contraseña más segura.

De forma predeterminada, el usuario maestro se crea con `CHECK_POLICY` y `CHECK_EXPIRATION` ajustado en `OFF`. Para aplicar la política de contraseñas al usuario maestro, debe habilitar manualmente estos marcadores para el usuario maestro tras la creación de la instancia de base de datos. Tras habilitar estos marcadores, modifique la contraseña del usuario maestro directamente en SQL Server (por ejemplo, mediante instrucciones T-SQL o SSMS) para validar la nueva contraseña con respecto a la política de contraseñas.

**nota**  
Si el usuario maestro queda bloqueado, puede desbloquearlo restableciendo su contraseña mediante el comando `ModifyDBInstance`.

## Modificación de la contraseña del usuario principal
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

Puede modificar la contraseña del usuario maestro mediante el comando [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html).

**nota**  
Al restablecer la contraseña del usuario maestro, RDS restablece varios permisos para el usuario maestro y este puede perder algunos permisos. Si se restablece la contraseña del usuario maestro, también se desbloquea al usuario maestro si estaba bloqueado.

RDS valida la nueva contraseña del usuario maestro e intenta emitir un evento de RDS si la contraseña no cumple la política. RDS establece la contraseña incluso si no cumple la política de contraseñas. 