AD Recycle Bin – Windows Server 2008 R2 Active Directory の新機能

Windows Server 2008 R2 から Active Directory にもゴミ箱の機能が追加されます。ここではその新機能についてご説明致します。

1) これまでの機能について
これまでの Windows では、Active Directory にて削除してしまったオブジェクトを復元する方法は 2 通りありましたが、いずれの方法にも以下のような問題がありました。

  1. バックアップから非 Authoritative Restore でオブジェクトを復元する
    バックアップを復元するにはドメイン コントローラを 「ディレクトリ サービス復元モード」 で起動する必要がある為、その間作業をするドメイン コントローラが利用できなくなる。
  2. Deleted Objects コンテナから復元する
    Deleted Objects コンテナへと移動されたオブジェクトは属性の多くが削除されている為、リストア後各オブジェクトの削除された設定(所属グループ等) を手動で再設定する必要がある。

Windows Server 2008 R2 から追加される Active Directory のゴミ箱の新機能を用いる事により、これまでのように DC の機能を停止する事なく、さらにオブジェクトの全属性を復元する事が可能となりました。

2) 設定方法
Active Directory のゴミ箱を利用するにはまず Windows Server 2008 R2 のフォレスト機能レベルが必要になります。つまり、ドメイン コントローラがすべて Windows Server 2008 R2 である必要があります。また、Active Directory のゴミ箱の機能は既定では無効になっている為、Powershell の Enable-ADOptionalFeature コマンドで設定を有効にします。詳細な手順は以下の通りです。

  1. Powershell.exe を起動し、以下のコマンドで Active Directory の機能をロードします。
    import-module ActiveDirectory

  2. 以下のコマンドを実行し、Active Directory ゴミ箱の機能を有効します。設定を有効にすると、無効にできない旨を示す警告が表示されるので Y を入力します。
    Enable-ADOptionalFeature ‘Recycle Bin Feature’ –Scope ForestorConfigurationSet –Target <AD 名>

    実行例:
    00enableFeature 

3) 動作説明
これまでの Active Directory では以下の流れでオブジェクトは削除されました。

  1. Active Directory からオブジェクトを削除すると、該当オブジェクトは DeletedObjects コンテナに移動されます。この時、オブジェクトの大半の属性が削除されます。
  2. tombstoneLifetime を過ぎるとオブジェクトが DeletedObjects からも削除され、データベースから完全に削除されます。

Active Directory のゴミ箱を有効にした場合、オブジェクトを削除してから属性が削除されるまでに時間 (msds-DeletedObjectLifetime) があり、この間はオブジェクトを完全に復元する事ができます。つまり、以下のように上記流れに 1 ステップ追加されます。

  1. Active Directory からオブジェクトを削除すると、該当オブジェクトは DeletedObjects コンテナに移動されますが、Active Directory のゴミ箱の機能が有効な場合には、このタイミングでは属性が削除される事はありません。
  2. msDS-deletedObjectLifetime 属性に保持される期間 (既定では tombstoneLifetime と同じ) が過ぎた後、属性が削除されます。この時、オブジェクトは DeletedObjects に既に存在する為、オブジェクトはそのままの状態で属性のみが削除されます。
  3. tombstoneLifetime を過ぎるとオブジェクトが DeletedObjects からも削除され、データベースから完全に削除される。

4) オブジェクト復旧手順
オブジェクトを復旧するには Powershell の Get-ADObject 並びに Restore-ADObject コマンドを利用します。以下の手順では例としてユーザー User1 を復元します。

  1. Powershell.exe を起動し、以下のコマンドで Active Directory に機能をロードします。
    import-module ActiveDirectory

  2. Get-ADObject を利用し、削除したオブジェクトを特定します。
    a) まずワイルドカード (*) を利用し、該当する可能性のあるオブジェクトを列挙します。以下のコマンドでは名前に user の文字列を含むオブジェクトを Deleted Objects コンテナから検索した結果、2 つ該当するオブジェクトが見つかっています。

    実行例: 01searchAll2
    b) Get-ADObject で該当オブジェクトのみを特定します。ここでは、上で表示された User1 のみを復元するため、そのオブジェクト名を Filter します。 (削除されたオブジェクト名は <User名>\0ADEL:<GUID> の形式でリネームされています。)

    実行例:
    02UserFound2

  3. Restore-ADObject を利用して、2. で特定したオブジェクトを復元します。以下のコマンドでは 2. で特定したオブジェクトを | でそのまま Restore-ADObject に渡します。

    実行例:
    03Restore2 

この時、ツリー形式のオブジェクトを復元する場合には必ず親ディレクトリから復元してください。(OU をすべて復元する場合には親 OU を復元してから、中のオブジェクトを復元します。)

英文にはなりますが、以下の technet に詳細が記載されています。

Active Directory Recycle Bin in Windows Server 2008 R2 Step-by-Step Guide [R2]
https://technet.microsoft.com/en-us/library/dd392261.aspx

5) 注意点について Active Directory のゴミ箱の機能はスキーマ拡張と同様、後戻りができない機能になります。一度ゴミ箱の機能を有効にすると、既定の無効に戻す事はできません。