Loading...
MySQL 9.5 Reference Manual 9.5의 8.4.4 The Password Validation Component의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
8.4.4.1 Password Validation Component Installation and Uninstallation 8.4.4.2 Password Validation Options and Variables 8.4.4.3 Transitioning to the Password Validation Component
validate_password component는 계정 password를 요구하고 잠재적인 password의 강도 테스트를 가능하게 함으로써 보안을 향상하는 역할을 합니다. 이 component는 password 정책을 구성할 수 있도록 해 주는 시스템 변수와 component 모니터링용 상태 변수를 노출합니다.
validate_password component는 다음과 같은 기능을 구현합니다:
cleartext 값으로 제공된 password를 할당하는 SQL 문에 대해, validate_password는 현재 password 정책에 따라 password를 검사하고, password가 약하면 이를 거부합니다(해당 문은 ER_NOT_VALID_PASSWORD 오류를 반환). 이는 ALTER USER,
CREATE USER, 그리고
SET PASSWORD 문에 적용됩니다.
CREATE USER 문에 대해,
validate_password는 password가 제공되어야 하며, 그 password가 password 정책을 만족해야 한다는 것을 요구합니다. 이는 계정이 처음에는 잠겨 있더라도 마찬가지인데, 그렇지 않으면 나중에 계정을 unlock할 때 정책을 만족하는 password 없이도 접근 가능해지기 때문입니다.
validate_password는 잠재적인 password의 강도를 평가하는
VALIDATE_PASSWORD_STRENGTH()
SQL 함수를 구현합니다. 이 함수는 password 인자를 받고 0(약함)에서 100(강함) 사이의 정수를 반환합니다.
참고
계정 password를 할당하거나 수정하는 문(
ALTER USER,
CREATE USER, 그리고
SET PASSWORD)의 경우, 여기서 설명하는 validate_password 기능은
credential을 MySQL 내부에 저장하는 인증 플러그인을 사용하는 계정에만 적용됩니다. credential 시스템에 대해 외부에서 인증을 수행하는 플러그인을 사용하는 계정의 경우, password 관리는 해당 시스템에 대해서도 외부에서 처리해야 합니다. 내부 credential 저장에 대한 자세한 내용은
Section 8.2.15, “Password Management”를 참조하십시오.
앞에서 언급한 제한은 계정을 직접적으로 영향을 미치지 않는
VALIDATE_PASSWORD_STRENGTH()
함수 사용에는 적용되지 않습니다.
Examples:
validate_password는 다음 문에서 cleartext password를 검사합니다. 최소 8자 길이의 password를 요구하는 기본 password 정책 하에서, 이 password는 약하므로 문은 오류를 발생시킵니다:1mysql> ALTER USER USER() IDENTIFIED BY 'abc'; 2ERROR 1819 (HY000): Your password does not satisfy the current 3policy requirements
1mysql> ALTER USER 'jeffrey'@'localhost' 2 IDENTIFIED WITH sha256_password 3 AS '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E'; 4Query OK, 0 rows affected (0.01 sec)
1mysql> CREATE USER 'juanita'@'localhost' ACCOUNT LOCK; 2ERROR 1819 (HY000): Your password does not satisfy the current 3policy requirements
VALIDATE_PASSWORD_STRENGTH()
함수를 사용하십시오:1mysql> SELECT VALIDATE_PASSWORD_STRENGTH('weak'); 2+------------------------------------+ 3| VALIDATE_PASSWORD_STRENGTH('weak') | 4+------------------------------------+ 5| 25 | 6+------------------------------------+ 7mysql> SELECT VALIDATE_PASSWORD_STRENGTH('lessweak$_@123'); 8+----------------------------------------------+ 9| VALIDATE_PASSWORD_STRENGTH('lessweak$_@123') | 10+----------------------------------------------+ 11| 50 | 12+----------------------------------------------+ 13mysql> SELECT VALIDATE_PASSWORD_STRENGTH('N0Tweak$_@123!'); 14+----------------------------------------------+ 15| VALIDATE_PASSWORD_STRENGTH('N0Tweak$_@123!') | 16+----------------------------------------------+ 17| 100 | 18+----------------------------------------------+
password 검사를 구성하려면, 이름이
validate_password.xxx
형식인 시스템 변수를 수정하십시오. 이들은 password 정책을 제어하는 매개변수입니다. 자세한 내용은
Section 8.4.4.2, “Password Validation Options and Variables”를 참조하십시오.
validate_password가 설치되어 있지 않으면,
validate_password.xxx
시스템 변수는 사용할 수 없고, 문의 password는 검사되지 않으며,
VALIDATE_PASSWORD_STRENGTH()
함수는 항상 0을 반환합니다. 예를 들어, 플러그인이 설치되어 있지 않으면 계정에 8자 미만의 password를 지정하거나 아예 password 없이도 계정을 생성할 수 있습니다.
validate_password가 설치되어 있다고 가정하면,
이 component는 LOW, MEDIUM,
STRONG의 세 가지 수준의 password 검사를 구현합니다. 기본값은
MEDIUM이며, 이를 변경하려면
validate_password.policy의 값을 수정하십시오. 각 정책은 점점 더 엄격한 password 테스트를 구현합니다. 다음 설명은 기본 매개변수 값을 기준으로 하며, 적절한 시스템 변수를 변경하여 수정할 수 있습니다.
LOW 정책은 password 길이만을 검사합니다.
password는 최소 8자 이상이어야 합니다. 이 길이를 변경하려면
validate_password.length를 수정하십시오.
MEDIUM 정책은 다음 조건을 추가합니다.
password는 최소 1개의 숫자 문자, 1개의 소문자, 1개의 대문자, 1개의 특수(영숫자가 아닌) 문자를 포함해야 합니다. 이러한 값을 변경하려면
validate_password.number_count,
validate_password.mixed_case_count,
그리고
validate_password.special_char_count를 수정하십시오.
STRONG 정책은 길이 4 이상인 password substring이, 지정된 경우 dictionary 파일 내의 단어와 일치해서는 안 된다는 조건을 추가합니다. dictionary 파일을 지정하려면
validate_password.dictionary_file를 수정하십시오.
추가로, validate_password는 현재 세션의 effective user account의 user name 부분과 일치하는 password(정방향 또는 역방향)를 거부하는 기능을 지원합니다. 이 기능에 대한 제어를 제공하기 위해,
validate_password는 기본적으로 활성화되어 있는
validate_password.check_user_name
시스템 변수를 노출합니다.
8.4.3 Connection Control Plugins
8.4.5 The MySQL Keyring