validate_password 플러그인을 사용해 MySQL용 Amazon RDS DB 인스턴스의 보안을 개선하려면 어떻게 해야 하나요?
MySQL을 실행하는 Amazon Relational Database Service(RDS) 인스턴스가 있습니다. validate_password 플러그인을 사용해 암호를 테스트하고 DB 인스턴스의 보안을 개선하고 싶습니다.
간략한 설명
MySQL에서는 MySQL용 RDS DB 인스턴스의 보안을 개선할 수 있는 validate_password 플러그인을 제공합니다. 해당 플러그인에서는 DB 인스턴스의 DB 파라미터 그룹에 있는 파라미터를 사용해 암호 정책을 적용합니다. 플러그인은 MySQL 버전 5.7 및 8.0을 실행하는 DB 인스턴스에서 지원됩니다.
**참고:**validate_password 플러그인은 기본 MySQL 구성에 포함되어 있지 않는 플러그인입니다. Amazon RDS에서 MySQL DB 인스턴스를 생성할 때 플러그인이 기본으로 설치되지 않습니다.
해결 방법
MySQL RDS DB 인스턴스의 validate_password 플러그인 활성화
리드 사용자를 사용해 RDS for MySQL DB 인스턴스에 연결하고 다음 명령을 실행합니다.
MySQL [(none)]> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
그러면 validate\ _password 플러그인이 설치되고, 기본 파라미터 값으로 플러그인이 실행됩니다.
MySQL DB 인스턴스의 RDS에 validate_password 플러그인이 설치 및 활성화되어 있는지 확인합니다.
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
- 값 - 끄기
- 설명 - 공백
validate_password_dictionary_file
- 값 - 공백
- 설명 - 공백
validate_password_length
- 값 - 8
- 설명 - 최소 암호 길이
validate_password_mixed_case_count
- 값 - 1
- 설명 - 암호에 대문자와 소문자가 있어야 합니다
validate_password_number_count
- 값 - 1
- 설명 - 비밀번호에 하나 이상의 숫자가 있어야 합니다
validate_password_policy
- 값 - 보통
- 설명 - 설정 그룹 레이블
validate_password_special_char_count
- 값 - 1
- 설명 - 암호에 하나 이상의 특수 문자가 있어야 합니다
DB 인스턴스가 사용하는 사용자 지정 DB 파라미터 그룹에 이 파라미터를 구성합니다. 단, validate_password_dictionary_file, validate_password_check_user_name은 예외입니다. DB 인스턴스가 기본 파라미터 그룹을 사용한다면 새 파라미터 그룹을 생성하고 DB 인스턴스에 연결해야 합니다. 이는 기본 파라미터 그룹의 파라미터 설정을 수정할 수 없기 때문입니다. 자세한 내용은 파라미터 그룹 작업을 참고하세요.
참고: Amazon RDS에서는 암호를 검증하지 않습니다. 다음 중 하나를 선택해 사용자 암호를 설정하면 정책에 관계없이 암호 변경이 성공합니다.
- AWS Management Console
- AWS Command Line Interface(AWS CLI) modify-db-instance 명령
- Amazon RDS API ModifyDBInstance 작업
기존 암호 재설정 및 정책 준수 암호 생성
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_policy이 보통으로 설정되어 있기 때문에 암호가 MySQL validate_password_policy documentation에 안내된 기준을 충족해야 합니다. 위 예시에서 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)
- 다음 명령을 실행하여 기존 사용자의 암호를 변경합니다. 다음 예시와 같이 정책 준수 암호를 사용합니다.
mysql> alter user 'USER123'@'%' identified by 'Password@2020'; Query OK, 0 rows affected (0.01 sec)
기존 사용자의 암호 재설정에 대한 자세한 내용은 루트 암호 재설정(MySQL 웹 사이트에서)을 참고하세요.
RDS MySQL DB 인스턴스의 validate_password 플러그인 비활성화
MySQL [(none)]> UNINSTALL PLUGIN validate_password;
관련 정보
MySQL의 RDS용 비밀번호 유효성 검사 플러그인 사용
MySQL 설명서의 암호 검증 플러그인
관련 콘텐츠
- 질문됨 10달 전lg...
- 질문됨 8달 전lg...
- 질문됨 6달 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 9달 전
- AWS 공식업데이트됨 10달 전
- AWS 공식업데이트됨 2년 전