こんにちは。Windows プラットフォーム サポート担当の進藤です。
今回は、ユーザーが最後にログオンを行った日時が格納される lastLogon 属性と lastLogonTimestamp 属性についてご紹介します。
これらの属性はリアルタイムに値が更新されないなど、値を確認するときに注意するべき点がいくつかありますので、属性値が更新/複製される動作などについてご説明します。
なお、ドメインの機能レベルが Windows Serve 2008 以降の場合は、msDS-LastSuccessfulInteractiveLogonTime という属性が追加されており、この属性の値を確認することで最後にログオンを行った日時を確認することができます。興味のある方は下記のブログで紹介しておりますのでこちらもご覧ください。
最後に対話ログオンを行った日時を知りたい
http://blogs.technet.com/b/jpntsblog/archive/2014/06/23/3241082.aspx
lastLogon 属性と LastLogonTimestamp 属性の更新と複製の動き
lastLogon 属性と LastLogonTimestamp 属性は、共にアカウントが最後にログオンした日時を保持するためのものですが、lastLogon 属性は認証要求を受け付けたドメイン コントローラーのみで日時が格納され、他のドメイン コントローラーへは複製されません。
一方、LastLogonTimestamp 属性は、認証を受け付けたドメイン コントローラーですぐに更新処理は行わず、ランダムに更新処理が行われます (最大で 14 日間更新が行われないことがあります)。そのため、必ずしも正確な直近のログオン時間を示すものではありませんが、この情報は他のドメイン コントローラーにも複製されます。
lastLogonTimeStamp 属性が更新される際の流れ 1. ドメイン コントローラー (DC) は、あるアカウントの Kerberos 認証、および NTLM 認証が発生した際、そのログオンが完了した時刻を一時的にメモリに記憶します。 2. DC は、AD データベースの msDS-LogonTimeSyncInterval 属性に設定されている値 (既定では 14 日) から 5 × random (0 - 5 日) の値を引き、9 - 14 日までのランダムな日数を算出します。 3. 続いて DC は、現状の lastLogonTimeStamp の値から 1 の時刻までに経過した時間と、2 で算出された時間を比較して、前者が後者より大きければ lastLogonTimeStamp の値を更新します。 4. その他の属性などと同様に他のドメイン コントローラーへ複製をおこないます。 例えば、あるアカウントで、ログオンが完了したとします。 |
これらの属性値がリアルタイムに更新されない、もしくは他のドメイン コントローラーへ複製されないという動作は、同時に多数のアカウントでログオンが行われた場合に、ドメイン コントローラー間の複製処理によりドメイン コントローラーが高負荷となることを防ぐことを目的としています。
なお、各属性が更新されるタイミングは、lastLogon 属性は Kerberos 認証が行われたタイミングで更新され、 NTLM 認証の場合には更新されませんが、LastLogontimestamp 属性は認証方式に関わらず更新されます。
対話型ログオン以外にも、ネットワーク リソースへのアクセスやグループポリシーの適用のタイミングで Kerberos 認証が試みられるため、それらのタイミングでも lastLogon 属性やLastLogontimestamp 属性の値が更新されます。
※ lastLogonTimestamp 属性はドメイン機能レベル Windows Server 2003 から更新されるようになりました。機能レベルが Windows 2000 以前ですと、値は更新されません。
「コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。」