Active Directory Recycle Binで救えなかったオブジェクトを救出する

 
前回の続きでもあるのですが、
Active Directory Recycle Binの紹介で
「Recycled Objectになったオブジェクトは、かつてのTombstoneと同じではないので復元できない」
と書きました。
 
しかし、実際に試してみると、Recycled ObjectでもTombstoneの復元の時と同じく
Authoritative Restoreを使えば復元ができました。 
 
次のような手順で試してみました。
 
1.ユーザーの削除
2.Active Directoryデータベースのバックアップ
3.Deleted ObjectをRecycled Objectにする
4.ディレクトリサービス復元モードで再起動
5.1.のバックアップデータを復元
6.Authoritative Restoreの実行
 
 
3.の ところは通常だと180日待つのですが、
次のコマンドレットを実行することで、Deleted ObjectをRecycled Objectにすることができます。
 

PS C:>Get-ADObject -Filter {sAMAccountName -eq "saito"} -IncludeDeletedObjects | Remove-ADObject
 
このコマンドレットは、「ごみ箱を空にする 」コマンドというイメージでしょうね。
 
ここから本題です。
4.と5.を実行し、6.を実行しようとすると、
ちょっと変わったRestoreを実行しなければならないことがわかります。
 

C:>ntdsutil
ntdsutil : Activate Instance NTDS
ntdsutil : Authoritative Restore

authoritative restore : Toggle recycled objects flag

authoritative restore : Restore object cn=斉藤 和夫OADEL:51c7f6a9-(中略)44bb,ou=Lab,dc=example,dc=com

 
Authoritative restoreには「Toggle recycled objects flag」コマンドが新設されていて、
ヘルプを見ると、これを実行するとRecycled Objectが復元できるようになる、とあります。
 
 
そのため、Authoritative Restoreを実行する前にToggle recycled objects flagを実行しておくと
Authoritative Restoreが成功し、オブジェクトがDeleted Objectとして復元されます。
 
 
ただし、Deleted Objectに登録されているオブジェクトの名前は、
オブジェクトを削除する前の名前からは変わってしまっているため、その名前が
なんという名前だったか、覚えておく必要があります。
 

Authoritative Restore: Resotre Object "cn=斉藤 和夫OADEL:51c7f6a9-(中略)44bb,ou=Lab,dc=example,dc=com"
                                                                 (削除される前の名前から変わっている)
→ 成功

Authoritative Restore: Restore Object "cn=斉藤 和夫,cn=Deleted Object,dc=example,dc=com"
→ これは失敗します

Authoritative Restore: Restore Subtree "cn=Deleted Object,dc=example,dc=com"
→ (できたらうれしいんだけど、、) 失敗

そう考えると、Recycled Objectになってから復元するのって、あまり現実的ではないような気がしますね。
(ドメインコントローラーをスタンドアロンにしておいて、一度復元を行えば、Deleted Objectが復元できますから、
そこからDNを復元する方法はあるのでしょうが…)
 
 
ちなみに、ヘルプには「リンクされている値が失われる可能性があるため、この設定は推奨されません」とあります。
しかし、Authoritative Restoreを実行すると、ユーザーの後方リンク(memberOf属性、つまりユーザーの所属するグループ) 
をまとめたLDF形式のファイルが自動的に生成されるので(NTDSUTILを実行したときのカレントディレクトリに生成されます)、
もし、このヘルプのとおり、リンクされている値が消えたとしても、LDFファイルをもとに復元はできます。
 
 
ところで….
Toggle recycled objects flagを実行しないで、Authoritative Restoreを実行してみたら、どうなるのか?
試してみたら、
Recycled Object → Deleted Objectの復元は失敗するのですが、
Recycled Object → 削除する前のオブジェクトの復元は成功しました。
 
といことなので、Toggle recycled objects flagはRecycled Object → Deleted Objectの復元を
行うときに実行するフラグ(コマンド)ということになります。
 
そのほか、(どうでもよいことだけど)わかっていることを書いておくと、
 
■Recycled Objectを削除する前のオブジェクトに復元する場合 
通常のAuthoritative Restore : バージョン+150000
Toggle recycled objects flag実行後のAuthoritative Restore : バージョン+200000
 
■Recycled ObjectをDeleted Objectに復元する場合 
通常のAuthoritative Restore : バージョン+100000
Toggle recycled objects flag実行後のAuthoritative Restore : バージョン+100000

(つまり同じ) 

 
 
というのがありました。
どうでもよいかな…