RDS for MySQL では、validate_password プラグインを使用してカスタムパスワードポリシーを作成できます。この機能により、パスワードの長さや強度などのパスワードの複雑さのルールを変更でき、データベースアクセスのセキュリティが強化されます。
機能紹介
RDS for MySQL の validate_password プラグインは、データベースアカウントのパスワードの複雑さの要件を詳細に制御します。
パスワードをデータベースのユーザー名と同じにできるかどうか
パスワードの最小長
大文字と小文字の最小数
数字の最小数
特殊文字の最小数
パスワード強度のチェックポリシー
前提条件
RDS for MySQL インスタンスは MySQL 5.7 または 8.0 を実行していること。
重要
プライマリノードにインストールされた
validate_passwordプラグインは、セカンダリノードに自動的に同期されませんプライマリ/セカンダリ アーキテクチャ (High-availability Edition または Cluster Edition) のインスタンスの場合、プライマリノードとセカンダリノードに個別にvalidate_password プラグインをインストールする必要があります。手動のプライマリ/セカンダリフェールオーバーを実行してセカンダリノードにログインし、プラグインをインストールできます。プライマリノードにのみプラグインをインストールした場合、フェールオーバー後に新しいプライマリノード (元のセカンダリノード) でプラグインが使用できなくなります。これにより、パスワードポリシーが無効になります。
説明プラグインをインストールした後、RDS コンソールで設定されたパスワードポリシーパラメーターはセカンダリノードに自動的に同期されます。再度設定する必要はありません。
コアパラメーターの制限とシステムの処理
lengthの値は、number_count + (2 × mixed_case_count) + special_char_count以上である必要があります。値がこの要件を満たさない場合、RDS は自動的にlengthの値を数式の結果と等しくなるように調整します。RDS の必須ルール
カスタムポリシーの設定に関係なく、RDS コンソールでパスワードを作成または変更する場合、または API 操作 (CreateAccount または ResetAccountPassword) を呼び出す場合、パスワードは常に次の要件を満たす必要があります。
長さが 8~32 文字であること。
大文字、小文字、数字、特殊文字 (
!@#$%^&*()_+-=) のうち、少なくとも 3 種類を含むこと。
8 文字の最小長制限のバイパス (非推奨)
パラメーター値を調整しても、RDS コンソールでの必須チェックをバイパスすることはできません。パスワードの最小長を 5 に設定した場合でも、パスワードの作成または変更時には少なくとも 8 文字を入力する必要があります。
8 文字未満のパスワードを設定するには、
SET PASSWORDコマンドを使用して RDS コンソールでの必須チェックをバイパスし、直接 5 文字のパスワードを設定できます。この方法は、テスト環境または特殊なシナリオにのみ適しています。本番環境では使用しないでください。
料金
カスタムパスワードポリシー機能は無料です。
ステップ 1: validate_password プラグインをインストールする
特権アカウントを使用して MySQL インスタンスに接続します。
次の SQL コマンドを実行して、
validate_passwordプラグインをインストールします。INSTALL PLUGIN validate_password SONAME 'validate_password.so';次の SQL コマンドを実行して、プラグインがインストールされていることを確認します。
SHOW GLOBAL VARIABLES LIKE 'validate_password%';次のような結果が返された場合、プラグインはインストールされています。

ステップ 2: パスワードポリシーパラメーターを変更する
インスタンスページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、パラメーターの設定 をクリックします。
インスタンスパラメーターの設定 の手順に従って、
loose_validate_passwordシリーズのパラメーターを検索して変更します。説明パラメーターを変更する前に、validate_password プラグインがインストールされていることを確認してください。そうしないと、変更したパラメーターは有効になりません。
パラメーターを変更する前に、重要セクションで説明されているコアパラメーターの制限を認識していることを確認してください。詳細については、「MySQL の公式ドキュメント」をご参照ください。
パラメーター
サポートされているデータベースバージョン
説明
設定例 (MySQL 5.7)
loose_validate_password_check_user_name
5.7
パスワードをユーザー名と同じにできるかどうかを指定します。有効な値:
ON (デフォルト): 許可
OFF: 許可しない
OFF: パスワードはユーザー名と同じにできません。
loose_validate_password_policy
8.0/5.7
パスワード強度のチェックレベル。有効な値:
0: パスワードの長さのみをチェックします。
1 (デフォルト): パスワードの長さ、数字、大文字と小文字、特殊文字をチェックします。
2: パスワードの長さ、数字、大文字と小文字、特殊文字、および辞書ファイルをチェックします。
説明辞書ファイルを指定できないため、レベル 2 はレベル 1 と同じです。
1: パスワードの長さ、数字、大文字と小文字、特殊文字をチェックします。
loose_validate_password_length
8.0/5.7
パスワードの最小長。
MySQL 5.7: 値は 0 から 256 の範囲で指定できます。デフォルト値は 8 です。
MySQL 8.0: 値は 1 から 12 の範囲で指定できます。デフォルト値は 8 です。
10: パスワードの最小長は 10 文字です (要件を満たしています: 10 >= 2 + (2 × 2) + 1 = 7)。
loose_validate_password_number_count
5.7
パスワードに必要な数字の数。
値は 0 から 256 の範囲で指定できます。デフォルト値は 1 です。
2: パスワードには少なくとも 2 つの数字を含める必要があります。
loose_validate_password_mixed_case_count
5.7
パスワードに必要な大文字と小文字の数。
値は 0 から 256 の範囲で指定できます。デフォルト値は 1 です。
2: パスワードには、少なくとも 1 つの大文字と 1 つの小文字 (合計 2 つの大文字小文字混合) を含める必要があります。
loose_validate_password_special_char_count
5.7
パスワードに必要な特殊文字の数。
値は 0 から 256 の範囲で指定できます。デフォルト値は 1 です。
1: パスワードには少なくとも 1 つの特殊文字を含める必要があります。
参考
RDS コンソール (アカウントの作成 または アカウントのパスワードのリセット) または API 操作 (CreateAccount または ResetAccountPassword) を呼び出すことで、データベースアカウントのパスワードを設定できます。
データベースアカウントの権限を制限する方法の詳細については、「アカウントの権限の変更」、「指定した IP アドレスからデータベースにアクセスする権限をアカウントに付与する」、および「指定したテーブル、ビュー、またはフィールドのみにアクセスする権限をアカウントに付与する」をご参照ください。