はじめに
社内サーバーの Windows OS + SQL Server バージョアップ作業にともない、SQL Serverに接続していたアプリケーション(Classic ASP)を動かすと「ユーザー はログインできませんでした。 理由: このアカウントのパスワードを変更する必要があります。」のエラーにより動作しない。
原因は分かってしまえば簡単なことだったんですが、それに気が付くまでに数時間かかってしまったので備忘録として記事にします。
原因
気付くきっかけ
原因を探るために、いろいろ検索していた中で下記サイトの「パスワードポリシーを適用する」のチェックを外す (簡単なパスワードを許可したい場合) の一文を見て、ようやく原因に気が付きました。
今となってはどうやって辿り着いたのか記憶がない。
社内サーバーで使用するということで、もともとユーザー名とパスワードを一緒にしていました。バージョアップする際にも同じように設定したわけです。
これはパスワードポリシーにある「パスワードはユーザー アカウント名を含まない。」を満たしてないですね。
パスワードポリシーとは
パスワードの複雑性のポリシーは、使用可能なパスワードの数を増やすことにより、総当り攻撃を防ぐようにデザインされています。 パスワードの複雑性のポリシーが適用される場合、新しいパスワードは次のガイドラインを満たしている必要があります。
- パスワードはユーザー アカウント名を含まない。
- パスワードは 8 文字以上である。
- パスワードは次の 4 つのカテゴリのうちの 3 つのカテゴリの文字を含む。
- ラテン文字の大文字 (A ~ Z)
- ラテン文字の小文字 (a ~ z)
- 算用数字 (0 ~ 9)
- 感嘆符 (!)、ドル記号 ($)、番号記号 (#)、パーセント記号 (%) などの英数字以外の文字
- パスワードには最大 128 文字まで使用できます。 パスワードはできるだけ長く、複雑にします。
暫定対応
「パスワードポリシーを適用する」のチェックを外した。
あまりいい対応ではないですが、上長が出張していたので今回は一旦これで対応しました。
パスワードポリシーに則ったパスワードを設定するようにした方がいいでしょう。
最後に
原因は分かってしまえば簡単なことだった。
エラーの「理由: このアカウントのパスワードを変更する必要があります。」も原因が分かれば確かにその通りなんですよね。
アプリケーションは、バージョアップ前と何も変えていないのでそのまま動作するはずだし、パスワードはユーザーと綴りも一緒で正しいと思っているわけですから、パスワードポリシーとは頭の片隅にも思ってなかった。
なので役割とか権限周りの設定とか何度も見直したし、ユーザーも何度も作り直した、それでもエラーで接続できない。もう「わからない、わからない」って何度も呟きながら数時間かかってようやく解決です。