• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 1. 일반적인 보안 문제
    1. 보안 지침
    2. 비밀번호를 안전한 상태로
    1. 비밀번호 보안에 대한 최종 사용자 지침
    2. 비밀번호 보안에 대한 관리 지침
    3. 암호 및 로깅
    4. MySQL에서 암호 해시
    5. MySQL 4.1에서 암호 해시 변경이 응용 프로그램에 미치는 영향
    6. 비밀번호 확인 플러그인
    3. 공격자에 대한 MySQL의 안전한 상태 유지
    4. 보안 관련 mysqld 옵션 및 변수
    5. MySQL을 일반 사용자로 실행하는 방법
    6. LOAD DATA LOCAL 보안 문제
    7. 클라이언트 프로그램의 보안 지침
    2. MySQL 권한 시스템
    3. MySQL 사용자 계정 관리
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

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_ xxx 형식의 이름을 가지는 시스템 변수의 값으로 사용할 수 있습니다. 이러한 변수를 변경하여 암호 검사를 구성 할 수 있습니다. 섹션 6.1.2.6.2 "비밀번호 확인 플러그인의 옵션 및 변수" 를 참조하십시오.

암호 검사의 세 가지 수준은 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]

    Introduced5.6.6
    Command-Line Format--validate-password[=value]
    Permitted ValuesTypeenumeration
    DefaultON
    Valid ValuesON
    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

    Introduced5.6.6
    System Variable (<= 5.6.25)Namevalidate_password_dictionary_file
    Variable ScopeGlobal
    Dynamic VariableNo
    System VariableNamevalidate_password_dictionary_file
    Variable ScopeGlobal
    Dynamic VariableNo
    System Variable (>= 5.6.26)Namevalidate_password_dictionary_file
    Variable ScopeGlobal
    Dynamic VariableYes
    Permitted ValuesTypefile name
    암호를 확인하기 위해 validate_password 플러그인에 사용되는 사전 파일의 경로 이름. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.

    기본적으로이 변수는 빈 값을 가지고 사전 검사는 실행되지 않습니다. 사전 검사를 활성화하려면이 변수를 비어 있지 않은 값으로 설정해야합니다. 파일 이름이 상대 경로로 지정되면 서버의 데이터 디렉토리를 기준으로 해석됩니다. 이 내용은 소문자로 기재 한 줄에 하나의 단어로하십시오. 내용은 utf8 문자 집합을 가진 것으로 처리됩니다. 허용되는 최대 파일 크기는 1M 바이트입니다.

    암호 검사 중에 사전 파일이 사용되도록하려면 암호 정책을 2 ( STRONG )로 설정해야합니다. validate_password_policy 시스템 변수의 설명을 참조하십시오. 이것이 true 인 경우, 길이가 4 ~ 100 암호의 각 부분 캐릭터 라인이 사전 파일의 단어와 비교됩니다. 중 하나가 일치하면 비밀번호가 거부됩니다. 비교는 대소 문자를 구분하지 않습니다.

    VALIDATE_PASSWORD_STRENGTH() 의 경우 암호 STRONG 포함한 모든 정책과 비교하여 검사되기 때문에 강도의 평가는 validate_password_policy 값에 관계없이 사전 검사가 포함됩니다.

    서버가 실행되는 동안 사전 파일에 변경 한 경우 변경 사항을 인식하려면 서버를 다시 시작해야합니다.

  • validate_password_length

    Introduced5.6.6
    System VariableNamevalidate_password_length
    Variable ScopeGlobal
    Dynamic VariableYes
    Permitted ValuesTypeinteger
    Default8
    Min Value0
    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

    Introduced5.6.6
    System VariableNamevalidate_password_mixed_case_count
    Variable ScopeGlobal
    Dynamic VariableYes
    Permitted ValuesTypeinteger
    Default1
    Min Value0

    암호 정책이 MEDIUM 또는 더 강한 경우 validate_password 플러그인에 의해 검사되는 암호에 필요한 소문자와 대문자의 최대 수. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.

  • validate_password_number_count

    Introduced5.6.6
    System VariableNamevalidate_password_number_count
    Variable ScopeGlobal
    Dynamic VariableYes
    Permitted ValuesTypeinteger
    Default1
    Min Value0

    암호 정책이 MEDIUM 또는 더 강한 경우 validate_password 플러그인에 의해 검사되는 암호에 필요한 숫자 문자 (숫자)의 최대 수. 이 변수는 플러그인이 설치되지 않는 한 사용할 수 없습니다.

  • validate_password_policy

    Introduced5.6.6
    System VariableNamevalidate_password_policy
    Variable ScopeGlobal
    Dynamic VariableYes
    Permitted ValuesTypeenumeration
    Default1
    Valid Values0
    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

    Introduced5.6.6
    System VariableNamevalidate_password_special_char_count
    Variable ScopeGlobal
    Dynamic VariableYes
    Permitted ValuesTypeinteger
    Default1
    Min Value0

    암호 정책이 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                |
+-----------------------------------------------+---------------------+


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved