複数回のログイン失敗を試みたユーザーに対して、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)