MySQLは、
なお、default_
で検証していきます。
パスワード再利用ポリシーとは
パスワード再利用ポリシーでは、
これまでのMySQLでは、
ただし、
パスワード再利用ポリシーに関するシステム変数
パスワード再利用ポリシーに関係するシステム変数には、
- password_
history - 以前使用したパスワードを再利用するためのパスワードの変更の回数を定義します。たとえば3を設定した場合、
パスワード変更前過去3回に使用したパスワードは設定できません。デフォルトは0で、 0の場合は特にこの制限を受けません。 - password_
reuse_ interval - 以前使用したパスワードを再利用するための経過日数を定義します。たとえばこの変数が7だった場合、
同じパスワードは7日間を経過しないと再利用することができません。この変数のデフォルトは0で、 0の場合この機能による制限は受けません。
どちらのシステム変数もグローバルスコープなため、
パスワード再利用ポリシーの確認
では実際に設定をして挙動を確認してみましょう。password_
を設定し、
mysql> show variables like 'password_history'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | password_history | 2 | +------------------+-------+ 1 row in set (0.01 sec) mysql> CREATE USER fukamachi@127.0.0.1 identified by 'fukamachi'; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER fukamachi@127.0.0.1 identified by 'fukamachi1'; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER fukamachi@127.0.0.1 identified by 'fukamachi'; ERROR 3638 (HY000): Cannot use these credentials for 'fukamachi@127.0.0.1' because they contradict the password history policy mysql> ALTER USER fukamachi@127.0.0.1 identified by 'fukamachi2'; Query OK, 0 rows affected (0.00 sec)
1度目のパスワード変更は成功しましたが、
過去利用したパスワードは、
mysql> SELECT * FROM mysql.password_history; +-----------+-----------+----------------------------+-------------------------------------------+ | Host | User | Password_timestamp | Password | +-----------+-----------+----------------------------+-------------------------------------------+ | 127.0.0.1 | fukamachi | 2021-06-15 20:08:38.114929 | *E3067DD12CA4F1198945F72A7A52671CFC7F0E0E | | 127.0.0.1 | fukamachi | 2021-06-15 20:08:00.799362 | *2B50AA916A466CAC017C572C0205956FAAA36E06 | | 127.0.0.1 | fukamachi | 2021-06-15 20:06:53.220987 | *91A495E3466B14CDBE3F92EB41CB2F1C70D5008E | +-----------+-----------+----------------------------+-------------------------------------------+
password_historyテーブル
過去に利用したハッシュ化されたパスワードはpassword_
mysql> DROP USER fukamachi@127.0.0.1; Query OK, 0 rows affected (10.02 sec) mysql> SELECT * FROM mysql.password_history; Empty set (0.00 sec)
ユーザーを削除して先ほどのテーブルを確認すると、
また、
mysql> ALTER USER fukamachi@127.0.0.1 identified by 'fukamachi'; ERROR 3638 (HY000): Cannot use these credentials for 'fukamachi@127.0.0.1' because they contradict the password history policy mysql> DELETE FROM mysql.password_history WHERE User='fukamachi' AND Host='127.0.0.1'; Query OK, 1 row affected (0.00 sec) mysql> ALTER USER fukamachi@127.0.0.1 identified by 'fukamachi'; Query OK, 0 rows affected (0.01 sec)
アカウント個別にパスワード再利用ポリシーを設定する
システム変数で設定した場合、
mysql> ALTER USER hidemifukamachi@127.0.0.1 PASSWORD HISTORY 5 PASSWORD REUSE INTERVAL 365 DAY; Query OK, 0 rows affected (0.01 sec)
各ユーザーの設定は、
mysql> SELECT user, host, password_reuse_history, password_reuse_time FROM mysql.user WHERE user = 'hidemifukamachi'; +-----------------+-----------+------------------------+---------------------+ | user | host | password_reuse_history | password_reuse_time | +-----------------+-----------+------------------------+---------------------+ | hidemifukamachi | 127.0.0.1 | 5 | 365 | +-----------------+-----------+------------------------+---------------------+`
まとめ
今回はパスワード再利用ポリシーについて説明しました。同じパスワードを使い回す危険を防ぐにはよい機能です。必要があれば、