Sistem/DevOps•6 dk okuma

Active Directory Geri Dönüşüm Kutusu (Recycle Bin) ile Yanlışlıkla Silinen OU ve Kullanıcıları Kurtarma

Dikkatsiz bir sistem yöneticisinin 200 personelin bulunduğu Organizational Unit'i (OU) yanlışlıkla silmesi felaketine karşı Active Directory Recycle Bin aktivasyonu ve PowerShell ile saniyeler içinde geri getirme.

AE

Ahmet Ertekin

04 August 2023

Active Directory Geri Dönüşüm Kutusu (Recycle Bin) ile Yanlışlıkla Silinen OU ve Kullanıcıları Kurtarma

Active Directory Geri Dönüşüm Kutusu (Recycle Bin) ile Yanlışlıkla Silinen OU ve Kullanıcıları Kurtarma

Bir sistem yöneticisinin yaşayabileceği en soğuk terleme anlarından biri, klavyedeki bir hata veya yanlış tıklama sonucu içinde onlarca yöneticinin, yüzlerce kullanıcının ve kritik güvenlik gruplarının bulunduğu bir Organizational Unit (OU)'in silinmesidir. Eski Windows Server sürümlerinde bu felaketten dönmek için sunucuyu DSRM (Directory Services Restore Mode) ile yeniden başlatıp yetkili geri yükleme (Authoritative Restore) yapmak gerekirdi. Active Directory Recycle Bin (Geri Dönüşüm Kutusu) bu süreci sunucuyu kapatmadan 30 saniyeye indiren mucizevi bir özelliktir.

1. Active Directory Recycle Bin'i Aktif Etme

Çok Kritik Kural: Active Directory Recycle Bin varsayılan olarak kapalıdır! Silme felaketi yaşanmadan önce mutlaka aktif edilmiş olmalıdır. Bir kez açıldıktan sonra geri kapatılamaz.

# Active Directory Recycle Bin özelliğini orman genelinde aktif etme
Enable-ADOptionalFeature -Identity 'Recycle Bin Feature' `
    -Scope ForestOrConfigurationSet `
    -Target 'holding.local'

2. Silinen Nesneler Nasıl Saklanır? (Tombstone vs Deleted State)

Recycle Bin aktifken bir kullanıcı veya grup silindiğinde:

  • Nesne veritabanından hemen silinmez; Deleted Objects adlı gizli bir kapsayıcıya taşınır.
  • En önemlisi: Kullanıcının tüm grup üyelikleri, SID geçmişi, parolası ve öznitelikleri (Attributes) %100 korunur.
  • Varsayılan saklama süresi 180 gündür (Deleted Object Lifetime).

3. Silinen Bir OU ve İçindeki Kullanıcıları PowerShell ile Kurtarma

Örnek Senaryo: Muhasebe OU'su ve altındaki 50 kullanıcı yanlışlıkla silindi.

# 1. Önce silinen üst klasörü (OU) geri getirin:
Get-ADObject -Filter 'isDeleted -eq $true -and name -like "Muhasebe*"' -IncludeDeletedObjects | Restore-ADObject

# 2. Ardından o OU'nun içinde yaşamış olan tüm kullanıcıları tek hamlede kurtarın:
Get-ADObject -Filter 'isDeleted -eq $true -and lastKnownParent -match "OU=Muhasebe,DC=holding,DC=local"' -IncludeDeletedObjects | Restore-ADObject

Yukarıdaki komut çalıştığı anda tüm muhasebe personeli masaüstlerinde hiçbir şey olmamış gibi çalışmaya devam eder; grup üyelikleri ve yetkileri anında geri gelir!

4. Kazaları Önceden Önleme: "Accidental Deletion" Koruması

Geri Dönüşüm Kutusu harikadır ancak en iyi savunma silinmeyi hiç yaşatmamaktır. Tüm kurumsal OU'larda kazara silinmeye karşı koruma bayrağı açık olmalıdır:

# Etki alanındaki tüm OU'ları kazara silinmeye karşı koruma altına alan toplu komut:
Get-ADOrganizationalUnit -Filter * | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true

Karşılaşılan Kritik Hatalar ve Çözüm İpuçları

  • Üst OU Geri Getirilmeden Kullanıcıların Kurtarılmaya Çalışılması: Eğer silinen bir kullanıcının bağlı olduğu üst OU henüz silinmiş durumdaysa, kullanıcıyı kurtarmaya çalıştığınızda hata alırsınız (Parent container does not exist). Hiyerarşiye dikkat edilmeli; daima önce ana OU, sonra alt klasörler, en son kullanıcılar kurtarılmalıdır.

Mühendis Notu

Görevinize başladığınız ilk gün yapacağınız ilk işlerden biri: PowerShell'i açıp Get-ADOptionalFeature -Filter 'name -like "*Recycle*"' | fl EnabledScopes komutunu çalıştırmak olsun. Eğer Recycle Bin aktif değilse, derhal aktif edin. Gelecekteki bir gün kendi hayatınızı veya bir çalışma arkadaşınızın kariyerini kurtaracaksınız.