Active Directory Recycle Bin
ここで扱うのは、Windows のローカルファイル用 Recycle Bin ではなく、Active Directory Recycle Bin (AD Recycle Bin) である。
AD Recycle Bin は、誤って削除した AD object (Active Directory オブジェクト) を、objectSid や多くの属性、group membership (グループ所属) を保ったまま復元するための forest-wide optional feature (フォレスト単位のオプション機能) である。Microsoft の説明では、有効化後に削除された object の link-valued attributes (リンク値属性) と non-link-valued attributes (非リンク値属性) が保持され、削除直前に近い logical state (論理状態) へ戻せる。
一般的な AD 環境でも、削除済み account の SID (Security Identifier) が file server、application object、certificate template、OU などの ACL (Access Control List) に残ることがある。重要なのは、AD のアクセス制御は名前ではなく SID を見ている、という点である。
削除前:legacy_admin -> SID S-1-5-21-...-1111
削除後:resource ACL -> SID S-1-5-21-...-1111 が残存
復元後:legacy_admin -> 同じ SID S-1-5-21-...-1111この場合、復元後の legacy_admin は ACL 上の既存 ACE (Access Control Entry) と再び結びつく。同じ sAMAccountName の user を新規作成しても新しい SID が発行されるため、古い ACL とは一致しない。
復元される主な情報
Section titled “復元される主な情報”User object (ユーザーオブジェクト) を例にすると、復元時に重要になる情報は次の通り。
objectGUIDobjectSidsAMAccountName- 多くの user attributes (ユーザー属性)
- 元の parent OU を示す
lastKnownParent - 元の RDN (Relative Distinguished Name) を示す
msDS-LastKnownRDN - group membership などの linked attributes (リンク属性)
- その SID を参照している ACL との関係
権限監査やインシデント対応では、特に objectSid が重要になる。削除済み object を復元すると、元の SID がそのまま security principal (セキュリティ主体) として戻るため、resource ACL や OU に残った孤立 SID の権限が再び有効になる。
削除後の状態遷移
Section titled “削除後の状態遷移”AD では object を削除しても、即座に database から物理削除されるわけではない。AD Recycle Bin が有効な環境では、おおまかに次の状態をたどる。
通常 object ↓ 削除Deleted Object ↓ msDS-deletedObjectLifetime 経過Recycled Object ↓ tombstoneLifetime 経過後の garbage collection物理的に除去Deleted Object の状態
Section titled “Deleted Object の状態”Deleted Object は、AD Recycle Bin で復元できる段階の削除済み object である。
代表的には次の属性で判断できる。
isDeleted : TRUEisRecycled : FALSE または未設定lastKnownParent : 元の OU / containermsDS-LastKnownRDN : 元の名前この状態なら、Restore-ADObject によって比較的整合性の高い復元ができる。削除済み object は通常の LDAP search や Get-ADUser -Filter * には出ず、-IncludeDeletedObjects を指定して検索する必要がある。
Recycled Object の状態
Section titled “Recycled Object の状態”msDS-deletedObjectLifetime を過ぎると、復元に必要な属性の多くが取り除かれ、Recycled Object になる。
isDeleted : TRUEisRecycled : TRUEこの段階では、AD Recycle Bin による通常の完全復元はできない。Microsoft の ADAC (Active Directory Administrative Center) 説明では、削除済み object は msDS-deletedObjectLifetime に従って保持され、既定では forest の tombstoneLifetime と同じ値になる。Windows Server 2003 SP1 以降に作成された forest の一般的な既定値は 180 日だが、実環境では必ず属性値を確認する。
Tombstone との違い
Section titled “Tombstone との違い”Tombstone (廃棄標識) は、主に「この object は削除された」という事実を他の DC (Domain Controller) へ replication (レプリケーション) するための削除マーカーである。
AD Recycle Bin がない古い復旧モデルでは、削除済み object は多くの属性を失った tombstone になり、復元しても削除前の状態に戻すには不足が多かった。AD Recycle Bin 有効時は、まず復元可能な Deleted Object として保持し、保持期間を過ぎると属性を削った Recycled Object になる。
| 状態 | 主目的 | 通常の復元 |
|---|---|---|
| Deleted Object | 削除前に近い状態で保持する | 可能 |
| Recycled Object | 削除情報を保持し、replication と garbage collection へ進める | 原則不可 |
| Tombstone | 削除事実を replication する | 属性不足で困難 |
資料やツールによっては Recycled Object を tombstone 相当として扱うことがあり、用語が混在する。実務では isDeleted、isRecycled、lastKnownParent、msDS-LastKnownRDN の有無を見て、復元できる段階かどうかを判断する。
有効化の特徴
Section titled “有効化の特徴”AD Recycle Bin は既定では有効ではない。主な特徴は次の通り。
- Forest 単位で有効化する。
- Forest functional level (フォレスト機能レベル) は Windows Server 2008 R2 以上が必要。
- 一度有効化すると無効化できない。
- 有効化後に削除された object だけが AD Recycle Bin の復元対象になる。
- 有効化前に削除された object は AD Recycle Bin では戻せない。
- Deleted Object の属性保持により、各 DC の NTDS.DIT 使用量が増える。
有効化は可用性を高めるが、復元可能な高権限 object や古い group membership も一定期間残す。機能そのものを避けるより、復元権限と孤立 SID の監査を設計に入れるべきである。
有効か確認する
Section titled “有効か確認する”Recycle Bin Feature が有効かどうかは、Get-ADOptionalFeature で確認できる。
Get-ADOptionalFeature ` -Filter 'Name -like "Recycle Bin Feature"' | Format-List Name,EnabledScopesより直接見るなら次の通り。
Get-ADOptionalFeature ` -Identity "Recycle Bin Feature" | Select-Object Name,EnabledScopesEnabledScopes に forest の Configuration Partition などが表示されれば有効である。空なら未有効と判断できる。
削除済みオブジェクトを確認する
Section titled “削除済みオブジェクトを確認する”全体を確認する例。
Get-ADObject ` -IncludeDeletedObjects ` -Filter 'isDeleted -eq $true' ` -Properties lastKnownParent, msDS-LastKnownRDN, isDeleted, isRecycled, objectSid | Select-Object Name, ObjectGUID, objectSid, lastKnownParent, msDS-LastKnownRDN, isRecycled特定 OU から削除された object を調べる例。
Get-ADObject ` -IncludeDeletedObjects ` -LDAPFilter '(&(isDeleted=TRUE)(lastKnownParent=OU=Operations,DC=example,DC=com))' ` -Properties lastKnownParent, msDS-LastKnownRDN, isRecycled, objectSid名前や sAMAccountName が分かる場合は、復元候補を絞る。
Get-ADObject ` -IncludeDeletedObjects ` -Filter 'sAMAccountName -eq "legacy_admin"' ` -Properties sAMAccountName, objectSid, lastKnownParent, msDS-LastKnownRDN, isRecycled復元対象として期待できるのは、基本的に isDeleted=True かつ isRecycled が False または未設定の object である。
削除済み object は、Get-ADObject -IncludeDeletedObjects で取得して Restore-ADObject へ渡すのが確実である。
Get-ADObject ` -Identity "938182c3-bf0b-410a-9aaa-45c8e1a02ebf" ` -IncludeDeletedObjects | Restore-ADObject元の名前や場所が使えない場合は、-NewName と -TargetPath を明示する。
Get-ADObject ` -Identity "938182c3-bf0b-410a-9aaa-45c8e1a02ebf" ` -IncludeDeletedObjects | Restore-ADObject ` -NewName "legacy_admin" ` -TargetPath "OU=Operations,DC=example,DC=com"Restore-ADObject では、-NewName を省略すると msDS-LastKnownRDN が使われ、-TargetPath を省略すると lastKnownParent が使われる。
OU など parent object ごと削除されていた場合は、先に parent を復元してから child object を復元する。ADAC の一括復元は best effort であり、複雑な subtree (サブツリー) を常に一度で正しく戻せるとは限らない。
AD Recycle Bin が有効でも、一般ユーザーが自由に削除済み object を列挙・復元できるわけではない。復元には環境や委任設計に応じて、概ね次の権限が関係する。
- Deleted Objects container を列挙する権限。
- 削除済み object を読む権限。
- 復元先 container / OU へ child object を作成する権限。
- Reanimate Tombstones extended right (Reanimate Tombstones 拡張権限)。
- 対象 object や parent OU に対する delegated ACL (委任 ACL)。
実環境でも、復元権限が運用担当者やアプリケーション管理者へ過剰に委任されていると、想定以上の権限復活につながることがある。たとえば OU に GenericAll がある場合、復元先への作成権限、ACL 操作、password reset などと組み合わさり、削除済み account の復元から権限連鎖が成立し得る。
監査・調査時の見方
Section titled “監査・調査時の見方”AD Recycle Bin が絡む調査では、次の兆候が手掛かりになる。
- OU や group が空に見えるが、過去に object が存在した痕跡がある。
- ACL に
Account Unknown(S-1-5-21-...-RID)のような孤立 SID が残っている。 - File share、GPO、certificate template、OU などの ACE に、名前解決できない SID がある。
- 通常の LDAP 列挙結果と ACL の状態が噛み合わない。
Get-ADUser -Filter *では見えないが、Get-ADObject -IncludeDeletedObjectsで候補が出る。
調査の流れは次のように整理できる。
1. ACL 上の不明 SID を見つける2. Deleted Objects から同じ SID の object を探す3. isRecycled が True でないことを確認する4. lastKnownParent / msDS-LastKnownRDN を確認する5. Restore-ADObject で復元する6. 復元後に ACL や group membership が再び有効になるか確認するAD の本質は「名前ではなく SID で access control する」ことである。AD Recycle Bin は、この前提を実験的に確認しやすい機能でもある。
防御・運用上の注意
Section titled “防御・運用上の注意”AD Recycle Bin 自体は、防御と可用性のための機能である。ただし、復元時に古い権限や group membership まで戻る可能性があるため、削除と復元を単なるアカウント操作として扱わない。
特に注意すべき点は次の通り。
- 削除済み user の SID が ACL に残っていないか。
- Certificate template に孤立 SID が残っていないか。
- 復元で group membership が戻り、過去の privileged group (特権グループ) 所属が復活しないか。
- 過去の delegated rights (委任権限) が復元後に再び有効にならないか。
- 高権限 account が復元可能な Deleted Object として残っていないか。
- Deleted Objects container の列挙・復元権限が過剰に委任されていないか。
アカウント削除時には、object を消すだけでなく、次の観点で棚卸しする。
その SID がどの ACL / group / certificate template / delegation に残っているかこのような権限復活は特殊な挙動ではなく、AD の仕様を利用した自然な結果である。AD Recycle Bin は「SID と関連情報を保ったまま、削除済み AD object を復元できる機能」と覚えるとよい。
- Enable and use Active Directory Recycle Bin in Windows Server
- Advanced AD DS Management using Active Directory Administrative Center
- Restore-ADObject
- The Active Directory database garbage collection process and calculation of allowed intervals
- Abandoned objects block replication for Global Catalog naming contexts

