Início > Active Directory, Windows Server, Windows Server 2008/R2, Windows Server 2012/R2 > Active Directory Recycle Bin – Entendendo e usando este recurso

Active Directory Recycle Bin – Entendendo e usando este recurso

agosto 31, 2014

Olá pessoALL,

Hoje eu vou falar sobre um assunto que não é algo tão novo assim, mas cujo o conceito em segundo plano muitas vezes não é de conhecimento do profissional que opera um serviço de diretório. A lixeira do Active Directory.

A lixeira do Active Directory é um recurso introduzido a partir do Windows Server 2008 R2 que torna possível a recuperação de um ou mais objetos removidos no AD DS, seja intencional ou acidentalmente, sem a necessidade de se executar um backup autoritativo em DSRM.

A título de exemplo, no Windows Server 2003 e Windows Server 2008, caso fosse necessário recuperar um objeto deletado sem a necessidade de se utilizar uma recuperação autoritativa, você poderia utilizar o utilitário LDP para realizar o que nós chamados de Tombstone Reanimation, no entanto, este tipo de  ação seria interessante apenas em situações onde somente o SID do objeto é suficiente para a recuperação.

Este processo é composto do uso do utilitário LDP e da alteração de atributos do objeto deletado para que o mesmo seja restaurado em seu local de origem, no entanto, este processo não restaura todos os atributos de um objeto deletado como dito anteriormente.

Para conhecimento, atributos como o de tokenGroups onde estam localizados todos os grupos ao qual o objeto estava associado não são restaurados e isto pode ser um problema caso o objeto seja uma conta de usuário e se o mesmo precisar de acesso aos recursos que ele acessava antes da remoção acidental de sua conta urgente, pois seria necessário repopular todos os atributos da conta.

Antes de falarmos do funcionamento e do uso da Active Directory Reclycle Bin é importante entendermos como de fato ocorre uma deleção de objeto no Active Directory e os mecanismos envolvidos.

Em linhas gerais, quando um objeto é deletado no Active Directory ele sofre algumas modificações como:

  • o atributo RDN (Relative Distinguished Name) é alterado para OU=IT_Global/0ADEL::<objectGUID>.
  • o atributo lastKnownParent do objeto é alterado para por exemplo OU=IT_Global/0ADEL::<objectGUID>,CN=Deleted Objects,DC=nosafeforwork,DC=local.
  • o atributo isDeleted is marcado como True.
  • quase todos os atributos são limpos no objetivo.
  • ele é movido de sua localização atual para o container CN=Deleted Objects,DC=NoSafeForWork,DC=Local.

OBS: <objectGUID> no RDN representa o atributo do próprio objeto, enquanto no atributo lastKnownParent ele representa o atributo do objeto pai do objeto deletado.

adds-active-directory-recycle-bin-0001

É importante dizer que o container CN=Deleted Objects,DC=NoSafeForWork,DC=Local não está visível através das ferramentas comuns utilizadas em nosso dia a dia de trabalho com o AD DS. Para ser possível visualizar este container você precisa utilizar a ferramenta LDP e seguir os passos mostrados neste KB Viewing deleted objects in Active Directory ou utilizar o Active Directory Explorer da SysInternals.

Inicialmente, podemos imaginar que estes objetos deletado poderiam ficar neste local por tempo indeterminado, mas isto não ocorre desta forma devido a um processo chamado GarbageCollection e um atributo chamado TombstoneLifetime.

O que é o processo GarbageCollection?

 

GarbageCollection é o processo executado sobre cada controlador de domínio a cada 12 horas por padrão para realizar duas ações:

  • verificar e remover objetos que tenham seu tempo de vida (TombstoneLifetime) expirado.
  • desfragmentar de forma online a base de dados do serviço de diretório para reordenar as linhas da tabela de forma a não deixar linhas em branco entre os dados.

É possível alterar a frequência com que o GarbageCollection é executado sobre um controlador de domínio alterando o atributo garbageCollPeriod no seguinte container:

  • CN=Directory Service,CN=Windows NT, CN=Services,CN=Configuration,DC=NoSafeForWork,DC=Local

