validate_password プラグインを使用して、Amazon RDS MySQL DB インスタンスのセキュリティを強化するには、どうすればよいですか ?

最終更新日: 2020 年 10 月 19 日

Amazon Relational Database Service (Amazon RDS) DB インスタンスを使用して、MySQL を実行させています。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 マネジメントコンソールから行う、あるいは、AWS コマンドラインインターフェイス(AWS CLI)コマンドの modify-db-instanceか、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_policyMEDIUM に設定されているため、パスワードが MySQL validate_password_policy のドキュメントに記述されている条件を満たしていることを、確認する必要があります。上記の CREATE USER コマンドはパスワードポリシーを満たしていないため、"Your password does not satisfy the current policy requirements(パスワードは現在のポリシー要件を満たしていません)" というエラーで失敗します。

次のコマンドを実行して、パスワードポリシーを満たすパスワードでユーザーを作成します。

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 ドキュメントの、How to reset the root password(ルートパスワードのリセット方法)を参照してください。

RDS MySQL DB インスタンスの validate_password プラグインを無効にする

DB インスタンスから validate_password プラグインを無効にするには、マスターユーザーを使用して次のコマンドを実行します。

MySQL [(none)]> UNINSTALL PLUGIN validate_password;

この記事は役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?