イベントID5136からオブジェクトの属性を復元

 
私は家でPCを操作するときは、いつも動画サイトの音楽PVを
ミュージックサーバー(20世紀的な言葉ではジュークボックス)代わりにしてます。
この間、曲を聴きながら「がんばれ、Broken Heart It’s my life~」と口ずさんでいたら、
近くにいた人に「それ、いつの曲?」と突っ込まれました。
振り返って、自分のブックマークを見てみたら、20世紀の曲がぎっしり詰まっているのを見てびっくりしました。
(↑Windowsネットワーク的に言えば、未だにLan ManagerとTrumpetをこよなく愛すってところでしょうか?)
 
 
間違ってActive Directoryのオブジェクトを削除したときの復元手段について、ブログの中で何度か投稿してきましたが、
今回はバックアップからの復元もできない、Active Directory Recycle Binも使えない、
という状況での復元です。
 
間違って削除してしまったときに、バックアップもRecycle Binも使えないということになれば、
SysinternalsのAdRestoreを使って復元するしか方法がありません。
しかし、AdRestoreはオブジェクトの復元はできても、ほとんどの属性が削除されています。
 
なんとか、属性の復元はできないかな、と考えていたら、
イベントログを参照するという方法を思いつきました。
 
 
Windows Server 2008のディレクトリサービスアクセスの監査機能から、イベントID5136~5139が新設され、
変更したオブジェクトの値がイベントビューアに記録されることになっていますね。
さらに、Windows Server 2008 R2からGPOからディレクトリサービスアクセスの監査のサブカテゴリを設定できるようになりましたね。
 
 
横道にそれてしまいました..
イベントIDの5136~5139を使えば、
ひとつのActive Directoryオブジェクトの中でどのような変更が過去にあったか、追跡することができます。
これを使えば、過去にどのような値を設定したか、参照することができるので、
ログからActive Directoryオブジェクトに設定した値を復元することができます。
つまり、間違ってActive Directoryオブジェクトを削除したときの緊急的な復元手段として利用することができますね。
ちなみに、こんな感じで見えます。
 
 
ただし、このログを、あの膨大なイベントログから探し出すのは簡単ではありません。
そこで、過去にも登場したイベントビューアのXPathクエリを活用しましょう。
(イベントビューアのXPathクエリについては「イベントビューアのクエリをカスタマイズする(1)」を参考にしてください)
 
*System[(EventID=5136)] and EventData [Data[@Name=’objectDN’] = ‘cn=kunii,ou=Lab,dc=example,dc=com‘]
 
こうすれば、イベントビューアから特定のユーザーに関わるイベントだけを取り出す事ができると思います。
(赤字部分はオブジェクトの名前に合わせて書き換えてください)
 
 
変更履歴を追いかけるのに、イベントビューアのUIからではなく、
テキストファイルで参照したい(さらには、特定の文字列だけを抽出したい)という人は
wevutilコマンドで、必要なイベントをXML形式で出力するという方法があります。
例えば、kuniiユーザーの属性変更履歴を出力したい、というときは次のようなコマンドを実行します。
 

C:>wevtutil qe security /q:"*System[(EventID=5136)] and EventData [Data[@Name=’objectDN’] = ‘cn=kunii,ou=Lab,dc=example,dc=com’]"
qeでアクセスするイベントログの種類(securityはセキュリティログ)、/qの後にXPathクエリをそれぞれ指定します。
 
お好きな方法でお試しあれ!