

# RDS for SQL Server에서 SQL Server 로그인에 암호 정책 사용
<a name="SQLServer.Concepts.General.PasswordPolicy.Using"></a>

Amazon RDS를 사용하면 Microsoft SQL Server를 실행하는 Amazon RDS DB 인스턴스에 암호 정책을 설정할 수 있습니다. 이를 사용하여 SQL Server 인증으로 DB 인스턴스를 인증하는 로그인의 복잡성, 길이 및 잠금 요구 사항을 설정할 수 있습니다.

## 주요 용어
<a name="SQLServer.Concepts.General.PasswordPolicy.Using.KT"></a>

**로그인**  
SQL Server에서는 데이터베이스 인스턴스에 대해 인증할 수 있는 서버 수준 보안 주체를 **로그인**이라고 합니다. 다른 데이터베이스 엔진에서는 이 보안 주체를 사용자로 지칭할 수 있습니다.** RDS for SQL Server에서는 SQL Server 인증 또는 Windows 인증을 사용하여 로그인을 인증할 수 있습니다.

**SQL Server 로그인**  
SQL Server 인증을 사용하여 사용자 이름과 암호를 통해 인증하는 로그인은 SQL Server 로그인입니다. DB 파라미터를 통해 구성한 암호 정책은 SQL Server 로그인에만 적용됩니다.

**Windows 로그인**  
Windows 보안 주체를 기반으로 하고 Windows 인증을 사용하여 인증하는 로그인은 Windows 로그인입니다. Active Directory에서 Windows 로그인에 대한 암호 정책을 구성할 수 있습니다. 자세한 내용은 [RDS for SQL Server를 사용하여 Active Directory 작업](User.SQLServer.ActiveDirectoryWindowsAuth.md) 단원을 참조하십시오.

## 각 로그인에 대한 정책 활성화 및 비활성화
<a name="SQLServer.Concepts.General.PasswordPolicy.EnableDisable"></a>

 각 SQL Server 로그인에는 `CHECK_POLICY` 및 `CHECK_EXPIRATION` 플래그가 있습니다. 기본적으로 새 로그인은 `ON`으로 설정된 `CHECK_POLICY`와 `OFF`로 설정된 `CHECK_EXPIRATION`으로 생성됩니다.

로그인에 대해 `CHECK_POLICY`가 활성화된 경우 RDS for SQL Server는 복잡성 및 최소 길이 요구 사항을 기준으로 암호의 유효성을 검사합니다. 잠금 정책 또한 적용됩니다. `CHECK_POLICY` 및 `CHECK_EXPIRATION`을 활성화하기 위한 예제 T-SQL 문: 

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

`CHECK_EXPIRATION`이 활성화된 경우 암호에는 암호 수명 정책이 적용됩니다. `CHECK_POLICY` 및 `CHECK_EXPIRATION` 설정 여부를 확인하기 위한 T-SQL 문:

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

## 암호 정책 파라미터
<a name="SQLServer.Concepts.General.PasswordPolicy.PWDPolicyParams"></a>

모든 암호 정책 파라미터는 동적이므로 DB를 재부팅하지 않아도 적용됩니다. 다음 표에는 SQL Server 로그인에 대한 암호 정책을 수정하기 위해 설정할 수 있는 DB 파라미터가 나열되어 있습니다.


****  

| DB 파라미터 | 설명 | 허용된 값 | 기본 값 | 
| --- | --- | --- | --- | 
| rds.password\$1complexity\$1enabled | SQL Server 로그인을 위한 암호를 만들거나 변경할 때는 암호 복잡성 요구 사항을 충족해야 합니다. 다음 제약 조건을 충족해야 합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.PasswordPolicy.Using.html)  | 0,1 | 0 | 
| rds.password\$1min\$1length | SQL Server 로그인을 위한 암호에 필요한 최소 문자 수입니다. | 0\$114 | 0 | 
| rds.password\$1min\$1age | 사용자가 SQL Server 로그인 암호를 변경할 수 있기 전에 사용해야 하는 최소 일수입니다. 0으로 설정되어 있는 경우 암호를 즉시 변경할 수 있습니다. | 0\$1998 | 0 | 
| rds.password\$1max\$1age | SQL Server 로그인 암호를 사용할 수 있는 최대 일수입니다. 이 기간이 지나면 사용자가 암호를 변경해야 합니다. 0으로 설정되어 있는 경우 암호가 만료되지 않습니다. | 0\$1999 | 42 | 
| rds.password\$1lockout\$1threshold | SQL Server 로그인이 잠기기 전에 연속으로 실패할 수 있는 로그인 시도 횟수입니다. | 0\$1999 | 0 | 
| rds.password\$1lockout\$1duration | 잠긴 SQL Server 로그인이 잠금 해제될 때까지 기다려야 하는 시간(분)입니다. | 1\$160 | 10 | 
| rds.password\$1lockout\$1reset\$1counter\$1after | 로그인 시도 실패 후 로그인 시도 실패 카운터가 0으로 재설정되기 전에 경과해야 하는 시간(분)입니다. | 1\$160 | 10 | 

**참고**  
SQL Server 암호 정책에 대한 자세한 내용은 [암호 정책](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy)을 참조하세요.  
암호 복잡성 및 최소 길이 정책은 포함된 데이터베이스의 DB 사용자에게도 적용됩니다. 자세한 내용은 [포함된 데이터베이스](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases)를 참조하세요.

