6.1.2.6 비밀번호 확인 플러그인
validate_password
플러그인 (MySQL 5.6.6의 시점에서 사용 가능) 암호를 테스트하여 보안을 향상시키는 데 사용할 수 있습니다. 이 플러그인은 두 가지 기능을 구현합니다.
평문 값으로 지정되는 암호를 할당 문에서 값은 현재의 암호 정책과 비교하여 검사하고 약한 경우 거부됩니다 (문
ER_NOT_VALID_PASSWORD
오류를 반환합니다). 이것은CREATE USER
,GRANT
및SET PASSWORD
문에 영향을줍니다.PASSWORD()
및OLD_PASSWORD()
함수의 인수로 지정되는 암호도 검사됩니다.비밀번호 후보의 강도는
VALIDATE_PASSWORD_STRENGTH()
SQL 함수를 사용하여 평가할 수 이것은 암호 인수를 취득 해, 0 (약한)에서 100 (강한)까지의 정수를 반환합니다.
예를 들어, 다음 문 평문 암호가 검사됩니다. 기본 암호 정책은 암호에 최소 8 자 길이가 요구되기 때문에 암호가 약한 것부터 문은 오류를 생성합니다.
mysql> SET PASSWORD = PASSWORD('abc');
ERROR 1819 (HY000) : Your password does not satisfy the current policy
requirements
해시 된 값으로 지정된 암호는 원래 암호 값을 얻을 수 없기 때문에 검사되지 않습니다.
mysql> SET PASSWORD = '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';
Query OK, 0 rows affected (0.01 sec)
암호 확인을 제어하는 매개 변수는 validate_password_
형식의 이름을 가지는 시스템 변수의 값으로 사용할 수 있습니다. 이러한 변수를 변경하여 암호 검사를 구성 할 수 있습니다. 섹션 6.1.2.6.2 "비밀번호 확인 플러그인의 옵션 및 변수" 를 참조하십시오. xxx
암호 검사의 세 가지 수준은 LOW
, MEDIUM
및 STRONG
입니다. 기본값은 MEDIUM
에서이를 변경하려면 validate_password_policy
의 값을 변경합니다. 이러한 정책을 통해 구현되는 암호 테스트는 점점 더 엄격합니다. 다음의 설명은 기본 매개 변수 값을 나타내며, 이들은 적절한 시스템 변수를 변경하여 변경할 수 있습니다.
LOW
정책은 암호 길이 만 테스트합니다. 암호는 최소한 8 자 길이이어야합니다.MEDIUM
정책은 암호가 최소 1 개의 숫자 문자를 포함 하나의 소문자 및 대문자를 포함, 1 개의 특수 문자 (영숫자가 아닌)를 포함해야한다는 조건을 추가합니다.STRONG
정책은 암호 4 자 이상 부분 문자열이 (사전 파일이 지정된 경우) 사전 파일의 단어와 일치해야한다는 조건을 추가합니다.
validate_password
플러그인이 설치되어 있지 않은 경우, validate_password_
시스템 변수는 사용할 수 없으며 문에서 암호는 검사되지 않고 xxx
VALIDATE_PASSWORD_STRENGTH()
는 항상 0을 반환합니다. 예를 들어, 계정에 8 자보다 짧은 암호를 지정할 수 있습니다.
6.1.2.6.1 비밀번호 확인 플러그인 설치
비밀번호 확인 플러그인의 이름은 validate_password
입니다. 서버에서 사용할 수 있도록하려면 플러그인 라이브러리의 오브젝트 파일이 MySQL 플러그인 디렉토리 ( plugin_dir
시스템 변수에 의해 지정된 디렉토리)에 존재해야합니다. 필요에 따라 서버를 시작할 때 플러그인 디렉토리 위치를 서버에 지시하는 plugin_dir
의 값을 설정합니다.
서버 시작시 플러그인을로드하려면 --plugin-load
옵션을 사용하여 플러그인을 포함하는 개체 파일의 이름을 지정합니다. 이 플러그인로드 방식은 서버를 시작할 때마다 옵션을 지정해야합니다. 예를 들어, my.cnf
파일에 다음 줄을 입력합니다.
[mysqld] plugin-load = validate_password.so
시스템의 객체 파일의 접미사가 .so
과 다를 올바른 접미사로 바꾸십시오 (예를 들어 Windows의 경우 .dll
).
또는 플러그인을 실행시에 등록하려면 (필요에 따라 확장자를 변경하여) 다음 문을 사용합니다.
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
INSTALL PLUGIN
플러그인을로드합니다. 또한 후속 일반 서버가 시작될 때마다 플러그인이로드되도록 해당 플러그인을 mysql.plugins
테이블에 등록합니다.
플러그인 INSTALL PLUGIN
에 의해 이전에 등록되어 있거나 --plugin-load
를 지정하여로드 된 경우 --validate-password
옵션을 서버 시작시에 사용하여 플러그인의 활성화를 제어 할 수 있습니다. 예를 들어, 플러그인을로드하여 실행시에 삭제되지 않도록하려면 다음 옵션을 사용합니다.
[mysqld] plugin-load = validate_password.so validate-password = FORCE_PLUS_PERMANENT
비밀번호 검증 플러그인을 사용하지 않고 서버가 실행되는 것을 방지하는 것이 바람직하다 경우 --validate-password
에 FORCE
또는 FORCE_PLUS_PERMANENT
값을 지정하여 사용하면 플러그인이 제대로 초기화 하지 않을 경우 서버 시작을 강제로 실패하도록합니다.
플러그인 설치에 대한 일반적인 정보는 5.1.8 절 "서버 플러그인" 을 참조하십시오. 플러그인의 설치를 확인하려면 INFORMATION_SCHEMA.PLUGINS
테이블을 조사하거나 SHOW PLUGINS
문을 사용합니다. 섹션 5.1.8.2 "서버 플러그인 정보 얻기" 를 참조하십시오.
6.1.2.6.2 비밀번호 확인 플러그인의 옵션 및 변수
validate_password
플러그인의 활성화를 제어하려면 다음 옵션을 사용합니다.
--validate-password[=
value
]Introduced 5.6.6 Command-Line Format --validate-password[=value]
Permitted Values Type enumeration
Default ON
Valid Values ON
OFF
FORCE
FORCE_PLUS_PERMANENT
validate_password
플러그인을로드하는 방법을 제어합니다. 값은 섹션 5.1.8.1 "플러그인 설치 및 제거" 에 설명되어있는 같은 플러그인로드 옵션에서 지정 가능한 값 중 하나를 할 필요가 있습니다. 예를 들어,--validate-password=FORCE_PLUS_PERMANENT
의 경우 플러그인을로드하고 서버가 실행중인 플러그인이 삭제되지 않도록하기 위해 서버에 지시합니다.이 옵션은
validate_password
플러그인INSTALL PLUGIN
에서 이전에 등록 된 있었는지,--plugin-load
에로드되어있는 경우에만 사용할 수 있습니다. 섹션 6.1.2.6.1 "비밀번호 확인 플러그인 설치" 를 참조하십시오.validate_password
플러그인이 설치되어있는 경우 암호 검사를 제어하는 매개 변수를 나타내는 몇 가지 시스템 변수를 공개합니다.
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
암호 검사 방법을 변경하기 위해 이러한 변수는 모두 서버 시작시 설정할 수 있으며, 이들 대부분은 실행시에도 설정할 수 있습니다. 다음 목록은 각 변수의 의미를 설명한 것입니다.
validate_password_dictionary_file
Introduced 5.6.6 System Variable (<= 5.6.25) Name validate_password_dictionary_file
Variable Scope Global Dynamic Variable No System Variable Name validate_password_dictionary_file
Variable Scope Global Dynamic Variable No System Variable (>= 5.6.26) Name validate_password_dictionary_file
Variable Scope Global Dynamic Variable Yes Permitted Values Type file name
validate_password
플러그인에 사용되는 사전 파일의 경로 이름. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.기본적으로이 변수는 빈 값을 가지고 사전 검사는 실행되지 않습니다. 사전 검사를 활성화하려면이 변수를 비어 있지 않은 값으로 설정해야합니다. 파일 이름이 상대 경로로 지정되면 서버의 데이터 디렉토리를 기준으로 해석됩니다. 이 내용은 소문자로 기재 한 줄에 하나의 단어로하십시오. 내용은
utf8
문자 집합을 가진 것으로 처리됩니다. 허용되는 최대 파일 크기는 1M 바이트입니다.암호 검사 중에 사전 파일이 사용되도록하려면 암호 정책을 2 (
STRONG
)로 설정해야합니다.validate_password_policy
시스템 변수의 설명을 참조하십시오. 이것이 true 인 경우, 길이가 4 ~ 100 암호의 각 부분 캐릭터 라인이 사전 파일의 단어와 비교됩니다. 중 하나가 일치하면 비밀번호가 거부됩니다. 비교는 대소 문자를 구분하지 않습니다.VALIDATE_PASSWORD_STRENGTH()
의 경우 암호STRONG
포함한 모든 정책과 비교하여 검사되기 때문에 강도의 평가는validate_password_policy
값에 관계없이 사전 검사가 포함됩니다.서버가 실행되는 동안 사전 파일에 변경 한 경우 변경 사항을 인식하려면 서버를 다시 시작해야합니다.
validate_password_length
Introduced 5.6.6 System Variable Name validate_password_length
Variable Scope Global Dynamic Variable Yes Permitted Values Type integer
Default 8
Min Value 0
validate_password
플러그인에 의해 검사되는 암호에 필요한 최소 문자. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.validate_password_length
최소 관련된 다른 몇개의 시스템 변수의 함수입니다. MySQL 5.6.10 시점에서는 서버에서 다음 식의 값보다 작은 값은 설정되지 않습니다.validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
전술의 제약 때문에
validate_password
플러그인이validate_password_length
값을 조정하면 플러그인 오류 로그 파일에 메시지를 기록합니다.validate_password_mixed_case_count
Introduced 5.6.6 System Variable Name validate_password_mixed_case_count
Variable Scope Global Dynamic Variable Yes Permitted Values Type integer
Default 1
Min Value 0
암호 정책이
MEDIUM
또는 더 강한 경우validate_password
플러그인에 의해 검사되는 암호에 필요한 소문자와 대문자의 최대 수. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.validate_password_number_count
Introduced 5.6.6 System Variable Name validate_password_number_count
Variable Scope Global Dynamic Variable Yes Permitted Values Type integer
Default 1
Min Value 0
암호 정책이
MEDIUM
또는 더 강한 경우validate_password
플러그인에 의해 검사되는 암호에 필요한 숫자 문자 (숫자)의 최대 수. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.validate_password_policy
Introduced 5.6.6 System Variable Name validate_password_policy
Variable Scope Global Dynamic Variable Yes Permitted Values Type enumeration
Default 1
Valid Values 0
1
2
validate_password
플러그인에 의해 적용되는 암호 정책. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.validate_password_policy
값은 숫자 0,1,2 또는 해당 기호 값LOW
,MEDIUM
,STRONG
를 사용하여 지정할 수 있습니다. 다음 표에서는 각 정책에 대해 실시되는 테스트에 대해 설명합니다. 길이 테스트의 경우, 필요한 길이는validate_password_length
시스템 변수의 값입니다. 마찬가지로 다른 테스트에 필요한 값은 다른validate_password_
변수에 의해 제공됩니다.xxx
Policy Tests Performed 0
또는LOW
길이 1
또는MEDIUM
길이. 숫자, 소문자, 대문자 및 특수 문자 2
또는STRONG
길이. 숫자, 소문자, 대문자, 특수 문자. 사전 파일 참고MySQL 5.6.10 이전 버전에서는
validate_password_policy
이름은validate_password_policy_number
이었습니다.validate_password_special_char_count
Introduced 5.6.6 System Variable Name validate_password_special_char_count
Variable Scope Global Dynamic Variable Yes Permitted Values Type integer
Default 1
Min Value 0
암호 정책이
MEDIUM
또는 더 강한 경우validate_password
플러그인에 의해 검사되는 암호에 필요한 영숫자가 아닌 문자의 최대 수. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.
validate_password
plugin이 설치된 경우 아래와 같이 여러 상태변수를 제공합니다.
mysql> SHOW STATUS LIKE 'validate_password%';
+-----------------------------------------------+---------------------+
| Variable_name | Value |
+-----------------------------------------------+---------------------+
| validate_password_dictionary_file_last_parsed | 2015-06-29 11:08:51 |
| validate_password_dictionary_file_words_count | 1902 |
+-----------------------------------------------+---------------------+