Заметки о Windows и других программных продуктах Microsoft...

Корзина Active Directory

Корзина Active Directory

Продолжим тему восстановления объектов в Active Directory, начатую в предыдущей статье. Сегодня я расскажу об инструменте, который призван облегчить процесс восстановления данных и сделать его более эффективным. Речь идет о Active Directory Recycle Bin, или корзине для удаленных объектов Active Directory.

Принцип работы корзины

Для начала вспомним, как выглядит жизненный цикл объекта AD при удалении. Объект помечается как удаленный (атрибут isDeleted объекта устанавливается в true) и из него удаляются лишние атрибуты. Затем он переименовывается и перемещается в контейнер Deleted Objects, в котором хранится в течение срока жизни удаленного объекта. По истечении этого срока он удаляется окончательно.

жизненный цикл объекта при выключенной корзине AD

 

При включении корзины Active Directory картина меняется. Теперь при удалении объекта Active Directory система сохраняет все атрибуты объекта, после чего объект помечается как логически удаленный (это новое состояние, появившееся в Windows Server 2008 R2). Его имя изменяется, атрибуту isDeleted назначается значение true  и объект перемещается все в тот же контейнер Deleted Objects. В этом состоянии объект остается на протяжении срока жизни удаленного объекта. Пока объект находится в состоянии удаленный, его можно восстановить без потери атрибутов или членства в группах.

Когда срок жизни удаленного объекта заканчивается, он переводится в состояние утилизированный. В этом состоянии его атрибуту isRecycled присваивается значение true, связанные значения атрибутов  (группы и др.), наряду с большинством обычных атрибутов удаляются, так же, как при отсутствие корзины. Объект, переведенный в это состояние, невозможно восстановить обычными способами. По истечении срока жизни утилизированного объекта он физически удаляется сборщиком мусора.

жизненный цикл объекта при включенной корзине AD

 

Условия для включения корзины

Корзина Active Directory впервые появилась в Windows Server 2008 R2. По умолчанию она неактивна и для ее включения необходимо соблюдение следующих условий:

1) Уровень функционирования леса должен быть не ниже Windows Server 2008 R2;
2) В лесу не должно быть контролеров домена под управлением Windows Server 2003;
3) Если лес изначально создавался на базе Windows Server 2003, необходимо осуществить обновление схемы.

Для обновления схемы надо выполнить adprep /forestprep на контроллере домена с ролью мастера схемы, выполнить adprep /domainprep /gpprep на контроллере домена с ролью мастера инфраструктуры. Если есть контроллер домена только для чтения (RODC), запустить на нем adprep /rodcprep.

Пара важных моментов, которые учесть до включения. Первое — после активизации корзины AD все ранее удаленные объекты становятся утилизированными и не смогут быть восстановлены. Второе —  включение корзины AD  процесс односторонний, т.е. если ее активировать, то отключить уже невозможно.

Включение корзины

Графического интерфейса для работы с Active Directory Recycle Bin в Server 2008 R2 нет. Майкрософт предлагает два способа работы с корзиной — утилита LDP или модуль Active Directory для PowerShell. На мой взгляд LDP имеет не очень дружелюбный 🙂 интерфейс, поэтому воспользуемся вторым способом.

Посмотреть состояние корзины и проверить, включена ли она, можно с помощью команды:

Get-ADOptionalFeature ′Recycle Bin Feature′

Как видите, у корзины нет активных областей (EnabledScopes), значит она не активна.

просмотр свойств корзины AD

 

Включим корзину следующей командой:

Enable-ADOptionalFeature ′Recycle Bin Feature′ -Scope ForestOrConfigurationSet
-Target ′contoso.com′

И еще раз посмотрим свойства корзины. Теперь у нее есть включенные области, значит корзина активна.

включение корзины AD

 

Для восстановления из корзины используется командлет Get-ADObject с параметром
-IncludeDeletedObjects, а параметр -Filter позволяет задавать условия для поиска. Следующей командой мы укажем поиск всех объектов, удаленных из контейнера OU=Managers:

Get-ADObject -Filter ′isDeleted -eq $true -and lastKnownParent
-eq ″OU=Managers,DC=contoso,DC=com″′ -IncludeDeletedObjects