Somente altere a frequência do GarbageCollection se um engenheiro da Microsoft fizer esta orientação.

O que é TombstoneLifetime?

 

TombstoneLifetime ou TSL é o periodo de tempo cujo um objeto é mantido no container CN=Deleted Objects,DC=NoSafeForWork,DC=Local antes de ser removido pelo processo GarbageCollection. Por padrão, a partir da versão Windows Server 2003 SP1, este periodo foi definido em 180 dias e em versões anteriores este era de 60 dias.

O atributo TombstoneLifetime pode ser localizado através do ADSIEDIT na partição de Configuration nas propriedades do container abaixo:

  • CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=NoSafeForWork,DC=Local

Outra forma de se listar o valor deste atributo é através do PowerShell usando o comando a seguir:

  • Get-ADObject -identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=nosafeforwork,DC=local” -Properties TombstoneLifeTime

adds-active-directory-recycle-bin-0002

Na imagem anterior nós podemos visualizar que o periodo de TombstoneLifetime está definido como 180 dias como já informado anteriormente e para conhecimento, em alguns casos você pode encontrar este mesmo atributo sem nenhum valor.

Mas o que isto poderia influenciar? Caso o valor do atributo TombstoneLifetime esteja como “is null” o comportamento do sistema operacional será o mesmo de seus antecessores de 60 dias, pois isto é hardcoded no sistema operacional.

Outro atributo importante de se verificar é o msDS-DeletedObjectLifetime. Este atributo está localizado no mesmo container do atributo TombstoneLifetime e por padrão está com o seu valor definido como “is null“. Este valor faz com que o tempo de vida de um objeto deletado seja herdado do atributo tombstoneLifetime, ou seja, de 180 dias.

O atributo msDS-DeletedObjectLifetime é usado pelo GarbageCollection para calcular quando um objeto deletado deve ser removido ou não fisicamente do banco de dados do Active Directory.

Em resumo, quando um objeto é deletado e precisa ser restaurado em versões anteriormentes ao Windows Server 2008 R2 ou em versões iguais ou posteriores, cujo o recurso de Active Directory Recycle Bin não esteja habilitado, você tem duas opções:

  • realizar uma recuperação via Tombstone Reanimation e lembre-se, este processo só será válido caso apenas o SID do objeto seja suficiente para a recuperação e fique ciente de que todos os outros atributos terão que ser recolocados manualmente.
  • realizar uma recuperação autoritativa do AD DS através do utilitário NTDSUTIL, colocando o controlador de domínio em modo AD DS Offline ou então reiniciando em DSRM para ter uma recuperação completa do objeto, tal como ele estava antes de ser deletado.

Com a chegada do Windows Server 2008 R2 e o recurso de Active Directory Recycle Bin, este tipo de ação foi alterada significativamente reduzindo o tempo para a recuperação de objetos deletados para os administratores de AD DS.

Com o Active Directory Recycle Bin é possível recuperar objetos deletados com todos os seus atributos para o mesmo estado em que estes se encontravam no momento de sua deleção sem a necessidade de se realizar uma recuperação autoritativa.

Mas como a Active Directory Recycle Bin funciona?

 

Para começar a entender o funcionamento da Active Directory Recycle Bin, precisamos entender como os atributos isDeleted, TombstoneLifetime, msDS-DeletedObjectLifetime e o atributo isRecycled , os dois últimos introduzidos a partir do Windows Server 2008 R2, trabalham.

Já discutimos anteriormente o funcionamento de três destes atributos, mas agora estamos vendo um novo atributo chamado isRecycled fazendo parte deste contexto. Por que?

Já sabemos que o tempo de vida de um objeto deletado no Active Directory é determinado pelo valor atribuído ao atributo msDS-DeletedObjectLifetime que herda o valor do atributo TombstoneLifetime (180 dias). Sabemos também que ao deletarmos um objeto, alguns de seus atributos são alterados (isDeleted = True), a maioria deles são limpos e que o objeto é movido para um container oculto chamado Deleted Objects.

Em resumo, este é o ciclo de um objeto deletado no Active Directory quando a Active Directory Recycle Bin não está habilitada.

adds-active-directory-recycle-bin-0003

