ドメインに参加したサーバーやPCは、コンピューターアカウントとそのパスワードを使ってドメインコントローラと認証します。コンピューターアカウントとはユーザーアカウントとは違い普段意識することは、あまりないと思います。パスワードの変更もバックグラウンドで自動的に行われます。
コンピューターアカウントのパスワードの変更要求はクライアント(ドメインメンバ)からドメインコントローラに対して、30日に1回おこなわれます。クライアントが起動していない場合やドメインコントローラと通信できない場合はパスワード変更はおこなれません。通信できない状態で30日以上経過した場合は、通信できるようになった時点でパスワードの変更がおこなわれます。従って長期間サーバーを停止した場合やドメインコントローラと接続できない場合でも、コンピューターアカウントのパスワード不一致が問題になることはありません。クライアントとドメインコントローラーが持つパスワードが一致しているからです。
よく問題になるのはサーバーをリストアしたときです。下記のようなエラーが発生することがあります。いわゆるセキュアチャネルが破損した状態です。
このワークステーションとプライマリドメインの信頼関係に失敗しました
次のようなシナリオを考えてみましょう。
- 6/20: パスワード定期変更によりパスワードが AAAA に変更された
- 7/20: パスワード定期変更によりパスワードが BBBB に変更された
- 7/25: 障害が発生したため7/10に取得したバックアップにリストアした
7/10の時点にリストアするとドメインメンバのパスワードは AAAA に戻るため、ドメインコントローラが持っている BBBB と食い違いが生じてしまいます。これが「信頼関係に失敗しました」という状態です。
注意すべきポイントとしては30日以上前のバックアップからリストアするとこの事象は100%発生しますが、タイミングによっては前日のバックアップからリストアした場合でもこの事象が発生し得るということです。
ドメインの離脱と再参加をすることで復旧させることができます。バックアップからリストアをする場合やリストア手順書を用意する場合は、コンピューターアカウントの不一致が起こることを見越しておくべきでしょう。
補足1
パスワード変更要求はクライアントからドメインコントローラに対しておこなわれます。クライアントがドメインコントローラと通信できない状態ではパスワード変更はおこなわれません。従って半年間NWに接続していないクライアントがあったとしても、パスワードの変更はおこなわれず、ドメインコントローラが持つパスワードとの不一致も起こりません。ドメインコントローラと通信できるようになった時点でパスワードの更新がおこなわれます。
※コンピューターアカウントのパスワードの有効期限はクライアント側で管理されており、AD側でパスワードの期限は切れることはありません。
補足2
クライアント側では現在のパスワードと1つ前のパスワードの2世代を保存しています。
※AD側では現行のパスワードのみ保存しているため、パスワード変更以前にリストアすると「信頼関係に失敗しました」の状態となります。
- 現行 HKLM\SECURITY\Policy\Secrets\$MACHINE.ACC\CurVal
- 1つ前 HKLM\SECURITY\Policy\Secrets\$MACHINE.ACC\OldVal
なお SECURITY にはデフォルトだと SYSTEM にのみアクセスが付与されているため、管理者権限を持つユーザーで参照するにはAdministrators の「読み取り」にチェックをつける必要があります。
補足3
コンピューターアカウントのパスワードの有効期限を確認する方法については下記のエントリをご参照ください。
※参考: コンピューターアカウントのパスワードの有効期限を確認する
補足4
コンピューターアカウントのパスワードは nltest コマンドを使って手動で更新することもできます。
※参考: コンピューターアカウントのパスワードを手動で更新する
補足5
コンピューターアカウントの定期変更を無効にすることもできます。
※参考: コンピュータアカウントのパスワード定期変更を無効にする
<参考>
コメント