悪意のあるパスワード攻撃を防ぐため、OceanBaseデータベースではユーザーが必要に応じてパスワードの複雑さ関数を設定し、ユーザーログインの身元を検証することで、データベースのセキュリティを向上させることができます。本記事では、OceanBaseデータベースのログインユーザーのパスワード複雑さを設定する方法について説明します。
関連変数の紹介
OceanBaseデータベースのMySQLモードでは、一連のシステム変数を設定することでパスワードの複雑さルールを定義できます。これらの設定はテナントレベルです。ユーザー作成時やユーザーパスワードの変更時に、システム変数の設定に基づいてパスワードが検証され、検証に失敗するとエラーが表示されます。関連するシステム変数は以下の表のとおりです。
変数名 |
機能 |
使用方法 |
|---|---|---|
| validate_password_check_user_name | ユーザーのパスワードがユーザー名と同じであるかどうかをチェックします。 |
|
| validate_password_length | ユーザーパスワードの最小長を設定します。 | デフォルト値は0です。 |
| validate_password_mixed_case_count | ユーザーパスワードに含まれる大文字と小文字の最小数を設定します。 | デフォルト値は0です。 |
| validate_password_number_count | ユーザーパスワードに含まれる数字の最小数を設定します。 | デフォルト値は0です。 |
| validate_password_policy | パスワードチェックポリシーを設定します。 |
|
| validate_password_special_char_count | ユーザーパスワードに含まれる特殊文字の最小数を設定します。 | デフォルト値は0です。 |
パスワードの複雑さの設定
注意
本番環境では、パスワードの長さを20文字に設定し、数字、大文字、小文字、特殊文字を含めることを推奨します。パスワードの複雑さが低いほど、例えばユーザー名を含む場合や繰り返しの文字を使用する場合など、解読される可能性が高くなります。セキュリティ上の理由から、ユーザーのパスワードは高い複雑さを持たせる必要があります。
このセクションでは、パスワードの複雑さルールを最小長8文字、大文字3文字以上、小文字3文字以上、特殊文字1文字以上、ユーザーパスワードはユーザー名と同じにできない、およびチェックポリシーをmediumに設定する例を用いて、パスワードの複雑さを設定する操作手順を説明します。
rootユーザーでクラスタのMySQLテナントにログインします。
obclient -uroot@mysql -P2881 -h10.xxx.xxx.1 -p*******システム変数を使用してパスワードの複雑さを設定します。
obclient> SET GLOBAL validate_password_check_user_name=on; obclient> SET GLOBAL validate_password_length=8; obclient> SET GLOBAL validate_password_mixed_case_count=3; obclient> SET GLOBAL validate_password_special_char_count=1; obclient> SET GLOBAL validate_password_policy='medium';終了後再ログインし、変数が有効になっているか確認します。
obclient> SHOW VARIABLES LIKE 'validate%'; +--------------------------------------+--------+ +--------------------------------------+--------+ | VARIABLE_NAME | VALUE | +--------------------------------------+--------+ | validate_password_check_user_name | off | | validate_password_length | 8 | | validate_password_mixed_case_count | 3 | | validate_password_number_count | 0 | | validate_password_policy | medium | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 6 rows in set (0.00 sec)パスワードの複雑さを検証します。
2つのユーザーを作成し、それぞれ要件を満たすパスワードと満たさないパスワードを設定します。
obclient> CREATE USER sectest1 IDENTIFIED BY '******'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements obclient> CREATE USER sectest1 IDENTIFIED BY '***1_%'; Query OK, 0 rows affected設定したパスワードの複雑さが要件を満たさない場合、ユーザーの作成は失敗します。