Agora, quando a Active Directory Recycle Bin é habilitada, um novo atributo passa a ser utilizado para controlar o tempo de vida de um objeto que foi deletado. O isRecycled.

Este atributo é utilizado da seguinte maneira:

  1. Um objeto é deletado e passa pelas transformações de atributos (isDeleted = True,…), mas não tem seus atributos limpos, todos os atributos são preservados e ocorre a movimentação para container Deleted Objects.
  2. O atributo isRecycled é marcado como False para o objeto deletado.
  3. O tempo de vida do objeto deletado começa a ser contado pelo atributo msDS-DeletedObjectLifetime (180 dias).
  4. Após expirar os 180 dias, o atributo isRecycled é marcado como True.
  5. A maioria dos atributos são limpos no objeto e o mesmo passa a ser idêntico a um objeto quando deletado sem a Active Directory Recycle Bin estar habilitada.
  6. O objeto continua no container Deleted Object até o tempo de vida de reciclagem expirar (+180 dias de acordo com o atributo TombstoneLifetime) para que os outros controladores de domínio sejam informados de que este objeto não existe mais e que será limpo fisicamente pelo GarbageCollection e a partir de agora, ele não pode mais ser recuperado através da Active Directory Recycle Bin e/ou Tombstone Reanimation.

De forma simplificada, o gráfico abaixo mostra quais são os ciclos de um objeto quando ele é deletado e a Active Directory Recycle Bin está habilitada em um domínio:

adds-active-directory-recycle-bin-0004

Ao habilitar a Active Directory Recycle Bin, o periodo em que um objeto fica retido no Active Directory é de 360 dias, sendo que os primeiros 180 dias são conhecidos como Deleted Objetc Lifetime onde o objeto pode ser recuperado para o mesmo estado de quando foi deletado e os próximo 180 dias são conhecidos como Recycled Object Lifetime onde o objeto passa pelas mesmas transformações no processo de deleção de um objeto sem a Active Directory Recycle Bin ativa.

Em resumo, administratores que possuem a Active Directory Recycle Bin habilitada possuem 6 meses para recuperar um objeto deletado e este tipo de recurso irá demandar de algumas modificações e considerações a serem estudadas.

Ao habilitar a Active Directory Recycle Bin, de acordo com o documento oficial da Microsoft, sua massa de dados do Active Directory terá um crescimento de 10 a 15% em seu tamanho, devido a retenção de objetos e todos os seus atributos por 180 a partir do momento da deleção. Este tipo de detalhe merece atenção no momento de dimensionar o local de armazenamento e estimar o crescimento de seu Active Directory.

Antes de habilitar a Active Directory Recycle Bin, é importante saber o seguinte: esta é uma alteração sem volta, ou seja, após habilitar este recurso, não será possível desabilitá-lo, então, faça um estudo previamente e habilite este recurso de forma segura.

Outro detalhe fundamental é que o nível funcional de floresta deve ser Windows Server 2008 R2, ou seja, para ter este recurso habilitado em seu domínio você precisa atender no mínimo aos requisitos abaixo:

  • ter o esquema do Active Directory estendido para no mínimo Windows Server 2008 R2.
  • ter apenas controladores de domínio iguais ou posteriores a versão Windows Server 2008 R2.
  • elevar o nível funcional de domínio para no mínimo Windows Server 2008 R2.
  • elevar o nível funcional de floresta para no mínimo Windows Server 2008 R2.

Após habilitar a Active Directory Recycle Bin, não será mais possível realizar o rollback de nível funcional de floresta e/ou domínio como é possível ser feito em alguns casos.

Ainda falando sobre habilitar ou não habilitar a Active Directory Recycle Bin, também é importante saber que, após habilitá-la, não será mais possível o uso de uma recuperação autoritativa, pois o processo de habilitar a Active Directory Recycle Bin desativa as flags que permitem o uso de uma recuperação autoritativa para recuperar um objeto marcardo como isRecycled.

