第149回 MySQLのパスワード再利用ポリシーでは,
パスワード検証必須ポリシー (Password Verification-Required Policy) とは
パスワード検証必須ポリシーとは,password_
を記述するか,SET (GLOBAL|PERSIST)
で設定します。アカウント単位でも設定することができます。
[mysqld]
password_require_current
password_
グローバルポリシー設定
実際に設定して動作を確認してみましょう。
グローバルポリシーに設定がされている場合はSHOW VARIABLES構文で確認することができます。lhfukamachi@%ユーザーを作成し,
root > show variables like 'password_require_current'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | password_require_current | ON | +--------------------------+-------+ 1 row in set (0.06 sec) root > CREATE USER 'lhfukamachi'@'%' IDENTIFIED BY 'lhfukamachi'; Query OK, 0 rows affected (0.01 sec)
$ mysql -u lhfukamachi -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. 〈省略〉 lhfukamachi >
lhfukamachi@%ユーザーでログインすることができました。従来通りにパスワードを変更してみると,password_
がONの状態でパスワードを変更する場合は,REPLACE <現在のパスワード>
をつけて変更します。
> SET PASSWORD = 'lhfukamachi_change_password'; ERROR 3892 (HY000): Current password needs to be specified in the REPLACE clause in order to change it. > SET PASSWORD = 'lhfukamachi_change_password' REPLACE 'lhfukamachi'; Query OK, 0 rows affected (0.01 sec)
このように,
アカウント個別に設定する
アカウント個別に設定する場合は,CREATE USER/ ALTER USER
構文にPASSWORD REQUIRE CURRENT
オプションを設定することで設定することができます。
PASSWORD REQUIRE CURRENTは以下3つの設定ができます。
- PASSWORD REQUIRE CURRENT
- パスワードを変更するときは現在のパスワードを指定する必要がある。
- PASSWORD REQUIRE CURRENT OPTIONAL
- パスワードの変更するときは現在のパスワードを指定する必要はない。
- PASSWORD REQUIRE CURRENT DEFAULT
- パスワードの変更するときに現在のパスワードが必要かどうかは
password_
の設定に依存する。require_ current
root > ALTER USER 'lhfukamachi'@'%' PASSWORD REQUIRE CURRENT OPTIONAL; Query OK, 0 rows affected (0.00 sec)
また,
password_PASSWORD REQUIRE CURRENT
, PASSWORD REQUIRE CURRENT OPTIONAL
, PASSWORD REQUIRE CURRENT DEFAULT
となっています。
root > SELECT user, host, password_require_current FROM mysql.user WHERE user = 'lhfukamachi'; +-------------+------+--------------------------+ | user | host | password_require_current | +-------------+------+--------------------------+ | lhfukamachi | % | N | +-------------+------+--------------------------+ 1 row in set (0.00 sec)
各アカウントの設定状態と,
ログイン失敗時のアカウントの一時ロック
MySQL 8.FAILED_
を設定することで,
それぞれ回数は0~32767の範囲で設定することができます
root > CREATE USER 'lhfukamachi'@'%' IDENTIFIED BY 'lhfukamachi' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 3; Query OK, 0 rows affected (0.01 sec) (3回目のログイン失敗時もエラーの場合はアカウントがロックされる) $ mysql -u lhfukamachi -p Enter password: ERROR 3955 (HY000): Access denied for user 'lhfukamachi'@'localhost'. Account is blocked for 3 day(s) (3 day(s) remaining) due to 3 consecutive failed logins.
ただし,
ロックされたアカウントはALTER USER構文のACCOUNT UNLOCKオプションを指定して解除するか,
また,
各アカウントの設定についてはmysql.
root > SELECT user, host, user_attributes FROM mysql.user WHERE user = 'lhfukamachi'; +-------------+------+----------------------------------------------------------------------------------+ | user | host | User_attributes | +-------------+------+----------------------------------------------------------------------------------+ | lhfukamachi | % | {"Password_locking": {"failed_login_attempts": 3, "password_lock_time_days": 3}} | +-------------+------+----------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
まとめ
今回は,
からの記事と詳細 ( 第152回 パスワード検証必須ポリシーとログイン失敗時のアカウントの一時ロック - Gihyo Jp )
https://ift.tt/37dJZPV
No comments:
Post a Comment