Pratik Grafik: Entra ID Hesaplarını Toplu Silme


Büyük Miktarda Azure AD Hesabını Bulma ve Kaldırma

Azure AD hesaplarının nasıl oluşturulacağı gibi konuları ele aldıktan sonra, yaşam döngülerinin diğer ucundaki Azure AD hesaplarının toplu olarak nasıl silineceği sorusunu ele almalıyız. Tek bir hesabı kaldırmak, Microsoft 365 yönetim merkezi, Microsoft Entra yönetim merkezi veya Microsoft Graph PowerShell SDK'sındaki Remove-MgUser cmdlet'i aracılığıyla çok kolay olduğu için tartışmaya değmez.

Toplu silme daha ilginçtir. Microsoft 365 yönetim merkezi ve Microsoft Entra yönetim merkezi, tek bir işlemde birden fazla hesabı kaldırma özelliğini destekler (Şekil 1) ve bu yaklaşım, nispeten az sayıda hesabın kaldırılmasında işe yarar. Ancak kaldırılacak hesapların sayısı arttıkça programatik yaklaşım daha etkili olur.

Hesapları kaldırmak için AzureAD veya MSOL modüllerinden bir cmdlet çağırmadan önce hesap adlarının CSV dosyasından kaldırılması için nasıl okunacağını ciddi bir şekilde belgeleyen birçok makale bulacaksınız; her ikisinin de kullanımdan kaldırılması nedeniyle. Bir CSV dosyasındaki adların ve diğer hesap bilgilerinin okunması, işlenecek bir dizi hesap oluşturur. Burada tartıştığım nokta, silinecek hesapları bulmak için daha ilginç yöntemlerin mevcut olduğudur.

Akademik Yıl Sonunda Öğrencilerin Çıkarılması

Örneğin birçok eğitim kurumunun akademik yılın sonunda içinde bulunduğu durumu ele alalım. Pek çok öğrenci hesabının süresi kurslarını tamamladığında sona erer ve gelen öğrencilere verilen ödevler için lisansların serbest bırakılması amacıyla bunların kaldırılması gerekir. İlk konu ilgili hesapların nasıl tanımlanacağıdır.

Başka bir makalede, PowerShell ile Azure AD hesaplarını bulmak için filtrelerin nasıl kullanılacağını ele alacağım. Yöntemler arasında, hesapları bulmaya yönelik bilgileri depolamak için on beş Exchange özel uzantı özelliğinin kullanılması yer alıyor. Öğrenciler için aşağıdakileri depolamak amacıyla özel uzantı özelliklerini kullanabilirsiniz:

  • Kurs numarası.
  • Kayıt numarası.
  • Kayıt bitiş tarihi.

Bu örnekte, akademik yılın sonundaki öğrenci hesaplarını bulmak için kayıt son kullanma tarihini saklayan özel bir uzantı özelliğini kullanacağız.

Exchange Online Get-ExoMailbox cmdlet'i, özel özniteliklerde tutulan verileri kontrol ederken daha esnektir. Bu örnek, süresi dolan öğrenci hesaplarının bir dizisinin nasıl oluşturulacağını gösterir. Bu durumda CustomAttribute1, 1 Haziran 2023'ü temsil edecek 20230601 gibi değerleri saklar. Bilgileri diğer tarih biçimlerinde saklayabilirsiniz, ancak bu, yapmamız gereken kontrol türü için uygundur.

[string]$EndAcademicYear = (Get-Date -format yyyyMMdd)
[array]$StudentAccounts = Get-ExoMailbox -Filter "CustomAttribute1 -le '$EndAcademicYear'" -Properties CustomAttribute1
If (!($StudentAccounts)) { Write-Host "No expired student accounts found!" ; break }

Exchange Online'ın, kullanıcı hesaplarıyla etkileşim kurmak için Microsoft Graph PowerShell SDK cmdlet'leriyle kullanılabilecek kullanıcı asıl adı ve hesap tanımlayıcısı (ExternalDirectoryObjectId özelliğinde) gibi bilgileri döndürdüğünü unutmayın.

Geçici Çalışanların Çıkarılması

Toplu hesap silme işleminin gerekli olabileceği diğer bir örnek, sözleşmeli çalışma süreleri sona erdikten sonra geçici çalışanların hesaplarının kaldırılmasıdır. Azure AD, istihdam türü de dahil olmak üzere istihdam bilgilerini tutmak için bazı kullanışlı hesap özellikleri içerir.

Ne yazık ki, Get-MgUser cmdlet'i EmployeeType özelliğine göre filtrelemeyi desteklemiyor, bu nedenle kullanıcı hesabı bilgilerini almak ve olup olmadığını belirlemek için bunu işlemek için böyle bir şey yapıyoruz. Geçici çalışanlar bir yıllık çalışma sürelerini aşarlar.

