Günlük Microsoft Entra Risk Raporu Oluşturmak için Azure Otomasyonu ve PowerShell'i kullanın


Riski Sürekli Olarak İzleyin veya Sürprizlere Hazırlanın

Microsoft Entra ID P2 aboneliklerine dahil edilen Microsoft Entra ID Koruması özellikleri, kimlik tabanlı saldırılarla mücadele etmenin çok güçlü bir yoludur. Kimlik Koruması, yöneticilerin oturum açma işlemleri için gerçek zamanlı olarak oluşturulan risk durumunu (Microsoft tarafından belirlenen şekilde) kullanmasına ve bağlantıların yapılandırılabilir bir risk eşiğini aşması durumunda oturum açmaları otomatik olarak engellemek veya parola sıfırlamalarını zorunlu kılmak için Microsoft Entra tarafından yapılan davranış analizi yoluyla kullanmasına olanak tanır.

Oturum açma işlemlerinin otomatik olarak engellenmesi, doğru lisanslara sahip kiracılar için harikadır ancak herkese yardımcı olmaz. Üst düzey lisanslama SKU'larının ardındaki güvenlik özellikleri geçişine ilişkin konuşmaları bir kenara bırakırsak, premium abonelikleri olmayan kuruluşlar için her şey kaybolmaz. Bazı gelişmiş ayrıntılar ve otomatik iyileştirme özellikleri için premium lisanslama gerekli olsa da, riskli kullanıcılar, oturum açma işlemleri ve risk algılama raporları Entra ID P1 veya Entra ID Free'ye sahip kiracılar tarafından kullanılabilir (Entra ID Free kiracıları risk algılamadan yararlanamaz) raporlar) Microsoft belgelerinde ayrıntılı olarak belirtildiği gibi sınırlı bir kapasiteyle kullanılabilir.

Microsoft Entra'daki risk olayları, özellikle riski izlemekten sorumlu özel bir güvenlik operasyonları ekibinin bulunmadığı küçük ortamlarda, meşgul yöneticiler tarafından sıklıkla gözden kaçırılabilir. Microsoft 365'teki birçok şeyde olduğu gibi, biraz otomasyon bu boşlukların bazılarını kapatmak için uzun bir yol kat edebilir. Bu makalede, bir kiracıdaki risk algılamalarını raporlamak ve raporu yöneticilere günlük olarak e-postayla göndermek için bir Azure Otomasyonu runbook'unun (kod GitHub'da mevcuttur) nasıl oluşturulacağını açıklarım.

Başlarken

İlk gereksinim bir Azure Otomasyon hesabıdır. Azure Otomasyonu, Birleşik Denetim günlüğü olaylarını izleme ve Microsoft Teams'i şablonlara dayalı olarak sağlama gibi tekrarlanan görevleri gerçekleştirme gibi otomatik raporlamayı yönetmenin harika bir yoludur.

İşleri basitleştirmek için komut dosyası, Microsoft Graph SDK'ya bağlanmak için yönetilen bir kimlik kullanır. Komut dosyası yönetilen bir kimlik kullandığından Otomasyon hesabı, komut dosyasının çalışacağı kiracı Entra ID dizini ile ilişkilendirilmelidir.

Daha sonra, otomasyon hesabının hizmet sorumlusunun betiği çalıştırmak için aşağıdaki Grafik izinlerine ihtiyacı vardır:

  • “IdentityRiskyUser.Read.All” - Bu izin, Riskli Kullanıcı verilerini almak için gereklidir.
  • “IdentityRiskEvent.Read.All” - Bu izin, Risk Olayı verilerini almak için gereklidir.
  • “IdentityRiskyServicePrincipal.Read.All” - Bu izin, Riskli Hizmet Sorumlusu verilerini almak için gereklidir.
  • “Mail.Send” - Bu izin, betiğin sonunda raporu e-posta yoluyla göndermek için gereklidir.

Hizmet sorumlusuna gerekli izinlerin atanması, SharePoint Sitelerinin Yaşam Döngüsünü Yönetmek için Power Automate ve Azure Otomasyonunu Kullanma başlıklı makalede açıklanan adımlar kullanılarak Microsoft Graph PowerShell SDK kullanılarak yapılır.

Bu kod, izinlerin şu şekilde nasıl atanacağını gösterir:

  • Bir dizide gerekli izinleri tanımlama.
  • Microsoft Graph uygulamasının hizmet sorumlusu alınıyor.
  • Otomasyon hesabı hizmet sorumlusunun tanımlayıcısı alınıyor.
  • Gerekli izinlerin her biri için Rol Kimliklerini alma.
  • Her rolde döngü oluşturma ve rolü Otomasyon hesabı hizmet sorumlusuna atama

