Mengumpulkan log pemberitahuan Microsoft Defender untuk Cloud

Didukung di:

Ringkasan

Parser ini mengekstrak data pemberitahuan keamanan dari log berformat JSON Microsoft Defender for Cloud. Alat ini mengubah dan memetakan kolom log mentah ke UDM Google SecOps, menangani berbagai jenis data dan struktur bertingkat, sekaligus memperkaya data dengan konteks dan label tambahan untuk analisis yang lebih baik.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke Microsoft Defender for Cloud.

Mengonfigurasi feed di Google SecOps untuk menyerap log pemberitahuan Microsoft Defender Cloud

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Log pemberitahuan Microsoft Defender for Cloud).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih Microsoft Defender for Cloud sebagai Log type.
  6. Klik Berikutnya.
  7. Opsional: tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ganti kode berikut:

  • ENDPOINT_URL: URL endpoint feed.
  • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
  • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Membuat Azure Logic App

  1. Login ke Azure Portal (https://portal.azure.com).
  2. Klik Buat resource, lalu telusuri Logic App.
  3. Klik Create untuk memulai proses deployment.
  4. Konfigurasi Logic App:
    • Nama: Berikan nama deskriptif untuk Logic App (misalnya, GoogleSecOpsWebhook).
    • Langganan: Pilih langganan yang sesuai.
    • Grup Resource: Pilih grup resource yang ada atau buat yang baru.
    • Lokasi: Pilih lokasi yang paling dekat dengan lingkungan Anda.
    • Log Analytics: Aktifkan opsi ini jika Anda ingin mencatat data diagnostik ke dalam log untuk Logic App.
  5. Klik Review + Create untuk membuat Logic App.
  6. Klik Create untuk men-deploy Logic App.

Mengonfigurasi koneksi Webhook Azure Logic App

  1. Buka Logic App yang dibuat pada langkah sebelumnya.
  2. Klik Development Tools > Logic App Designer.
  3. Klik Tambahkan pemicu.
  4. Telusuri Microsoft Defender for Cloud > Saat pemberitahuan Microsoft Defender for Cloud dibuat atau dipicu sebagai pemicu.

  5. Klik Buat baru dan ikuti petunjuk untuk melakukan autentikasi.

  6. Klik Sisipkan langkah baru untuk menambahkan langkah baru ke alur kerja.

  7. Klik Tambahkan tindakan.

  8. Telusuri HTT.

  9. Pilih HTTP sebagai tindakan.

  10. Konfigurasikan tindakan HTTP:

    • URI: Di sini Anda akan memasukkan URL endpoint Google SecOps API.
    • Metode: POST
    • Tambahkan header Content-Type: Tetapkan Content-Type sebagai kunci header dan application/json sebagai nilai header. Hal ini memberi tahu Google SecOps format data yang dikirim.
    • Menambahkan Kunci API ke kueri: Tetapkan key sebagai kunci kueri pertama dan <API_KEY> sebagai nilai kueri. API_KEY adalah nilai Kunci API yang dihasilkan selama konfigurasi Feed Google SecOps.
    • Menambahkan Kunci Rahasia ke kueri: Tetapkan secret sebagai kunci kueri kedua dan <SECRET_KEY> sebagai nilai kueri. SECRET_KEY adalah Kunci Rahasia yang dibuat selama konfigurasi Feed Google SecOps.
    • Tetapkan Isi dari langkah sebelumnya: Klik Masukkan konten permintaan > klik Masukkan data dari langkah sebelumnya (tombol dengan ikon petir di sebelah kiri kolom input).
  11. Klik Simpan.

Mengonfigurasi Webhook Pemberitahuan Cloud Microsoft Defender

  1. Buka Microsoft Defender for Cloud.
  2. Klik Pengelolaan > Otomatisasi alur kerja.
  3. Klik Tambahkan otomatisasi alur kerja.
    • Nama: Berikan nama deskriptif untuk aturan otomatisasi (misalnya, ForwardAlertsToGoogleSecOps).
    • Grup Resource: Pilih grup resource yang ada.
    • Jenis data Defender for Cloud: Pilih Peringatan keamanan.
    • Keparahan pemberitahuan: Pilih Pilih semua.
    • Tampilkan instance Logic App dari langganan berikut: Pilih langganan tempat Logic App dibuat.
    • Select Logic App: Pilih Logic App yang dibuat di langkah sebelumnya.
  4. Klik Buat untuk menyimpan otomatisasi alur kerja.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
AlertLink principal.resource.attribute.labels.AlertLink.value Dipetakan secara langsung.
AlertName security_result.rule_name Dipetakan secara langsung.
AlertSeverity security_result.severity Dipetakan langsung jika nilainya adalah salah satu dari HIGH, MEDIUM, LOW, CRITICAL, UNKNOWN_SEVERITY. Jika tidak, dipetakan ke security_result.severity_details. Nilai dikonversi ke huruf besar sebelum perbandingan.
AlertType security_result.threat_name Dipetakan secara langsung.
CompromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Dipetakan secara langsung.
Description security_result.description Dipetakan secara langsung.
DisplayName security_result.summary Dipetakan secara langsung.
EndTime about.resource.attribute.labels.EndTime.value Dipetakan secara langsung.
Entities[].Location.City principal.location.city Dipetakan secara langsung.
Entities[].Location.CountryName principal.location.country_or_region Dipetakan secara langsung.
ExtendedLinks[].Category about.resource.attribute.labels.extendedLink_Category.value Dipetakan secara langsung.
ExtendedLinks[].Href about.resource.attribute.labels.extendedLink_Href.value Dipetakan secara langsung.
ExtendedLinks[].Label about.resource.attribute.labels.extendedLink_Label.value Dipetakan secara langsung.
ExtendedLinks[].Type about.resource.attribute.labels.extendedLink_Type.value Dipetakan secara langsung.
ExtendedProperties.Account Session Id network.session_id Dipetakan langsung setelah diganti namanya menjadi accountSessionId.
ExtendedProperties.Alert Id metadata.product_log_id Dipetakan langsung setelah diganti namanya menjadi alertId.
ExtendedProperties.Authentication type extensions.auth.auth_details Dipetakan langsung setelah diganti namanya menjadi authenticationType.
ExtendedProperties.Client Application principal.application Dipetakan langsung setelah diganti namanya menjadi clientApplication.
ExtendedProperties.Client Hostname principal.asset.hostname, principal.hostname Dipetakan langsung setelah diganti namanya menjadi clientHostName.
ExtendedProperties.Client IP address principal.asset.ip, principal.ip Dipetakan langsung setelah diganti namanya menjadi clientIpAddress.
ExtendedProperties.Client IP location principal.location.country_or_region Dipetakan langsung setelah diganti namanya menjadi clientIpLocation.
ExtendedProperties.Client Location principal.location.country_or_region Dipetakan langsung setelah diganti namanya menjadi clientLocation.
ExtendedProperties.Client Principal Name principal.user.userid Dipetakan langsung setelah diganti namanya menjadi clientPrincipalName.
ExtendedProperties.Compromised Host principal.asset.hostname, principal.hostname Dipetakan langsung setelah diganti namanya menjadi compromisedHost.
ExtendedProperties.Suspicious Command Line target.process.command_line Dipetakan langsung setelah diganti namanya menjadi suspiciousCommandLine.
ExtendedProperties.Suspicious Process target.process.file.full_path Dipetakan langsung setelah diganti namanya menjadi suspiciousProcess.
ExtendedProperties.Suspicious Process Id target.process.pid Dipetakan langsung setelah diganti namanya menjadi suspiciousProcessId.
ExtendedProperties.User agent network.http.user_agent Dipetakan langsung setelah diganti namanya menjadi userAgent.
ExtendedProperties.User Name principal.user.user_display_name Dipetakan langsung setelah diganti namanya menjadi userName.
ExtendedProperties.resourceType principal.resource.name Dipetakan secara langsung.
IsIncident security_result.detection_fields.IsIncident.value Dipetakan secara langsung. Dikonversi ke string.
ProcessingEndTime about.resource.attribute.labels.ProcessingEndTime.value Dipetakan secara langsung.
ProductName metadata.product_name Dipetakan secara langsung.
ResourceId principal.resource.product_object_id Dipetakan secara langsung.
SourceSystem security_result.detection_fields.SourceSystem.value Dipetakan secara langsung.
StartTime about.resource.attribute.labels.StartTime.value Dipetakan secara langsung.
Status security_result.detection_fields.Status.value Dipetakan secara langsung.
SystemAlertId metadata.product_log_id Dipetakan secara langsung.
Tactics security_result.attack_details.tactics.name Dipetakan secara langsung.
TenantId additional.fields.TenantId.string_value Dipetakan secara langsung.
TimeGenerated about.resource.attribute.labels.TimeGenerated.value Dipetakan secara langsung.
VendorName metadata.vendor_name Dipetakan secara langsung.
WorkspaceResourceGroup target.resource.attribute.labels.WorkspaceResourceGroup.value Dipetakan secara langsung.
WorkspaceSubscriptionId target.resource.attribute.labels.WorkspaceSubscriptionId.value Dipetakan secara langsung.
_Internal_WorkspaceResourceId target.resource.product_object_id Dipetakan secara langsung.
properties.alertDisplayName security_result.rule_name Dipetakan secara langsung.
properties.alertType security_result.threat_name Dipetakan secara langsung.
properties.alertUri principal.resource.attribute.labels.AlertUri.value Dipetakan secara langsung.
properties.correlationKey principal.resource.attribute.labels.correlationKey.value Dipetakan secara langsung.
properties.description security_result.description Dipetakan secara langsung.
properties.endTimeUtc additional.fields.EndTime.string_value Dipetakan secara langsung.
properties.entities[].location.city principal.location.city Dipetakan secara langsung.
properties.entities[].location.countryName principal.location.country_or_region Dipetakan secara langsung.
properties.entities[].location.latitude principal.location.region_coordinates.latitude Dipetakan secara langsung. Dikonversi menjadi float.
properties.entities[].location.longitude principal.location.region_coordinates.longitude Dipetakan secara langsung. Dikonversi ke float.
properties.extendedProperties.alert_Id metadata.product_log_id Dipetakan secara langsung.
properties.extendedProperties.clientApplication principal.application Dipetakan secara langsung.
properties.extendedProperties.clientIpAddress principal.asset.ip, principal.ip Dipetakan secara langsung. Diurai sebagai alamat IP.
properties.extendedProperties.clientLocation principal.location.country_or_region Dipetakan secara langsung.
properties.extendedProperties.clientPrincipalName principal.user.userid Dipetakan secara langsung.
properties.extendedProperties.compromisedEntity principal.resource.attribute.labels.CompromisedEntity.value Dipetakan secara langsung.
properties.extendedProperties.resourceType principal.resource.name Dipetakan secara langsung.
properties.IsIncident security_result.detection_fields.isIncident.value Dipetakan secara langsung. Dikonversi ke string.
properties.productName metadata.product_name Dipetakan secara langsung.
properties.resourceIdentifiers[].<key> additional.fields.<key>_<index>.string_value Dipetakan secara langsung. Kunci $id dan type ditambahkan dengan indeks elemen dalam array.
properties.severity security_result.severity Dipetakan langsung jika nilainya adalah salah satu dari HIGH, MEDIUM, LOW, CRITICAL, UNKNOWN_SEVERITY. Jika tidak, dipetakan ke security_result.severity_details. Nilai dikonversi ke huruf besar sebelum perbandingan.
properties.startTimeUtc additional.fields.StartTime.string_value Dipetakan secara langsung.
properties.status security_result.detection_fields.Status.value Dipetakan secara langsung.
properties.timeGeneratedUtc additional.fields.TimeGenerated.string_value Dipetakan secara langsung. Tetapkan ke "MICROSOFT_DEFENDER_CLOUD_ALERTS" jika tidak disediakan dalam log. Tetapkan ke "MICROSOFT_DEFENDER_CLOUD_ALERTS". Tetapkan ke "USER_RESOURCE_ACCESS" jika akun utama atau target ada, jika tidak, tetapkan ke "GENERIC_EVENT".

Perubahan

2024-07-05

  • Memetakan "isInteractive" ke "security_result.detection_fields".

2024-04-02

  • Memetakan "properties.createdDateTime" ke "metadata.event_timestamp".
  • Memetakan "properties.resourceServicePrincipalId" dan "resourceServicePrincipalId" ke "target.resource.attribute.labels".
  • Memetakan "properties.authenticationProcessingDetails", "authenticationProcessingDetails", dan "properties.networkLocationDetails" ke "additional.fields".
  • Memetakan "properties.userAgent" ke "network.http.user_agent" dan "network.http.parsed_user_agent".
  • Memetakan "properties.authenticationRequirement" ke "additional.fields".