OceanBaseデータベースでは、複数回のログイン失敗を行ったユーザーに対して、そのユーザーをロックします。これは悪意あるパスワード攻撃を防ぎ、データベースを保護し、データベースのセキュリティを向上させるためです。
ログイン失敗時の処理ポリシー
OceanBaseデータベースのMySQLモードでは、テナントレベルの構成パラメータconnection_control_failed_connections_thresholdを使用して、ユーザーの誤ログイン試行のしきい値を制御します。ユーザーの連続した誤ログイン回数がこの構成パラメータで定義された値を超えると、システムはアカウントをロックします。
connection_control_failed_connections_threshold構成パラメータは、ユーザーの誤ログイン試行のしきい値を指定するために使用されます。デフォルト値は0で、値の範囲は[0、2147483647]です。その中で:
値が
0の場合、この機能を無効にすることを意味し、ユーザーの誤ログイン試行は処理されません。値が
0以外の場合、ユーザーの誤ログイン回数が指定された値を超えると、システムはアカウントをロックします。具体的なロック時間は、以下の式で計算されます:MIN(MAX((current_failed_login_num + 1 - connection_control_failed_connections_threshold) * 1000, connection_control_min_connection_delay), connection_control_max_connection_delay)その中で:
current_failed_login_numは、ユーザーの現在の連続誤ログイン回数を表し、current_failed_login_numはconnection_control_failed_connections_threshold以上です。パラメータ
connection_control_min_connection_delayは、連続誤ログイン回数のしきい値を超えた後のロック時間の最小値を指定するために使用されます。値の範囲は[1000、2147483647]で、デフォルト値は1000ミリ秒です。パラメータ
connection_control_min_connection_delayの詳細については、connection_control_min_connection_delayを参照してください。パラメータ
connection_control_max_connection_delayは、連続誤ログイン回数のしきい値を超えた後のロック時間の最大値を指定するために使用されます。値の範囲は[1000、2147483647]で、デフォルト値は2147483647ミリ秒です。パラメータ
connection_control_max_connection_delayの詳細については、connection_control_max_connection_delayを参照してください。
設定例
rootユーザーでクラスタのMySQLテナントにログインします。
obclient -uroot@mysql -h127.1 -P2881 -p********以下のステートメントを実行して、ユーザーの誤ログイン回数を5回に設定します。誤ログイン回数を超えた場合、誤ログインロックの最小時間を60000ミリ秒、誤ログインロックの最大時間を360000ミリ秒と指定します。
例:
obclient> ALTER SYSTEM SET connection_control_failed_connections_threshold=5; obclient> ALTER SYSTEM SET connection_control_min_connection_delay=60000; obclient> ALTER SYSTEM SET connection_control_max_connection_delay=360000;パラメータの詳細な設定と説明については、クラスタパラメータの変更を参照してください。
ログインユーザーを作成します。
obclient> CREATE USER 'test' IDENTIFIED BY '*******'; Query OK, 0 rows affected (0.04 sec)ログイン失敗処理ポリシーが有効になっているかどうかを検証します。 連続して5回間違ったパスワードを入力すると、ユーザーがロックされます。
obclient -h127.1 -P2881 -utest@mysql -p*******; obclient: [Warning] Using a password on the command line interface can be insecure. ERROR 5039 (01007): User lockedrootユーザーでデータベースのMySQLテナントにログインし、失敗したログイン情報を確認します。obclient> SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS; +-------------+-----------------+ | USERHOST | FAILED_ATTEMPTS | +-------------+-----------------+ | 'test'@'%' | 5 | +-------------+-----------------+ 1 row in set (0.005 sec)以下のSQLステートメントを実行して、ユーザーのロックを解除します。
注意
ユーザーのロック解除操作は通常管理者が行います。一般ユーザーがロックおよびロック解除操作を実行するには、グローバルな
ALTER USER権限が付与されている必要があります。ユーザー権限の確認および権限付与に関する操作については、ユーザー権限の確認および直接権限付与を参照してください。obclient> ALTER USER test ACCOUNT UNLOCK; Query OK, 0 rows affected (0.03 sec)