Microsoft 365 Break Glass Hesaplarını Azure Otomasyonuyla Koruyun


Cam kırma hesapları felaket kurtarma modelinizin hayati bir parçasıdır. Her şey başarısız olduğunda kuruluşunuza geri dönüş yolunuzun olmasını sağlamak için bunlar uygulanmalıdır. Sorunlardan biri, oluşturulduklarında iyi düşünülmüş olsalar da, bir süre sonra Koşullu Erişim politikaları gibi ek kontroller uygulanırken dikkate alınmayabilmeleridir. Bu gönderi bu sorunu ele almayı ve düzeltmeyi amaçlamaktadır.

Cam hesapları kırmanın amacı

Cam kırma veya acil durum erişim hesapları, yalnızca diğer tüm yönetim erişimleri kilitlendiğinde kullanılmak üzere tasarlanmış yüksek ayrıcalıklı (genel yönetici) hesaplardır. Bunlar, birincil yönetim hesaplarınıza erişimi kaybettiğiniz ve kiracının kilitlendiği en kötü senaryoya etkili bir çözümdür.

Cam kırma hesapları, kiracınızda mevcut olan diğer güvenlik kontrollerine uymamalıdır. Kilitlemenin nedeni genellikle bu politikalar olduğundan, Güvenlik Varsayılanları veya Koşullu Erişim uygulanmadan kullanılmak üzere tasarlanmıştır. Bu nedenle, Güvenlik Varsayılanlarını kullanmaktan kaçınmanız ve yalnızca çığır açan hesaplarınız için kullanıcı dışlamalarıyla Koşullu Erişim politikalarını uygulamanız önerilir (ve zorunludur).

Neden kırılma camı hesaplarının korunması gerekiyor?

Microsoft 365 kiracınızın doğal yaşam döngüsü boyunca ilkeler, denetimler ve kullanıcı yapılandırmaları değişen faktörlere bağlı olarak değişir; bazı örnekler şunları içerebilir:

  • Yeni entegre yazılım çözümlerinin benimsenmesi.
  • Mevcut güvenlik kontrollerinin iyileştirilmesi.
  • BT personelinin işe alınması ve işten çıkarılması.

Bu değişikliklerden bazıları, mevcut hesaplarınızın kullanılabilirliğini doğrudan veya dolaylı olarak etkileyerek, onları eskisi kadar kullanışlı olmaktan çıkarabilir. Bu, cam kırma konfigürasyonunuzu uygun şekilde belgelemenizin, onu yalnızca ihtiyacı olanların kullanımına sunmanın ve aynı zamanda konfigürasyonunu sık sık doğrulamanızın önemli olduğu anlamına gelir.

Microsoft Graph PowerShell ile Koşullu Erişim kırılma durumlarını çözme

Acil durum hesaplarınızda her zaman oturum açabilmenizi sağlamak için, bunların ortamınızdaki herhangi bir Koşullu Erişim politikasının dışında tutulması önemlidir. Bazıları hesabı etkilemese bile, hesabı tüm politikaların dışında tutmak, herhangi bir politikanın kapsamının, daha ilerideki kırılma hesabı için ilave bir düşünce gerektirmeden değişmesi durumunda, iyi bir uygulamadır.

Microsoft Graph PowerShell'i ve bazı basit komut dosyası yazma mantığını kullanarak, Microsoft Entra'da şu anda etkin olan Koşullu Erişim politikaları hakkında bilgi toplayabilir ve Break-glass hesaplarımızın hariç tutulduğundan emin olmak için her birinde döngü oluşturabiliriz. Daha sonra sonuçları seçtiğimiz bir hedefe e-postayla gönderebiliriz.

Aşağıdaki örnek, temsilci erişimi senaryosunda tam da bunu yapacaktır. Microsoft Graph ile izin türleri hakkında daha fazla bilgi edinmek için bkz. Microsoft Graph PowerShell İçin İzinleri Bulma.

Connect-MgGraph -Scope Policy.ReadWrite.ConditionalAccess, Policy.Read.All, User.Read.All, Mail.Send

#Define variables#
$breakglass = "address"
$to = "address"
$from = "address" #In a delegate scenario, this must be the account as your current session

#Get breack glass user Id
$userid = (Get-MgUser -userid $breakglass).id
$policies = Get-MgBetaIdentityConditionalAccessPolicy -Filter "State eq 'Enabled'"

