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

最終更新日: 2020 年 6 月 17 日

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_file および validate_password_check_user_nameを除くパラメータを、DB インスタンスで使用できるようにカスタム DB パラメータグループで設定できます。

注 : DB インスタンスがデフォルトのパラメータグループを使用している場合は、新しいパラメータグループを作成し、この DB インスタンスにアタッチする必要があります。デフォルトのパラメータグループのパラメータ設定は変更できません。詳細については、「DB パラメータグループを使用する」をご参照ください。

注 : Amazon RDS では、パスワードを検証しません。AWS マネジメントコンソール、modify-db-instance AWS コマンドラインインターフェイス (AWS CLI) コマンド、または ModifyDBInstance RDS API オペレーションを使用してユーザーパスワードを設定すると、新しいパスワードがパスワードポリシーを満たさない場合でも、変更は成功する可能性があります。

既存のパスワードをリセットし、ポリシー準拠のパスワードを作成する

password_validate プラグインをインストールして有効にしたら、新しい検証ポリシーに準拠させるために既存のパスワードをリセットします。

まず、上記のデフォルトのプラグインパラメータを使用して、DB インスタンスにインストールされている password_valdiate プラグインをテストし、新しい DB ユーザーを作成します。

MySQL [(none)]> CREATE USER 'validate_password'@'%' 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 'validate_password'@'%' identified by 'Password@57';
Query OK, 0 rows affected (0.01 sec)

次のクエリを実行して、ユーザーが正常に作成されたことを確認します。

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

既存のユーザーを変更するには、次に示すように、ポリシーに準拠するパスワードを使用して ALTER USER クエリを実行します。

mysql> alter user 'validate_password'@'%' identified by 'Password@2020';
Query OK, 0 rows affected (0.01 sec)

既存のユーザーのパスワードをリセットする方法の詳細については、「MySQL documentation on How to reset the root password (ルートパスワードのリセットに関する MySQL ドキュメント)」をご参照ください。

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

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

MySQL [(none)]> UNINSTALL PLUGIN validate_password;

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

改善できることはありますか?


さらにサポートが必要な場合