Microsoft Defender XDR REST API için Merhaba Dünya

Şunlar için geçerlidir:

  • Microsoft Defender XDR

Önemli

Bazı bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen önceden yayımlanmış ürünle ilgilidir. Microsoft, burada sağlanan bilgilerle ilgili olarak açık veya zımni hiçbir garanti vermez.

Basit bir PowerShell betiği kullanarak olayları alma

Bu projenin tamamlanması 5-10 dakika sürmelidir. Bu zaman tahmini, uygulamayı kaydetmeyi ve PowerShell örnek betiğinden kodu uygulamayı içerir.

uygulamayı Microsoft Entra ID'a kaydetme

  1. Genel yönetici rolüyle Azure'da kullanıcı olarak oturum açın.

  2. Microsoft Entra ID>Uygulama kayıtları>Yeni kayıt'a gidin.

    Microsoft Defender portalındaki Yeni kayıt bölümü

  3. Kayıt formunda, uygulamanız için bir ad seçin ve ardından Kaydet'i seçin. Yeniden yönlendirme URI'sini seçmek isteğe bağlıdır. Bu örneği tamamlamak için ihtiyacınız olmayacaktır.

  4. Uygulama sayfanızda API İzinleriKuruluşumun kullandığı> izin > API'lerini >ekle'yiseçin, Microsoft Tehdit Koruması yazın ve Microsoft Tehdit Koruması'yı seçin. Uygulamanız artık Microsoft Defender XDR erişebilir.

    İpucu

    Microsoft Tehdit Koruması, Microsoft Defender XDR için eski bir addır ve özgün listede görünmez. Görünmesini sağlamak için metin kutusuna adını yazmaya başlamanız gerekir. Microsoft Defender portalında API kullanımı bölümü

    • Uygulama izinleri>Incident.Read.All öğesini seçin ve İzin ekle'yi seçin.

      Microsoft Defender portalında uygulamanın izinler bölmesi

  5. Yönetici onayı ver'i seçin. Her izin eklediğinizde, geçerli olması için Yönetici onayı ver'i seçmeniz gerekir.

    Microsoft Defender portalında Yönetici onayı verme bölümü

  6. Uygulamaya gizli dizi ekleyin. Sertifikalar & gizli dizileri seçin, gizli diziye bir açıklama ekleyin ve ardından Ekle'yi seçin.

    İpucu

    Ekle'yi seçtikten sonra oluşturulan gizli dizi değerini kopyala'yı seçin. Ayrıldıktan sonra gizli dizi değerini alamazsınız.

    Microsoft Defender portalındaki gizli dizi ekleme bölümü

  7. Uygulama kimliğinizi ve kiracı kimliğinizi güvenli bir yere kaydedin. Bunlar uygulama sayfanızda Genel Bakış altında listelenir.

    Microsoft Defender portalındaki Genel Bakış bölümü

Uygulamayı kullanarak belirteç alma ve belirteci kullanarak API'ye erişme

Microsoft Entra belirteçleri hakkında daha fazla bilgi için Microsoft Entra öğreticisine bakın.

Önemli

