validate_password 플러그인을 사용하여 Amazon RDS MySQL DB 인스턴스의 보안을 개선하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 10월 19일

MySQL을 실행하는 Amazon Relational Database Service(Amazon RDS) DB 인스턴스가 있습니다. validate_password 플러그인을 사용하여 암호를 테스트하고 DB 인스턴스의 보안을 개선시키고 싶습니다. 어떻게 해야 하나요?

간략한 설명

MySQL은 RDS MySQL DB 인스턴스의 보안을 향상시키기 위해 사용할 수 있는 validate_password 플러그인을 제공합니다. 이 플러그인은 DB 인스턴스에 대한 DB 파라미터 그룹의 파라미터를 사용하여 암호 정책을 적용합니다. 플러그인은 MySQL 버전 5.6, 5.7 및 8.0을 실행하는 DB 인스턴스에 지원됩니다.

참고: validate_password 플러그인은 기본 MySQL 구성의 일부가 아닙니다. 대신 별도의 플러그인으로 존재합니다. Amazon RDS에서 MySQL DB 인스턴스를 생성할 때 플러그인이 기본적으로 설치되지 않습니다.

해결 방법

RDS MySQL DB 인스턴스에 대해 validate_password 플러그인 활성화

마스터 사용자를 사용하여 RDS MySQL DB 인스턴스에 연결하고 다음 명령을 실행합니다.

MySQL [(none)]> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

validate_password 플러그인을 설치합니다. 그런 다음 기본 파라미터 값으로 플러그인을 실행합니다.

validate_password 플러그인이 RDS MySQL DB 인스턴스에 설치 및 활성화되어 있는지 확인

DB 인스턴스에서 다음 쿼리를 실행하여 validate_password 플러그인의 상태를 확인합니다.

MySQL [(none)]> SELECT plugin_name, plugin_status, 
plugin_type, plugin_library FROM information_schema.plugins WHERE 
plugin_name='validate_password';

    +-------------------+---------------+-------------------+----------------------+
    | plugin_name       | plugin_status | plugin_type       | plugin_library       |
    +-------------------+---------------+-------------------+----------------------+
    | validate_password | ACTIVE        | VALIDATE PASSWORD | validate_password.so |
    +-------------------+---------------+-------------------+----------------------+

validate_password 플러그인의 기본값 확인

다음 쿼리를 실행하여 플러그인의 기본 파라미터 값을 확인합니다.

MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'validate_password%';

다음은 각 파라미터에 대한 설명입니다.

이름 설명
validate_password_check_user_name OFF
validate_password_dictionary_file
validate_password_length 8 최소 암호 길이
validate_password_mixed_case_count 1 암호가 대문자와 소문자를 포함해야 함
validate_password_number_count 1 암호가 최소 1개의 숫자를 포함해야 함
validate_password_policy MEDIUM 설정 그룹 레이블
validate_password_special_char_count 1 암호가 최소 1개의 특수 문자를 포함해야 함

validate_password_dictionary_filevalidate_password_check_user_name을 제외하고 DB 인스턴스에서 사용하는 사용자 지정 DB 파라미터 그룹에서 이러한 파라미터를 구성할 수 있습니다.

참고: DB 인스턴스에서 기본 파라미터 그룹을 사용 중인 경우 새 파라미터 그룹을 생성한 다음 DB 인스턴스에 연결해야 합니다. 이는 기본 파라미터 그룹의 파라미터 설정은 수정할 수 없기 때문입니다. 자세한 내용은 DB 파라미터 그룹 작업을 참조하십시오.

참고: Amazon RDS는 암호를 검증하지 않습니다. AWS Management Console, modify-db-instance AWS 명령줄 인터페이스(AWS CLI) 명령 또는 ModifyDBInstance RDS API 작업을 사용하여 사용자 암호를 설정하면 새 암호가 암호 정책을 충족하지 않더라도 변경할 수 있습니다.

기존 암호 재설정 및 정책 준수 암호 생성

password_validate 플러그인을 설치 및 활성화한 후 새 검증 정책을 준수하도록 기존 암호를 재설정합니다.

먼저 DB 인스턴스에 설치된 password_validate 플러그인을 테스트합니다. 위에 나열된 기본 플러그인 파라미터를 사용하여 새 DB 사용자를 생성하여 이 작업을 수행 할 수 있습니다.

MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

validate_password_policyMEDIUM으로 설정되어 있으므로 암호가 MySQL validate_password_policy 설명서에 설명된 기준을 충족하는지 확인해야 합니다. 위의 CREATE USER 명령이 암호 정책을 충족하지 못하기 때문에 "암호가 현재 정책 요건을 충족하지 않음" 오류와 함께 실패했습니다.

다음 명령을 실행하여 암호 정책을 충족하는 암호로 사용자를 생성합니다.

MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'Password@57';
Query OK, 0 rows affected (0.01 sec)

다음 명령을 실행하여 사용자를 성공적으로 생성했는지 확인합니다.

MySQL [(none)]> SELECT user, host FROM mysql.user WHERE ( user='USER123' AND host='%' );
+-------------------+------+
| user              | host |
+-------------------+------+
| validate_password | %    |
+-------------------+------+
1 row in set (0.00 sec)

기존 사용자의 암호를 변경하려면 아래와 같이 정책 호환 암호로 다음 명령을 실행합니다.

5.6:
mysql> SET PASSWORD FOR 'USER123'@'%' = PASSWORD('Password@2020');
Query OK, 0 rows affected (0.01 sec)

5.7 and 8.0:
mysql> alter user 'USER123'@'%' identified by 'Password@2020';
Query OK, 0 rows affected (0.01 sec)

기존 사용자의 암호 재설정에 대한 자세한 내용은 MySQL 설명서에서 루트 암호 재설정 방법을 참조하십시오.

RDS MySQL DB 인스턴스에 대한 validate_password 플러그인 비활성화

DB 인스턴스에서 validate_password 플러그인을 비활성화하려면 마스터 사용자를 사용하여 다음 명령을 실행합니다.

MySQL [(none)]> UNINSTALL PLUGIN validate_password;

이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?