Найденный в результате объект пользователя восстановим командлетом Restore-ADObject, указав в параметре -Identity его ObjectGUID. При включенной корзине все атрибуты пользователя восстановятся вместе с учетной записью.

восстановление объекта из корзины AD

 

Имейте в виду, что кроме PowerShell и LDP для работы с корзиной можно использовать и другие инструменты, например AdRestore от Sysinternals или графическую утилиту Adrestore.NET. В любом случае объект будет восстановлен без потерь.

Время хранения удаленных объектов

Объект, помеченный как логически удаленный, храниться в течение срока жизни удаленного объекта. Срок этот определяется в атрибуте msDS-DeletedObjectLifetime, находящемся в CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=«Domain Name». Затем объект помечается как утилизированный и храниться дальше, в течение срока жизни утилизированного объекта, который определяется уже известным вам атрибутом tombstoneLifetime.

Пока все логично. А вот дальше…

По умолчанию msDS-DeletedObjectLifetime не определен, а время жизни удаленного объекта совпадает с временем жизни утилизированного объекта, которое определяется аттрибутом tombstoneLifetime и по умолчанию составляет 180 дней. Если же для атрибута msDS-deletedObjectLife задать какое либо значение, то этот атрибут более не будет принимать значение атрибута tombstoneLifetime.

параметр msDS-DeletedObjectLifetime

 

Таким образом, время жизни удаленного объекта можно изменить двумя способами — задать атрибуту msDS-DeletedObjectLifetime собственное значение, или изменить значение атрибута tombstoneLifetime. Сделать это можно как через ADSIEdit, так и  с помощью PowerShell. Для примера зададим значение  msDS-DeletedObjectLifetime  в домене contoso.com равным 365 дням:

Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,
CN=Services,CN=Configuration,DC=contoso,DC=com” –Partition
″CN=Configuration,DC=contoso,DC=com″ –Replace:@{″msDS-DeletedObjectLifetime″ = 365}

И такое-же значение дадим для tombstoneLifetime:

Set-ADObject -Identity ″CN=Directory Service,CN=Windows NT,
CN=Services,CN=Configuration,DC=contoso,DC=com″ –Partition
“CN=Configuration,DC=contoso,DC=com” –Replace:@{″tombstoneLifetime″ = 365}

изменение времени хранения удаленных объектов

 

Добавлю, что Microsoft не рекомендует без крайней необходимости изменять дефолтные значения атрибутов msDS-deletedObjectLifetime и tombstoneLifetime, поскольку это может привести к возникновению проблем.

Корзина AD в Windows Server 2012

В недавно вышедшем Windows Server 2012 корзина наконец обрела лицо, т.е. собственный графический интерфейс. Теперь включить ее можно из административного центра Active Directory.

включение корзины AD в Windows Server 2012

 

После включения контейнер Deleted Objects отображается как обычная папка. По нему можно перемещаться, просматривать удаленные объекты, производить поиск с помощью фильтров. Найденый объект восстанавливается в два клика мышки. Очень удобно.

корзина AD в Windows Server 2012

 

Корзина Active Directory штука очень полезная, но ее наличие не отменяет необходимость резервного копирования. В некоторых случаях,  удаленные объекты можно восстановить только из архива, с помощью авторитативного восстановления. Подробнее об этом я расскажу в следующей статье.

 
 
Комментарии
Валерий

Спасибо! Очень помогла статья!

Спасибо! Грамотно и кратко.

Enable-ADOptional Feature ′Recycle Bin Feature′ -Scope ForestOrConfigurationSet
-Target ′contoso.com′

Enable-ADOptionalFeature- слитно

Enable-ADOptionalFeature- слитно

Поправил. Спасибо за внимательность 🙂

Вот читаю Ваш сайт и не могу понять. GPO можно забекапить на диск и потом на новом сервере восстановить (по вашей же инструкции), а как быть с остальным? Пользовалей всех можно забекапить? Они например в разных отделах, подотделах фирмы. Там лес длинющий. Как все это восстановить? Не руками же все опять заводить?

Например в Linux используется openldap и там без заморочек можно все слить как единый лес. Подскажите пожалуйста.

Обычно бэкапится контроллер домена. Конкретно для восстановления AD требуется бэкап состояния системы (Systemstate). Сам процесс я описывал вот здесь.