É possível reverter esta restrição no processo recuperação autoritativa através do utilitário ntdsutil, após executar o comando authoritative restore digitando o comando Toggle recycled objects flags, mas a própria Microsoft recomenda fortemente que isto não seja feito e que a recuperação seja feita dentro do periodo de 180, pois este processo pode resultar na perda de atributos, ou seja, faça por sua conta e risco.

Lembre-se, o fato de não ser possível por padrão a recuperação de objetos através de uma recuperação autoritativa não significa que você deva deixar de fazer o seu backup diário dos controladores de domínio, muito pelo contrário, este backup é a garantia de que no caso de um desastre você possa recuperar sua infraestrutura para o estado mais recente no menor tempo possível.

Agora que já entendemos o processo de deleção, o tempo de retenção (TombstoneLifetime), a remoção física de objetos, como este processo funcionar quando a Active Directory Recycle Bin atua quando está habilitada, os detalhes necessários a serem levados em consideração no momento da ativação e decidiu ativá-la, podemos realizar esta ação.

Como ativar a Active Directory Recycle Bin?

 

No Windows Server 2008 R2, este processo precisava ser feito através do Active Directory Modules fo Windows PowerShell fazendo uso do cmdlet chamado Enable-ADOptionalFeature.

A sintáxe para habilitar a Active Directory Recycle Bin é a seguinte:

Enable-ADOptionalFeature ‘Recycle Bin Feature’ -Scope ForestOrConfigurationSet -Target NoSafeForWork.local

Após executar este comando, uma mensagem informativa irá lhe avisar que esta ação é irreversível e solicitará a você a precisar Y para prosseguir.

adds-active-directory-recycle-bin-0005

O comando anterior é muito utilizado na versão Windows Server 2008 R2 (também pode ser utilizado no Windows Server 2012/R2), pois esta é a única forma de habilitar este recurso. No entanto, a partir do Windows Server 2012 foi inserido outra forma de habilitá-la através da nova interface gráfica de gerenciamento do Active Directory. O Active Directory Administrative Center.

Após abrir o Active Directory Administrative Center, você precisa selecionar o seu domínio no painel de navegação esquerdo, aguardar que os objetos sejam carregados e ao lado direito, no painel de ações, você encontrará a opção selecionada em azul chamado Enable Recycle Bin….

adds-active-directory-recycle-bin-0006

Clique na opção e você será informado da mesma forma que esta opção não poderá ser desabilitada.

adds-active-directory-recycle-bin-0007

adds-active-directory-recycle-bin-0008

Clique em OK e aguarde o próximo ciclo de replicação ser realizado para que as modicações sejam informadas ao restantes dos controladores de domínio ou force imediatamente através do REPADMIN para que isto seja feito caso não queria esperar.

Neste momento nós já temos a Active Directory Recycle Bin disponível para ser utilizada na recuperação de objetos deletados. A partir de agora, vamos então aprender como verificar, escolher e recuperar objetos deletados dentro do periodo de 180 dias.

Com o propósito de mostrar as ações que podemos realizar, eu irei remover a OU Users abaixo e seu conteúdo (usuários) para demonstrar a verificação, escolha, alguns problemas e a recuperação dos objetos.

adds-active-directory-recycle-bin-0009

Antes de prosseguirmos, é importante fazer um comentário sobre o seguinte detalhe: a partir do Windows Server 2008, o Active Directory ganhou uma opção que pode evitar a remoção acidental de objetos chamada Protect Object From Accidental Deletion que pode ser encontradas na guia Object nas propriedades dos objetos (OU, grupo, usuário, etc.).

Esta opção é automaticamente marcada na criação de uma OU, porém, não é uma opção herdada pelos objetos (grupos, usuários, computadores, etc.) criados dentro desta OU. A opção evita que acidentalmente um administrador faça a remoção de uma OU completamente com todo o seu conteúdo.

Esta é uma opção que pode ou não estar ativada em suas contas de usuário e a desativação desta opção via interface de usuário pode ser um processo dispendioso. Como no exemplo utilizado neste post todas as contas de usuários e OUs estão todas protegidas de uma deleção acidental, deixe me mostrar como seria a forma mais prática de desabilitarmos e também de habilitarmos esta opção.