암호 정책 매개변수에는 다음 제약 조건이 적용됩니다.
+ `rds.password_max_age`가 0으로 설정되어 있지 않는 한 `rds.password_min_age` 파라미터는 `rds.password_max_age parameter`보다 작아야 합니다.
+ `rds.password_lockout_reset_counter_after` 파라미터는 `rds.password_lockout_duration` 파라미터보다 작거나 같아야 합니다.
+ `rds.password_lockout_threshold`가 0으로 설정되어 있으면 `rds.password_lockout_duration` 및 `rds.password_lockout_reset_counter_after`는 적용되지 않습니다.

### 기존 로그인에 대한 고려 사항
<a name="SQLServer.Concepts.General.PasswordPolicy.ExistingLogins"></a>

인스턴스의 암호 정책을 수정한 후에는 로그인을 위한 기존 암호가 새로운 암호 복잡성 및 길이 요구 사항을 기준으로 소급 평가되지 **않습니다**. 새 암호만 새 정책을 기준으로 검증됩니다.

SQL Server는 수명 요구 사항을 기준으로 기존 암호를 **평가합니다**.

암호 정책이 수정되는 즉시 암호가 만료될 수도 있습니다. 예를 들어 로그인에 `CHECK_EXPIRATION`이 활성화되어 있고 100일 전에 암호를 마지막으로 변경했으며 `rds.password_max_age` 파라미터를 5일로 설정한 경우 암호가 즉시 만료되므로 다음 로그인 시도 시 암호를 변경해야 합니다.

**참고**  
RDS for SQL Server는 암호 기록 정책을 지원하지 않습니다. 기록 정책은 로그인이 이전에 사용한 암호를 재사용하지 못하도록 합니다.

### 다중 AZ 배포에 대한 고려 사항
<a name="SQLServer.Concepts.General.PasswordPolicy.MAZPasswords"></a>

다중 AZ 인스턴스의 로그인 시도 실패 카운터 및 잠금 상태는 노드 간에 복제되지 않습니다. 다중 AZ 인스턴스가 장애 조치될 때 로그인이 잠기는 경우 새 노드에서 로그인이 이미 잠금 해제되어 있을 수 있습니다.

# 마스터 로그인에 대한 암호 고려 사항
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin"></a>

RDS for SQL Server DB 인스턴스를 생성하면 마스터 사용자 암호가 암호 정책을 기준으로 평가되지 않습니다. 마스터 사용자에게 작업을 수행할 때, 특히 `ModifyDBInstance` 명령에서 `MasterUserPassword`를 설정할 때도 새 마스터 암호는 암호를 기준으로 평가되지 않습니다. 두 경우 모두 암호 정책을 충족하지 않는 마스터 사용자 암호를 설정할 수 있으며, 이 경우에도 작업은 성공합니다. 정책이 충족되지 않으면 RDS는 강력한 암호를 설정하라는 권장 사항이 포함된 RDS 이벤트를 발생시키려고 시도합니다. 마스터 사용자에는 강력한 암호만 사용해야 합니다.

마스터 사용자 암호가 암호 정책 요구 사항을 충족하지 않는 경우 RDS는 다음 이벤트 메시지를 생성하려고 시도합니다.
+ 마스터 사용자가 생성되었지만 암호가 암호 정책의 최소 길이 요구 사항을 충족하지 않습니다. 더 강력한 암호를 사용해 보세요.
+ 마스터 사용자가 생성되었지만 암호가 암호 정책의 복잡성 요구 사항을 충족하지 않습니다. 더 강력한 암호를 사용해 보세요.
+ 마스터 사용자 암호가 재설정되었지만 암호가 암호 정책의 최소 길이 요구 사항을 충족하지 않습니다. 더 강력한 암호를 사용해 보세요.
+ 마스터 사용자 암호가 재설정되었지만 암호가 암호 정책의 복잡성 요구 사항을 충족하지 않습니다. 더 강력한 암호를 사용해 보세요.

기본적으로 마스터 사용자는 `CHECK_POLICY` 및 `CHECK_EXPIRATION`으로 생성되고 `OFF`로 설정됩니다. 마스터 사용자에게 암호 정책을 적용하려면 DB 인스턴스 생성 후 마스터 사용자에 대해 이러한 플래그를 수동으로 활성화해야 합니다. 이러한 플래그를 활성화한 후에는 SQL Server에서 직접 마스터 사용자 암호를 수정하여(예: T-SQL 문 또는 SSMS를 통해) 암호 정책을 기준으로 새 암호의 유효성을 검사합니다.

**참고**  
마스터 사용자가 잠긴 경우 `ModifyDBInstance` 명령으로 마스터 사용자 암호를 재설정하여 사용자를 잠금 해제할 수 있습니다.

## 마스터 사용자 암호 수정
<a name="SQLServer.Concepts.General.PasswordPolicy.MasterLogin.Reset"></a>

[ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 명령을 사용하여 마스터 사용자 암호를 수정할 수 있습니다.

**참고**  
마스터 사용자 암호를 재설정하면 RDS는 마스터 사용자에 대한 다양한 권한을 재설정하므로 마스터 사용자는 특정 권한을 잃을 수 있습니다. 또한 마스터 사용자 암호를 재설정하면 마스터 사용자의 잠금이 해제됩니다(잠겨 있던 경우).

RDS는 새 마스터 사용자 암호의 유효성을 검사하고 암호가 정책을 충족하지 않는 경우 RDS 이벤트를 내보내려고 시도합니다. RDS는 암호 정책을 충족하지 않는 경우에도 암호를 설정합니다.