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

所要時間2分
0

MySQL を実行する Amazon Relational Database Service (Amazon RDS) インスタンスがあります。validate_password プラグインを使用して、パスワードをテストし、DB インスタンスのセキュリティを向上させたいと考えています。

簡単な説明

MySQL には、RDS MySQL DB インスタンスのセキュリティを強化できる validate_password プラグインが用意されています。このプラグインでは、使用しているDB インスタンスの DB パラメータグループにあるパラメータを使用して、パスワードポリシーが適用されます。このプラグインは、MySQL 5.7 と 8.0 バージョンを実行する DB インスタンスをサポートしています。

**注:**validate\ _password プラグインは MySQL のデフォルト設定の一部ではなく、独立したプラグインです。Amazon RDS が MySQL DB インスタンスを作成する場合、プラグインはデフォルトではインストールされません。

解決策

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

リードユーザーを使用して RDS for 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 コンソール
  • AWS コマンドラインインターフェイス (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_policyMEDIUM に設定されているため、パスワードが MySQL validate_password_policy のドキュメントに記述されている条件を満たしていることを、確認する必要があります。上記の例では、CREATE USER コマンドはパスワードポリシーを満たしていないため、失敗します。その場合、次のようなエラーメッセージが表示されます。

"Your password does not satisfy the current policy requirements."

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

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

3.次のコマンドを実行して、ユーザーが正常に作成されたことを確認します。

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

4.既存のユーザーのパスワードを変更するには、次のコマンドを実行します。次の例に示すように、ポリシーに準拠するパスワードを使用します。

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 プラグインを無効にする

MySQL [(none)]> UNINSTALL PLUGIN validate_password;

関連情報

RDS for MySQL に対するパスワード検証プラグインの使用

MySQL ドキュメントでのパスワード検証プラグイン

AWS公式
AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