Neste exemplo nós sabemos qual será a OU e os usuários que serão deletados. Então, vamos ver abaixo como utilizar o PowerShell para realizar esta tarefa apenas nas contas que estão localizadas na OU a ser deletada.

Abra o Active Directory Modules for Windows PowerShell e execute os comandos abaixo para verificarmos e validarmos as alterações e definições atuais, substituindo a localização da OU caso seja diferente:

Listando os usuários e a própria OU onde eles estão para verificar se a opção ProtectedFromAccidentalDeletion está habilitada em uma determinada OU.

Get-ADObject -Filter * -Properties ProtectedFromAccidentalDeletion | where {$_.DistinguishedName -like “*OU=Users,OU=Accounting,OU=Liverpool,OU=Corporate_Structure,DC=nosafeforwork,
DC=local”} | Select-Object Name,ProtectedFromAccidentalDeletion

adds-active-directory-recycle-bin-0010

Alterando a opção ProtectedFromAccidentalDeletion de True (Ativada) para False (Desativada).

Get-ADObject -Filter {(ObjectClass -eq “user”) -OR (ObjectClass -eq “organizationalUnit”)} | where {$_.DistinguishedName -like “*OU=Users,OU=Accounting,OU=Liverpool,
OU=Corporate_Structure,DC=nosafeforwork,DC=local”} | Set-ADObject -ProtectedFromAccidentalDeletion:$False

adds-active-directory-recycle-bin-0011

Listando os usuários e a própria OU onde eles estão para verificar se a opção ProtectedFromAccidentalDeletion foi desabilitada em uma determinada OU e suas contas com sucesso.

Get-ADObject -Filter * -Properties ProtectedFromAccidentalDeletion | where {$_.DistinguishedName -like “*OU=Users,OU=Accounting,OU=Liverpool,OU=Corporate_Structure,
DC=nosafeforwork,DC=local”} | Select-Object Name,ProtectedFromAccidentalDeletion

adds-active-directory-recycle-bin-0012

E o trabalho duro acabou, pelo menos para quem percebeu que deveria se dedicar mais para aprender PowerShell com a sua chegada no passado.

Agora que sabemos como listar e alterar a opção ProtectedFromAccidentalDeletion, deixe me dizer que nós não precisamos fazer este tipo de alteração caso você faça uso do cmdlet Remove-ADObject e do parametro -Recursive para remover objetos filhos, pois este cmdlet irá removê-los mesmo com a opção ProtectedFromAccidentalDeletion definida como True.

Agora vamos começar a brincadeira deletando a OU e todo o seu conteúdo também usando o PowerShell. Execute o comando abaixo para removê-lo e também os objetos filhos (contas de usuários).

Remove-ADObject “OU=Users,OU=Accounting,OU=Liverpool,OU=Corporate_Structure,DC=nosafeforwork,
DC=local” -Recursive -Confirm:$False

adds-active-directory-recycle-bin-0013

E a OU Users se foi com todas as contas de usuários que listamos anteriormente. Vamos ver agora como nós podemos verificar os objetos que foram deletados. Ainda no Active Directory Modules for Windows PowerShell execute o comando abaixo:

Get-ADObject -Filter ‘isDeleted -eq $True -and Name -ne “Deleted Objects”‘ -IncludeDeletedObjects -Properties * | Ft Name,objectClass,LastKnownParent

adds-active-directory-recycle-bin-0014

Get-ADObject -Filter ‘isDeleted -eq $True -and Name -ne “Deleted Objects”‘ -IncludeDeletedObjects -Properties * | Ft msds-lastKnownrdn,LastKnownParent -Wrap -AutoSize

adds-active-directory-recycle-bin-0015

Como podemos ver, todos os nossos usuários e a OU onde eles estavam localizados está com o atributo isDeleted marcado como True. Vamos supor que houvesse a necessidade de se restaurar apenas a conta de usuário Mathew Yates neste momento. Como podemos restaurá-la?

A primeira coisa que você deve levar em consideração no processo de recuperação de um objeto é a sua antiga localização. Lembre-se que a OU Users e seus usuários foram deletados, então, caso o objetivo seja restaurar o objeto em seu local de origem, a primeira ação a ser feita não é restaurar a conta do usuário Mathew Yates, mas a OU Users onde a conta estava localizada antes de ser deletada.

