적용 대상:SQL Server
SQL Server에서는 Windows 암호 정책 메커니즘을 사용할 수 있습니다. 암호 정책은 SQL Server 인증을 사용하는 로그인과 암호를 가진 포함된 데이터베이스 사용자에게 적용됩니다.
SQL 서버는 SQL Server 내부에 사용된 암호에 대해 Windows에 사용된 것과 동일한 복잡성 및 만료 정책을 적용할 수 있습니다. 이 기능은 NetValidatePasswordPolicy API에 따라 달라집니다.
참고 항목
Azure SQL 데이터베이스는 암호 복잡성만 적용합니다. 암호 만료 및 정책 적용 섹션은 Azure SQL Database에 적용되지 않습니다. Azure SQL Managed Instance의 암호 정책에 대한 자세한 내용은 SQL Managed Instance FAQ를 참조하세요.
암호 복잡성
암호 복잡성 정책은 가능한 암호의 수를 늘려 문자 조합을 이용한 공격(brute force attacks)을 방지하도록 설계되었습니다. 암호 복잡성 정책이 적용되는 경우 새 암호는 다음 지침을 충족해야 합니다.
암호에 사용자의 계정 이름이 포함되어 있지 않습니다.
암호는 8자 이상이어야 합니다.
암호는 다음 네 범주에 속하는 문자 중 세 자를 포함해야 합니다.
- 라틴어 대문자(
A~Z) - 라틴어 소문자(
athroughz) - 기본 10자리(~
09) - 비문자 숫자 문자: 느낌표 (
!), 달러 기호 ($), 숫자 기호 (#), 또는 백분율 (%)과 같은 경우입니다.
- 라틴어 대문자(
암호 길이는 128자까지 가능하며 되도록 길고 복잡한 암호를 사용합니다.
암호 만료
암호 만료 정책을 사용하여 암호의 수명을 관리합니다. SQL Server에서 암호 만료 정책을 강제로 적용하면 사용자에게 기존 암호를 변경할 것과 암호가 만료되어 해당 계정을 사용할 수 없게 됨을 알려 줍니다.
정책 적용
암호 정책 적용은 각 SQL Server 로그인에 대해 별도로 구성할 수 있습니다. ALTER LOGIN을 사용하여 SQL Server 로그인의 암호 정책 옵션을 구성합니다. 다음 규칙은 암호 정책 적용 구성에 적용됩니다.
CHECK_POLICY변경ON되면 다음과 같은 동작이 발생합니다.-
CHECK_EXPIRATION는 명시적으로OFF로 설정되지 않는 한ON로 설정됩니다. - 암호 기록이 현재 암호 해시 값으로 초기화됩니다.
- 계정 잠금 기간, 계정 잠금 임계값 및 다시 설정 후 계정 잠금 카운터도 사용하도록 설정됩니다.
-
CHECK_POLICY변경OFF되면 다음과 같은 동작이 발생합니다.-
CHECK_EXPIRATION도OFF으로 설정됩니다. - 암호 기록이 삭제됩니다.
-
lockout_time의 값이 초기화됩니다.
-
정책 옵션의 일부 조합은 지원되지 않습니다.
MUST_CHANGE이(가) 지정되면,CHECK_EXPIRATION과CHECK_POLICY은(는)ON으로 설정해야 합니다. 그렇지 않으면 문이 실패합니다.CHECK_POLICY가OFF로 설정된 경우,CHECK_EXPIRATION를ON로 설정할 수 없습니다.ALTER LOGIN이러한 옵션 조합이 포함된 문이 실패합니다.설정을 사용하면
CHECK_POLICY = ON다음과 같은 암호를 만들 수 없습니다.- Null 또는 비어 있음
- 컴퓨터 또는 로그인의 이름과 동일
-
password,admin,administrator,sa,sysadmin중 하나.
보안 정책은 Windows에서 설정될 수도 있고 도메인에서 받을 수도 있습니다. 컴퓨터에서 암호 정책을 보려면 로컬 보안 정책 MMC 스냅인(secpol.msc)을 사용합니다.
참고 항목
사용하도록 설정된 CHECK_POLICY가 있는 SQL Server 로그인의 경우, ALTER LOGIN 명령을 실행할 때 암호 변경을 위한 OLD_PASSWORD를 포함하지 않으면, 암호 기록 적용은 무시됩니다. 이는 이전에 사용한 암호에도 불구하고 암호 재설정을 허용하는 기본 동작입니다. 길이 및 복잡성을 포함하여 관련된 CHECK_POLICY기타 검사는 사용 여부에 OLD_PASSWORD 관계없이 검사됩니다.
SQL 사용자 암호 정책 정보 확인
다음 쿼리를 사용하여 SQL Server에서 SQL 사용자 암호 정책 및 만료 날짜를 확인할 수 있습니다. 다음 쿼리는 Azure SQL Database에서도 작동하지만 암호 복잡성만 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;