Tek yapmanız gereken otomasyon hesabının adını değiştirmek (benim örneğimde aa-EntraRiskReport').

##List Required Permissions
$Permissions = @(
              "IdentityRiskyUser.Read.All"
              "IdentityRiskEvent.Read.All"
              "IdentityRiskyServicePrincipal.Read.All"
              "Mail.Send"
)
##Get Graph Service Principal
$GraphApp = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
##Get Automation Account Service Principal ID
$MIID = (Get-MgServicePrincipal -Filter "displayName eq 'aa-EntraRiskReport'").id
##Get Graph Role IDs
[array]$Roles = $GraphApp.AppRoles | Where-Object {$Permissions -contains $_.Value}
##Assign each permission
foreach($role in $roles){
    $AppRoleAssignment = @{
        "PrincipalId" = $MIID
        "ResourceId" = $GraphApp.Id
        "AppRoleId" = $Role.Id
    }
    # Assign the Graph permission
    New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $MIID -BodyParameter $AppRoleAssignment
}

Daha sonra, Azure otomasyon hesabı için kaynak olarak aşağıdaki Microsoft Graph PowerShell SDK modüllerinin yüklenmesi gerekir:

  • Microsoft.Graph.Authentication.
  • Microsoft.Graph.Identity.SignIns.
  • Microsoft.Graph.Users.Actions.

Microsoft Graph SDK modülleri düzenli güncellemeler aldığından güncel olduklarından emin olmak önemlidir. Azure Otomasyonu'ndaki modülleri güncelleştirme hakkında daha fazla bilgi edinmek için Azure Otomasyonu için Microsoft Graph PowerShell Modüllerinizi nasıl güncel tutacağınızla ilgili bu makaleye göz atın.

Kodu Ekleme

Bu görevin betiği GitHub'da mevcuttur. Komut dosyası yüksek düzeyde aşağıdaki görevleri yerine getirir:

  • Rapor e-postasının gönderen adresi, alıcı adresi ve konusuna ilişkin değişkenleri bildirir.
  • PowerShell SDK'yı kullanarak Microsoft Graph'a bağlanır.
  • Kiracıdan risk tespitlerini, riskli kullanıcıları ve riskli hizmet sorumlularını yalnızca "risk altında" statüsündeki girişler dahil olmak üzere toplar.
  • Verileri, raporda bulunması gereken bilgileri içeren koleksiyonlara ayrıştırır.
  • Rapor için verileri HTML formatına dönüştürür.
  • Çıktıya bazı temel HTML biçimlendirmelerini ekler.
  • HTML raporunu konu ve alıcı parametreleriyle birlikte yeni bir postanın gövdesine ekler.
  • Raporu, gönderenin adresi değişkenini belirten Send-MgUserMail cmdlet'ini kullanarak gönderir.

Ortamınızda çalıştırmak için betiğin 20 ve 21. satırlarındaki gönderen ve alıcı değişkenleri, kiracınızdaki geçerli gönderen ve alıcı adresleriyle güncellenmelidir.

Raporu İnceleyin

Raporda Risk Tespitleri, Riskli Kullanıcılar ve Riskli Hizmet Sorumluları olmak üzere üç tablo yer almaktadır. Şekil 1'de gösterilen Risk Tespitleri tablosu, "Risk Altında" Risk Durumunda olan kiracıda meydana gelen risk olaylarını listeler. Bu, bir yöneticinin tetikleyici etkinliğin durumunu güncellemediği anlamına gelir; bu da genellikle olayın henüz incelenmediği anlamına gelir.

İkinci ve üçüncü tablolar, Risk Durumunun "Risk Altında" olduğu kullanıcıların (Şekil 2) ve hizmet sorumlularının listesini içerir. Genel olarak, bir kullanıcı veya hizmet sorumlusunun listelenen bir risk durumu varsa, bu duruma katkıda bulunan bir veya daha fazla risk algılaması olacaktır. Risk Algılamaları tablosu, kullanıcı ve hizmet sorumlusu tablolarında listelenen kimliklere bağlam sağlamak için kullanılabilir.

Bir yönetici Microsoft Entra yönetim merkezinde bir Risk eylemi gerçekleştirdiğinde Risk Durumu güncellenir ve risk artık raporda görünmez.

Raporu Planla

Azure Otomasyonu'nda bunun gibi betikleri çalıştırmanın önemli bir avantajı, zamanlama işlevidir. Komut dosyasını her sabah çalıştırmak için otomasyon hesabında Şekil 3'te gösterilene benzer bir günlük program oluşturun.

Daha sonra, betiği her sabah çalışacak şekilde zamanlamak için runbook'tan zamanlamayı runbook'a bağlayın (Şekil 4).

Basit Ama Etkili

Otomasyon hesabı, komut dosyasını programa göre çalıştıracak ve raporu her sabah e-posta yoluyla gönderecektir. Sadece raporu okumak değil, aynı zamanda ortamınızdaki risk durumuyla ilgili eyleme geçtiğinizden ve riskler azaltıldıkça durumunu güncellediğinizden emin olmak için de önemlidir. Bu bilgilere Entra yönetim merkezinden erişilebilse de, bunların günlük bir rapor halinde iletilmesi, bilgilerin ihtiyaç duyan kişiler tarafından kolayca görülebilmesini sağlamanın iyi bir yoludur. Komut dosyasında özellikle karmaşık hiçbir şey yoktur ancak kiracıya bağlanarak, verileri toplayarak, biçimlendirerek ve ardından e-postayla göndererek yapması gerekeni yapar. Özellikle raporun formatı konusunda yapılabilecek iyileştirmeler olduğuna eminim ama bunu tasarım konusunda benden daha iyi anlayan birine bırakıyorum.

İlgili makaleler