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

4분 분량
0

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 플러그인을 설치하고 켠 후, 새 유효성 검사 정책을 준수하도록 기존 암호를 재설정합니다.

  1. 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 명령이 암호 정책을 충족하지 않아 실패한 것을 볼 수 있습니다. 다음과 비슷한 오류 메시지가 나타납니다.

"암호가 현재 정책 요구 사항을 충족하지 않습니다."

  1. 암호 정책을 충족하는 암호를 가진 사용자를 생성하려면 다음 명령을 실행합니다.
MySQL [(none)]> CREATE USER 'USER123'@'%' identified by 'Password@57';
Query OK, 0 rows affected (0.01 sec)
  1. 다음 명령을 실행하여 사용자를 성공적으로 생성했는지 확인합니다.
MySQL [(none)]> SELECT user, host FROM mysql.user WHERE ( user='USER123' AND host='%' );
+-------------------+------+
| user              | host |
+-------------------+------+
| validate_password | %    |
+-------------------+------+
1 row in set (0.00 sec)
  1. 다음 명령을 실행하여 기존 사용자의 암호를 변경합니다. 다음 예시와 같이 정책 준수 암호를 사용합니다.
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 설명서의 암호 검증 플러그인