[datetime]$ExpirationDate = Get-Date
[array]$Employees = Get-MgUser -filter "userType eq 'Member' and EmployeeId ge ' '" -Property Id, displayname, userprincipalname, employeeid, employeehiredate, employeetype
If ($Employees) {
   $Employees = $Employees | Where-Object {$_.EmployeeType -eq 'Temporary’} 
} Else {
   Write-Host "No employees found" ; break
}
$AccountsforDeletion = [System.Collections.Generic.List[Object]]::new() 
ForEach ($Employee in $Employees) {
    [datetime]$EmployeeExpirationDate = (Get-Date $Employee.EmployeeHireDate).AddDays(365)
    If ($EmployeeExpirationDate -lt $ExpirationDate) {
       $ReportLine = [PSCustomObject]@{
         EmployeeUserId = $Employee.Id
         EmployeeUPN    = $Employee.UserPrincipalName
         EmployeeId     = $Employee.EmployeeId
         EmployeeName   = $Employee.displayName
         EmployeeDate   = $Employee.EmployeeHireDate
         EmployeeType   = $Employee.EmployeeType
         ExpiryDate     = $EmployeeExpirationDate }  
    $AccountsForDeletion.Add($ReportLine)      
    }
}

Fikri anladın. Azure AD hesaplarını toplu olarak silebilmemiz için, kaldırılacak hesap kümesini bilmemiz ve bu bilgileri PowerShell'in işleyebileceği bir biçimde (bir liste veya dizi) sağlamamız gerekir. Herhangi bir silme işlemi gerçekleşmeden önce, devam etmenin uygun olup olmadığından emin olmak için fazladan bir çiftin hesap grubunu incelemesi her zaman iyi bir fikirdir.

Azure AD Hesaplarını Toplu Silme

Bir Azure AD hesabı kümesinin silinmesi, küme içinde döngü yapılması ve her hesabı kaldırmak için Remove-MgUser öğesinin çağrılması meselesidir. Tek ön koşul, kümenin Azure AD'nin her hesabı tanımlamasına izin verecek bir özellik içermesi gerektiğidir. Bu, hesabın kullanıcı asıl adı veya nesne tanımlayıcısı olabilir. Geçici çalışanlar söz konusu olduğunda setteki her öğe şu şekilde görünür:

EmployeeUserId : 6fd89e40-665a-4efa-9691-da07849cae91
EmployeeUPN    : Rene.Artois@office365itpros.com
EmployeeId     : 111888
EmployeeName   : Rene Artois
EmployeeDate   : 08/03/2022 21:19:10
EmployeeType   : Temporary
ExpiryDate     : 08/03/2023 21:19:10

Hesapları silme kodu çok basittir:

ForEach ($Account in $AccountsForDeletion) {
   Write-Host ("Deleting account {0}" -f $Account.EmployeeName
   Remove-MgUser -UserId $Account.EmployeeUserId }

Remove-MgUser cmdlet'inin bir hesabı silmeden önce onay gerektirmediğine dikkat edin. Silinen hesaplar Azure AD hesabı geri dönüşüm kutusuna gider ve 30 gün boyunca orada kalır. Bu süre zarfında Restore-MgDirectoryDeletedItem cmdlet'ini çalıştırarak bir hesabı geri yükleyebilirsiniz (daha fazla bilgi için bu makaleye bakın). Silinen hesapları 30 günlük saklama süreleri bitmeden Azure AD'den kalıcı olarak kaldırmak istiyorsanız bunu Remove-MgDirectoryDeletedItem cmdlet'ini çalıştırarak yapabilirsiniz.

Verilerin Saklanması

Office 365 E3 lisanslarına sahip hesaplar, silinen hesaplara ait posta kutusu ve OneDrive İş içeriğini koruyabilir. En kolay yöntem, içeriğin kısa bir süre (örneğin altı ay) saklanmasını sağlamak amacıyla tüm hesaplara genel bir saklama politikası uygulamaktır. Ayrı bir saklama politikası, yöneticiler veya denetimden sorumlu olanlar gibi daha acil saklama gereksinimleri olan hesapları kapsayabilir. Microsoft Purview tarafından kullanılan saklama ilkeleri, en uzun saklama süresinin geçerli olduğu anlamına gelir; dolayısıyla, birden fazla saklama ilkesi kapsamındaki bir hesaba ait veriler, en uzun saklama süresi sona erene kadar kalacaktır. Bu nedenle, kısa bir saklama süresine sahip bir saklama politikasını arka durdurucu olarak uygulamak oldukça güvenlidir.

Bazı uzmanlar, kendi hesabını silmeden önce her posta kutusuna davaya yönelik bilgi muhafazası uygulanmasını savunuyor. Davaya (veya yasal) yönelik bilgi muhafazası, posta kutusundaki saklama politikasıyla aynı etkiye sahiptir ancak OneDrive İş hesaplarında tutulan diğer kişisel verileri dikkate almaz. Genel olarak, saklama politikasının daha iyi bir seçenek olduğunu düşünüyorum.

Dizin Doğruluğu Önemlidir

Azure AD hesaplarını toplu olarak silmek kolaydır. Operasyonun anahtarı hedef hesapları doğru bir şekilde tanımlayabilmektir. Azure AD'nin filtreler çalışmadan önce doğru bilgileri tutması gerekir. Azure AD verileri hatalıysa toplu hesap silme işlemlerini yürütmek için CSV dosyası kullanmaya geri dönebilirsiniz. Elbette CSV dosyasının içeriğinin doğru olduğunu varsaymak için hiçbir neden yok, ancak en azından değilse, dosyayı oluşturan kişiyi suçlayabilirsiniz.

Active Directory için Siber Güvenlik Risk Yönetimi

Bu Siber Güvenlik Risk Yönetimi Çözümleri aracılığıyla AD saldırılarını nasıl önleyeceğinizi ve bu saldırılardan nasıl kurtulacağınızı keşfedin.

İlgili makaleler