Bu tanıtım uygulamasındaki örnek, test amacıyla gizli dizi değerinizi yapıştırmanızı teşvik etse de, gizli dizileri asla üretimde çalışan bir uygulamaya kodlamamalısınız. Üçüncü bir taraf, kaynaklara erişmek için gizli dizinizi kullanabilir. Azure Key Vault kullanarak uygulamanızın gizli dizilerini güvende tutmaya yardımcı olabilirsiniz. Uygulamanızı nasıl koruyabileceğinize ilişkin pratik bir örnek için bkz. Azure Key Vault ile sunucu uygulamalarınızda gizli dizileri yönetme.

  1. Aşağıdaki betiği kopyalayın ve sık kullandığınız metin düzenleyiciye yapıştırın. Get-Token.ps1olarak kaydedin. Kodu PowerShell ISE'de olduğu gibi de çalıştırabilirsiniz, ancak bunu kaydetmeniz gerekir çünkü sonraki bölümde olay getirme betiğini kullandığımızda yeniden çalıştırmamız gerekir.

    Bu betik bir belirteç oluşturur ve Latest-token.txtadlı çalışma klasörüne kaydeder.

    # This script gets the app context token and saves it to a file named "Latest-token.txt" under the current directory.
    # Paste in your tenant ID, client ID and app secret (App key).
    
    $tenantId = '' # Paste your directory (tenant) ID here
    $clientId = '' # Paste your application (client) ID here
    $appSecret = '' # # Paste your own app secret here to test, then store it in a safe place!
    
    $resourceAppIdUri = 'https://api.security.microsoft.com'
    $oAuthUri = "https://login.windows.net/$tenantId/oauth2/token"
    $authBody = [Ordered] @{
      resource = $resourceAppIdUri
      client_id = $clientId
      client_secret = $appSecret
      grant_type = 'client_credentials'
    }
    $authResponse = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $authBody -ErrorAction Stop
    $token = $authResponse.access_token
    Out-File -FilePath "./Latest-token.txt" -InputObject $token
    return $token
    

Belirteci doğrulama

  1. Aldığınız belirteci kopyalayıp JWT'ye yapıştırarak kodunu çözebilirsiniz.

  2. JWT , JSON Web Belirteci'nin kısaltmasıdır. Kodu çözülen belirteç bir dizi JSON biçimli öğe veya talep içerir. Kodu çözülen belirteç içindeki rol talebi için istenen izinlerin bulunduğundan emin olun.

    Aşağıdaki görüntüde, , Incidents.ReadWrite.Allve AdvancedHunting.Read.All izinleriyle Incidents.Read.Allbir uygulamadan alınan kodu çözülen belirteci görebilirsiniz:

    Microsoft Defender portalındaki Kod Çözme Belirteci bölümü

Son olayların listesini alma

Aşağıdaki betik, API'ye erişmek için Get-Token.ps1 kullanır. Ardından son 48 saat içinde güncelleştirilen olayların listesini alır ve listeyi JSON dosyası olarak kaydeder.

Önemli

Bu betiği Get-Token.ps1kaydettiğiniz klasöre kaydedin.

# This script returns incidents last updated within the past 48 hours.

$token = ./Get-Token.ps1

# Get incidents from the past 48 hours.
# The script may appear to fail if you don't have any incidents in that time frame.
$dateTime = (Get-Date).ToUniversalTime().AddHours(-48).ToString("o")

# This URL contains the type of query and the time filter we created above.
# Note that `$filter` does not refer to a local variable in our script --
# it's actually an OData operator and part of the API's syntax.
$url = "https://api.security.microsoft.com/api/incidents`?`$filter=lastUpdateTime+ge+$dateTime"

# Set the webrequest headers
$headers = @{
    'Content-Type' = 'application/json'
    'Accept' = 'application/json'
    'Authorization' = "Bearer $token"
}

# Send the request and get the results.
$response = Invoke-WebRequest -Method Get -Uri $url -Headers $headers -ErrorAction Stop

# Extract the incidents from the results.
$incidents =  ($response | ConvertFrom-Json).value | ConvertTo-Json -Depth 99

# Get a string containing the execution time. We concatenate that string to the name 
# of the output file to avoid overwriting the file on consecutive runs of the script.
$dateTimeForFileName = Get-Date -Format o | foreach {$_ -replace ":", "."}

# Save the result as json
$outputJsonPath = "./Latest Incidents $dateTimeForFileName.json"

Out-File -FilePath $outputJsonPath -InputObject $incidents

Hepsi bu kadar! Başarılı bir şekilde:

  • Uygulama oluşturuldu ve kaydedildi.
  • Bu uygulamaya uyarıları okuma izni verildi.
  • API'ye bağlı.
  • Son 48 saat içinde güncelleştirilen olayları döndürmek için bir PowerShell betiği kullandı.

İpucu

Daha fazla bilgi edinmek mi istiyorsunuz? Teknoloji Topluluğumuzdaki Microsoft Güvenlik topluluğuyla etkileşime geçin: Microsoft Defender XDR Teknoloji Topluluğu.