ApsaraDB RDS for MySQL は validate_password プラグインを提供しており、これを使用してカスタムパスワードポリシーを作成し、データベースのセキュリティを強化できます。
機能
ApsaraDB RDS for MySQL は validate_password プラグインをサポートしており、データベースアカウントに対してパスワードの複雑さに関する詳細な要件を定義できます。次のルールを制御できます。
-
パスワードをデータベースアカウント名と同じにできるかどうか
-
パスワードの最小長
-
大文字と小文字の最小文字数
-
数字の最小文字数
-
特殊文字の最小文字数
-
パスワードの強度検証ポリシー
前提条件
ApsaraDB RDS for MySQL インスタンスは、MySQL 5.7 または 8.0 を実行している必要があります。
注意事項
-
プライマリノードへの
validate_passwordプラグインのインストールはセカンダリノードに自動的に同期されませんHigh-availability Edition や Cluster Edition インスタンスなどのプライマリ/セカンダリアーキテクチャのインスタンスでは、プライマリノードとセカンダリノードの両方に手動で validate_password プラグイン をインストールする必要があります。手動フェールオーバーを実行してセカンダリノードにログインし、プラグインをインストールできます。プラグインをプライマリノードにのみインストールした場合、フェールオーバー後に新しいプライマリノード (元のセカンダリ) にはプラグインがなく、パスワードポリシーは有効になりません。
説明プラグインのインストール後、ApsaraDB RDS コンソールで設定したパスワードポリシーパラメーターはセカンダリノードに自動的に同期されます。再度設定する必要はありません。
-
コアパラメーターの制約とシステムの動作
lengthの値は、number_count + (2 * mixed_case_count) + special_char_countの結果以上でなければなりません。いずれかの値の変更がこのルールに違反する場合、ApsaraDB RDS は自動的にlengthの値をこの数式の結果と等しくなるように調整します。 -
ApsaraDB RDS によって適用されるルール
カスタムポリシーの設定に関係なく、ApsaraDB RDS コンソール を使用するか、API オペレーション (CreateAccount または ResetAccountPassword) を呼び出してパスワードを作成または変更する場合、パスワードは常に次の要件を満たす必要があります:
-
パスワードの長さは 8~32 文字である必要があります。
-
パスワードには、大文字、小文字、数字、特殊文字 (
!@#$%^&*()_+-=) のうち、少なくとも 3 種類以上の文字種を含める必要があります。
-
-
8 文字の強制最小長をバイパスする (非推奨)
パラメーター値を変更しても、ApsaraDB RDS コンソールで必須のチェックをバイパスすることはできません。たとえば、パスワードの最小長を 5 に設定した場合でも、パスワードの作成または変更時には 8 文字以上のパスワードを入力する必要があります。
8 文字未満のパスワードを設定するには、
SET PASSWORDコマンドを使用して ApsaraDB RDS コンソールの必須の検証をバイパスし、5 文字のパスワードを直接設定できます。この方法はテスト環境または特殊なシナリオ専用であり、本番環境では推奨されません。
課金
カスタムパスワードポリシー機能は無料です。
ステップ 1: validate_password プラグインのインストール
-
特権アカウントで、ApsaraDB RDS for MySQL インスタンスに接続します。
-
次の SQL コマンドを実行して、
validate_passwordプラグインをインストールします。INSTALL PLUGIN validate_password SONAME 'validate_password.so'; -
次の SQL コマンドを実行して、プラグインがインストールされていることを確認します。
SHOW GLOBAL VARIABLES LIKE 'validate_password%';次のような出力は、プラグインが正常にインストールされたことを示しています。
Variable_name Value validate_password_dictionary_file validate_password_length 8 validate_password_mixed_case_count 1 validate_password_number_count 1 validate_password_policy MEDIUM validate_password_special_char_count 1
ステップ 2: パスワードポリシーパラメーターの変更
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側メニューで、パラメーターの設定 をクリックします。
-
loose_validate_passwordで始まるパラメーターを検索して変更します。詳細については、「ApsaraDB RDS for MySQL インスタンスのパラメーターの変更」をご参照ください。説明-
パラメーターを変更する前に、validate_password プラグインがインストールされていることを確認してください。そうしないと、変更は有効になりません。
-
パラメーターを変更する前に、「注意事項」セクションで説明されているコアパラメーターの制約を確認してください。パスワードポリシーの詳細については、MySQL の公式ドキュメントをご参照ください。
パラメーター
DB バージョン
説明
例 (MySQL 5.7)
loose_validate_password_check_user_name
5.7
パスワードがアカウント名と同じであることができるかどうかを指定します。有効な値:
-
ON (デフォルト):パスワードはアカウント名と同じにできません。
-
OFF:パスワードはアカウント名と同じにできます。
ON:パスワードがアカウント名と同じになることを禁止します。
loose_validate_password_policy
8.0/5.7
パスワードの強度ポリシーを指定します。有効な値:
-
0 (LOW):パスワードの長さのみを検証します。
-
1 (MEDIUM、デフォルト値):パスワードの長さ、数字の数、大文字と小文字、特殊文字を検証します。
-
2 (STRONG):パスワードの長さ、数字の数、大文字と小文字、特殊文字、および辞書ファイル内の一致を検証します。
説明ApsaraDB RDS はカスタム辞書ファイルをサポートしていないため、このポリシーレベルは MEDIUM と同等です。
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
パスワードに含める必要がある、大文字と小文字それぞれの最小文字数を指定します。たとえば、値が 1 の場合、大文字と小文字をそれぞれ 1 文字以上含める必要があります。
有効な値:0~256。デフォルト値は 1 です。
2:パスワードに大文字と小文字をそれぞれ 2 文字以上含める必要があります。
loose_validate_password_special_char_count
5.7
パスワードに含まれる特殊文字の最小文字数。
有効な値:0~256。デフォルト値は 1 です。
1:パスワードには少なくとも 1 つの特殊文字を含める必要があります。
-
関連トピック
-
ApsaraDB RDS コンソール (データベースアカウントの作成 または データベースアカウントのパスワードのリセット) を使用するか、API オペレーション (CreateAccount または ResetAccountPassword) を呼び出して、データベースアカウントのパスワードを設定できます。
-
データベースアカウントの権限を制限するには、「アカウント権限の変更」、「アカウントによる特定IPアドレスからのデータベースへのアクセス許可」、および「特定テーブル、ビュー、または列へのアカウントのアクセスのみを許可」をご参照ください。