悪意のあるパスワード攻撃を防ぐため、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設定したパスワードの複雑さが要件を満たしていない場合、ユーザーの作成に失敗します。