#Generate empty arrays
$Report = [System.Collections.Generic.List[Object]]::new()
$log = @()

#Loop through policies, update and build report
Foreach ($policy in $policies){
    If ($userid -in $policy.Conditions.Users.ExcludeUsers) {
        $bgline = "Already excluded"
        $log += "No action required for policy: $($policy.DisplayName)`n"
        $action = "[No action Required]"
    } else {
        $policy.Conditions.Users.ExcludeUsers += $userid
        try {
            update-MgBetaIdentityConditionalAccessPolicy -ConditionalAccessPolicyId $policy.Id -Conditions $policy.Conditions -erroraction stop
            $bgline = "Break glass account added" 
            $log += "Break glass account exlcluded for policy: $($policy.DisplayName) `n"
            $action = "[Remediated]"  
        }
        Catch {$log += "Unable add breakglass account to policy: $($policy.DisplayName)" + $_ + "`r`n"}
            $action = "[Action Required]" 
    }
    $item = [PSCustomObject][ordered]@{
            "Policy Name" = $policy.DisplayName
            "Last modified" = $policy.ModifiedDateTime
            "Break Glass" = $bgline
        }
    $report.Add($item)
}

#Message body
$report = $report | ConvertTo-Html
$Report = $report -replace '<table>', '<table border="1">'

#Message attachment
$encodedBytes = [System.Text.Encoding]::UTF8.GetBytes($log)
$MailAttachment = [System.Convert]::ToBase64String($encodedBytes)

#Send message
$body = @{
	message = @{
		subject = "$action Break glass policy review"
		body = @{
			contentType = "HTML"
			content = "$report Please see the attached for further information"
		}
		toRecipients = @(
			@{
				emailAddress = @{
					address = "$to"
				}
			}
		)
        attachments = @(
			@{
				"@odata.type" = "#microsoft.graph.fileAttachment"
				name = "log.txt"
				contentType = "text/plain"
				contentBytes = $MailAttachment
			}
    )
	}
	saveToSentItems = "false"
}
Send-MgUserMail -UserId $from -BodyParameter $body

Komut dosyasının çıktısı aşağıdaki gibi görünecektir:

Azure Otomasyonu ile belirli bir zamanlamaya göre otomatikleştirme

Yukarıdaki betiği otomatikleştirerek, herhangi bir fiziksel eyleme ihtiyaç duymadan tanımlanmış bir programa göre çalışmasını garanti edebilirsiniz. Ayrıca, mevcut Koşullu Erişim politikalarınızda veya herhangi bir yeni politikanızda önemli bir değişiklik yapılması durumunda, bu değişikliğin, kırılma hesabı hariç tutularak otomatik olarak düzeltilmesini sağlayacaktır. Bu adım için birkaç gereksinim vardır; ihtiyacınız olacak:

  • Bir Azure aboneliği.
  • Sistem tarafından atanan Yönetilen Kimliğe sahip bir Azure Otomasyon Hesabı.
  • Yönetilen Kimliğinize Graph API izinlerini atamak için.
  • Kimlik doğrulama için Yönetilen Kimlik'i kullanacak şekilde komut dosyasını değiştirin.

Bir Azure Otomasyon hesabı oluşturmak ve ilgili izni ilişkili Yönetilen Kimliğe atamak için yukarıdaki bağlantıları kullanın; Policy.ReadWrite.ConditionalAccess, Policy.Read.All.

Kimlik doğrulama için Yönetilen Kimlik kullanacak şekilde komut dosyasını değiştirin

Komut dosyamızı Otomasyon Hesabından güvenli bir şekilde bir zamanlamaya göre çalıştırmak için, komut dosyasını, kimlik doğrulama için yönetilen kimliği kullanacak şekilde biraz değiştirmeliyiz. Bunu yapmak için yukarıdaki betiğin ilk satırını aşağıdaki şekilde değiştirin:

Connect-MgGraph -Identity

Bunu üretime yayınlamadan önce Runbook Test bölmesini kullanarak test etmeyi seviyorum. Runbook'unuzu düzenlerken Test bölmesi'ni seçin.

Buradan betiğinizin beklendiği gibi çalıştığını doğrulamak için çalıştırabilirsiniz.

İlgili makaleler