パスワードを忘れた? アカウント作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2015年6月9日のデベロッパー記事一覧(全1件)
12119798 story
データベース

MySQL 5.7.4で導入された「パスワードの有効期限」設定にご注意を? 30

ストーリー by hylom
まだ採用ディストリが少ないからセーフかも? 部門より
あるAnonymous Coward 曰く、

昨年3月31日にリリースされたMySQL 5.7.4で新たに導入された「default_password_lifetime」システム変数について、その挙動に注意が必要という話が話題になっているはてなブックマーク)。

このシステム変数は、「パスワードの有効期限」を日単位で設定するもの。Changes in MySQL 5.7.4ドキュメントによると、パスワードを変更してからこの変数で指定された日数が経過すると、そのパスワードが失効するというものだ。デフォルト値は360、つまり約1年で、ドキュメントには「パスワードは年一回更新すべきである」と記されている。

ユーザーのパスワードを変更した日付はmysql.userテーブルのpassword_last_changedカラムに記録されており、ログイン処理を行う際にこの値を参照する仕組みのようだ。また、password_lifetimeカラムでユーザー毎の有効期限を設定することも可能だ。より詳しい情報はドキュメントのPassword Expiration Policy項にまとめられているが、パスワードの有効期限が切れていた場合、ログインはできるもののパスワードを変更するまでそれ以外のデータベース操作が一切行えなくなるという。

定期的にパスワードを変更することに意味があるのか、という議論はおいておいて、大きな問題点としては、この設定がデフォルトで有効になっているということだ。そのため、知らぬ間に突然アプリケーションが動かなくなる、といった現象が発生する可能性がある。さらに凶悪なことにログインはできるのにクエリは行えないという状況になるため、パスワードに有効期限が設定されているという知識がない場合、原因不明で特定のアカウントからのみクエリが行えない、という状況に見えてしまう。

MySQL 5.7.4がリリースされてから1年と2か月ほどが経過し、そろそろアカウントを作成してから360日が経過するシステムが登場してくるところだ。なにか大きなトラブルにならなければ良いのだが……

typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...