Por padrão, quando você executa a recuperação de um objeto seu local de restauração é o mesmo local de onde ele foi deletado e caso você tente recuperar um objeto sem o seu local de origem, você receberá uma mensagem de erro no final da ação e nada acontecerá. Prosseguindo, vamos recuperar primeiramente a OU Users para em seguida recuperarmos a conta de usuário Mathew Yates executando o comando abaixo:

Get-ADObject -Filter ‘msds-lastKnownrdn -eq “Users” -and LastKnownParent -eq “OU=Accounting,OU=Liverpool,OU=Corporate_Structure,DC=nosafeforwork,DC=local”‘ -IncludeDeletedObjects | Restore-ADObject

adds-active-directory-recycle-bin-0016

Pronto! Acabamos de recuperar a OU Users em seu local de origem e agora nós vamos recuperar o usuário Mathew Yates como desejado usando o comando a seguir:

Get-ADObject -Filter ‘SamAccountName -eq “mathew.yates”‘ -IncludeDeletedObjects | Restore-ADObject

adds-active-directory-recycle-bin-0017

Nesta etapa a conta do usuários Mathew Yates está completamente recuperada em seu local de origem e pode ser utilizada imediatamente pelo usuário. Muito simples, não é mesmo!?

Agora que já sabemos como recuperar objetos deletados da lixeira, abaixo está o comando caso fosse necessário recuperar todas as contas deletadas da OU Users.

Get-ADObject -Filter ‘LastKnownParent -eq “OU=Users,OU=Accounting,OU=Liverpool,OU=Corporate_Structure,DC=nosafeforwork,
DC=local”‘ -IncludeDeletedObjects | Restore-ADObject

Eu não recuperei as contas de usuários ainda deletadas e apenas mencionei o comando anterior, pois existe uma outra forma de recuperarmos objetos a partir do Windows Server 2012.

Foi mostrado aqui que é possível habilitar a Active Directory Recycle Bin através do console Active Directory Adminitrative Center e também é possível usá-lo para recuperar objetos deletados.

Para ter acesso aos objetos deletados e recuperá-los, abra o Active Directory Administrative Center, escolha no painel de navegação direito a navegação tipo Tree View e navegue até NoSafeForWork (Local) > Deleted Objects.

adds-active-directory-recycle-bin-0018

Como podemos ver na imagem anteiror, temos uma forma amigável de acessar os objetos deletados e fazer a sua recuperação por meio das opções no painel de ações direito, inclusive a opção de resutarmos em um local que não seja o de origem usando a opção Restore To….

Selecione quais contas você deseja recuperar, clique em Restore ou em Restore To… no painel de ações e está feito! Muito fácil, não é mesmo!?

Conclusão…

 

Como podemos ver, o processo de recuperação de objetos no Active Directory com o uso da Active Directory Recycle Bin é muito simples, prático de ser executado e pode literalmente ser uma saída para casos onde a recuperação precisa ser feita imediatamente sem a necessidade de se colocar o AD DS em DSRM para uma recuperação autoritativa.

É isto pessoal! Espero que a informação seja bem aproveitada no seu dia a dia e que você tenha entendido um pouco mais de como este recurso introduzido a partir do Windows Server 2008 R2 pode ajudá-lo em seu dia a dia.

Até o próximo post…

Leitura relacionada:

 

qUICKLY Explained: Active Directory Recycle Bin

Appendix A: Additional Active Directory Recycle Bin Tasks

The AD Recycle Bin: Understanding, Implementing, Best Practices, and Troubleshooting

Determine the tombstone lifetime for the forest

Scenario Overview for Restoring Deleted Active Directory Objects

Reanimating Active Directory Tombstone Objects

Revive Deleted AD Objects with Active Directory Recycle Bin

Authoritative Restore

Network administration commands for Microsoft Windows and Active Directory

Step-By-Step: Enabling Active Directory Recycle Bin in Windows Server 2012 R2

Introducing the Active Directory Recycle Bin in Windows Server 2012

Two lines that can save your AD from a crisis

%d blogueiros gostam disto: