Microsoft Sentinel için not defteri çözümü geliştirme

ISV iş ortağı olarak Jupyter notebook analytics çözümlerini Microsoft Güvenlik Store'da SaaS tarafından sunulurken oluşturabilir, test edebilir, paketleyebilir ve yayımlayabilirsiniz. Microsoft Sentinel data lake, büyük güvenlik veri kümelerine karşı yönetilen Spark havuzlarında çalışan Jupyter not defterlerini destekler. Bu not defterleri, yavaş ve düşük yoğunluklu saldırıların tespiti, davranışsal temel çizgi oluşturma, AI/ML tabanlı analizler, hassas veri akışı yollarının haritalanması, veri görselleştirmeleri ve geleneksel KQL algılamalarının ifade edemediği zenginleştirmeler için idealdir.

Bir notebook platform çözümü genellikle tarihsel analiz, karmaşık veri dönüşümleri ve tekrarlayan veri işleme iş akışları için tasarlanmıştır. Çıktıyı veri gölündeki özel bir tabloya yazar; alt akıştaki analitik kurallar, tehdit avı sorguları, Security Copilot ajanları veya MCP araçları, notebook çözümünün sonuçlarını buradan kullanabilir. Partner Center’a gönderdiğiniz .zip paketi, SentinelLake türünde olarak tanımlanır ve notebook’ları ve isteğe bağlı olarak notebook’un gerektirdiği alt akış Azure kaynakları için bir ARM şablonunu içerir.

Bu makale, Microsoft Sentinel platform dizüstü bilgisayarı çözümünün Microsoft Güvenlik Store'a nasıl oluşturulacağını, test edilmesini, paketlenmesini ve yayımlanma sürecini anlatıyor. Bu kılavuzu tamamladıktan sonra şunları yapacaksınız:

  • Sentinel veri gölünden verileri okuyan çalışan bir Jupyter not defteri
  • Yönetilen bir Spark havuzunda not defterini çalıştıran zamanlanmış bir iş
  • Bir SentinelLake paket zip dosyası (PackageManifest + not defteri klasörü)
  • Microsoft Güvenlik Store'da İş Ortağı Merkezi SaaS teklifi listesi

Prerequisites

Kiracınızın Microsoft Sentinel veri gölüne bağlı olması gerekir. Defender portalında ekleme durumunuzu doğrulayın. Sistem>Ayarları>Microsoft Sentinel>Veri gölü'ne gidin. Kiracınız hazırsa durum Sağlandı olarak okunur. Ekleme yönergeleri için bkz. Microsoft Sentinel veri gölüne ekleme.

Gerekli izinler

İşletme/Kaynak Gerekli rol
Sentinel veri gölüne gidiş Microsoft Entra ID - Güvenlik Yöneticisi veya Genel Yönetici
Sentinel çalışma alanını Defender portala ekleme Abonelik Sahibi veya abonelik kapsamında Kullanıcı Erişimi Yöneticisi ve abonelik ya da kaynak grubu kapsamında Microsoft Sentinel Katkıda Bulunanı
Sentinel çalışma alanını Veri Gölü’e ekleyin Abonelik veya kaynak grubu kapsamında Abonelik Sahibi veya Microsoft Sentinel Katkıda Bulunanı
Data Lake'te not defterlerini çalıştırma Microsoft Sentinel Okuyucu veya Katılımcı
Log Analytics çalışma alanı (analiz katmanına geri yazma amacıyla) data-lake yönetilen kimliğine atanan Log Analytics Katkıda Bulunanımsg-resources-<guid>
Microsoft İş Ortağı Merkezi Marketplace Publisher hesabı (tek seferlik; aynı hesap Security copilot agent yayıncılığında kullanılmıştır)

Note

Abonelik Sahibi rolü, tek seferlik bir data lake ekleme görevi için gereklidir. Yalnızca gerektiğinde bu role geçici olarak yükseltmek için Microsoft Entra Privileged Identity Management (PIM) kullanın, ardından ekleme tamamlandıktan sonra erişimi kaldırın.

Gerekli araçlar

  • Visual Studio Code.
  • Microsoft Sentinel için VS Code uzantısı
  • GitHub Copilot VS Code uzantısı dizüstü bilgisayar yazımı hızlandırmak için önerilir.
  • Python 3.10+ yerel olarak yüklenir. Spark çekirdeği Azure çalışır ancak VS Code'un hücre düzenlemesi için yerel bir yorumlayıcıya ihtiyacı vardır.

İşleme genel bakış

Yayımlama işlemi, yerel not defteri geliştirmenin Microsoft Güvenlik Store'da bulunabilen paketlenmiş bir SaaS teklifine taşınmasıyla başlar.

  1. Yerel not defteri geliştirme (VS Code + Sentinel uzantısı)
  2. Sentinel platformunda etkileşimli olarak çalıştırma
  3. Temsilî verilerle test et; çıktı tablosunun doldurulduğunu doğrula
  4. Görev olarak planla (istek üzerine veya zamanlanmış)
  5. SentinelLake .zip olarak paketle (PackageManifest.yaml + klasör)
  6. Microsoft İş Ortağı Merkezi'de SaaS Teklifi Oluşturma
  7. Paketi yükleme, meta veri oluşturma, plan ve fiyatlandırma
  8. Gözden Geçir ve Yayımla, otomatik inceleme, Canlı Yayına Geç
  9. Microsoft Güvenlik Store'da canlı

Visual Studio Code'u ve Microsoft Sentinel uzantısını yükleme

Tüm not defteri geliştirmesi, Microsoft Sentinel uzantısı yüklü olarak VS Code'da yerel olarak gerçekleşir. Spark çekirdeği Azure çalışır; VS Code düzenleyici ve gönderim istemcisidir.

  1. uygulamasından https://code.visualstudio.com/ Visual Studio Code indirin ve varsayılan seçeneklerle yükleyin.

  2. VS Code >Uzantıları marketi (Ctrl+Shift+X veya Cmd+Shift+X) açın.

  3. Sentinel'i arayın ve Microsoft Sentinel uzantısını yükleyin (yayımcı: ms-security).

    Yüklemeden sonra sol araç çubuğunda Microsoft Sentinel simgesi görünür.

  4. (Önerilen) Markette GitHub Copilot arayın, yükleyin ve istendiğinde GitHub oturum açın.

    Copilot, MicrosoftSentinelProvider API’yi bilir ve PySpark dönüşümlerini otomatik tamamlar.

  5. Sol araç çubuğundaki Microsoft Sentinel simgesini seçin.

  6. Oturum açma iletişim kutusunu onaylayın, ardından çalışma alanınızda Sentinel Okuyucusu / Katkıda Bulunanı olan hesabı seçin.

Sol bölme, uzantının veri gölüne ulaştığını doğrulayan Lake tabloları ve İşler öğelerini gösterir.

Lakehouse tabloları, İşler ve grafikler bölümlerini gösteren Microsoft Sentinel VS Code uzantısının ekran görüntüsü.

Caution

Oturum açmış birden çok konuk kiracınız varsa VS Code'un sol alt kısmındaki hesapların değiştirilmesi tüm etkin PySpark oturumlarını durdurur; geçiş yaptıktan sonra çekirdeği yeniden başlatmanız gerekir. Plan hesabı geçişleri, çalıştırmalar sırasında değil, çalıştırmalar arasında yapılır.

Not defterinizi geliştirme

Not defterleri şu yazma düzenini kullanır:

  • Bir veri gölü tablosunu Spark DataFrame’ine okuyun
  • PySpark ile dönüştürme
  • İsteğe bağlı olarak dış verilerle zenginleştirme
  • Sonuçları Sentinel'in kullanabileceği özel bir tabloya yazma

Lake tables panelini keşfedin

Not defterinizin kullandığı giriş tablolarını tanımlamak için Lake tables panelini keşfedin:

  1. Sentinel simgesini seçin ve Göl tabloları'nı genişletin.
  2. Tablolar veritabanına ve kategoriye (Sistem, Özel, Federasyon) göre gruplandırılır. Sütun tanımlarını ve türlerini görmek için herhangi bir tabloyu seçin.
  3. Not defterinizin okuduğu giriş tablolarını belirleyin ve tam adları not edin.

Yeni not defteri oluşturma

Çözümünüz için yeni bir Jupyter not defteri oluşturmak için aşağıdaki adımları tamamlayın:

  1. Ctrl+Shift+P / Cmd+Shift+P> tuşlarına basın, Yeni Jupyter Notebook Oluştur yazın veya Dosya>Yeni Dosya>Jupyter Notebook'yı seçin.

    Yeni Jupyter Notebook Oluştur komutunu gösteren VS Code'un ekran görüntüsü.

  2. Not defterini açıklayıcı bir adla (örneğin, failed-signin-baseline.ipynb) kaydedin.

Tablo okuma

Bu şablonu ilk hücreye yapıştırın ve tablo adını sizinkiyle değiştirin:

from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)

# Read a table from the data lake
table_name = "EntraGroups"
df = data_provider.read_table(table_name)

# Quick sanity check—show 100 rows
df.select("displayName", "groupTypes", "mail", "tenantId").show(100, truncate=False)

Çalışma zamanı havuzu seçin ve hücreyi çalıştırın

Hücreyi veri gölünde çalıştırmak için bir havuz seçin ve gönderin:

  1. Hücredeki Çalıştır üçgenini seçin.

  2. İstendiğinde çalışma zamanı olarak Microsoft Sentinel seçin.

    Çalışma zamanı seçimini gösteren VS Code'un ekran görüntüsü.

  3. Havuz boyutu seçin: Keşif için küçük , Dönüşümler için orta , ML için büyük veya on milyonlarca satırdan fazla toplama.

İlk çalıştırmada Spark oturumunun başlatılması 3 ila 5 dakika sürer. Sonraki hücreler saniyeler içinde çalışır.

Özel tabloya dönüştürme ve yeniden yazma

save_as_table() yöntemi, bir DataFrame'i göl katmanındaki (veya analiz katmanındaki) özel bir tabloya yazar. Hedef tablo ilk yazmada oluşturulur.

df_transformed = (
    df.filter(df.mail.isNotNull())
    .select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId")
)

write_options = {"mode": "overwrite"}
data_provider.save_as_table(
    df_transformed,
    "EntraGroups_Processed_SPRK",
    write_options=write_options,
)

Defter oluşturma kalıpları

Aşağıdaki desenler en yaygın senaryoları kapsar:

Desen Ne zaman kullanılır?
Taban çizgisi + kayma Her kullanıcı veya ana bilgisayar için normal davranışı hesaplayın; temel çizgiden sapan satırları işaretleyin. Başarısız oturum açma ve işlem yürütme analizi için klasik.
Tablolar arası birleştirme Sahip olduğunuz veri gölü tablosunu, paylaşılan varlıklar (UPN, ana bilgisayar, IP) üzerinden yerleşik tablolarla (SigninLogs, SecurityAlert, DeviceProcessEvents) birleştirin.
ML puanlaması Notebook'ta bir modeli eğitin veya önceden eğitilmiş bir modeli yükleyin; her satırı puanlayın; sonraki uyarı süreçleri için en riskli ilk N satırı özel bir çıktı tablosuna yazın.
Görsel araştırma Matplotlib veya Plotly ile zaman çizelgeleri, ısı haritaları ve süreç ağaçları çizin; teslim için not defterini HTML olarak dışa aktarın.

Tip

Kodunuzu belgeleyebilmek için markdown hücrelerini serbestçe kullanın. Security Store incelemecisinin ve not defterinizi çalıştıran SOC analistinin, kodu okumadan her bölümün ne işe yaradığını anlaması gerekir. Amacı, girişleri, çıkışları ve beklenen çıkışı açıklayan her kod bloğunun üzerine bir markdown hücresi yerleştirin. Gözden geçirenler, belirsiz not defterlerini zor bir hata olarak kabul eder.

Dizüstü bilgisayarı test edin

Test, not defterinin gerçekçi verilerde uçtan uca çalıştığını kanıtlamayı gerektirir ve kullanılabilir bir çıkış tablosu oluşturur.

Küçük havuzda duman testi

Her hücrenin hatasız tamamlanmasını onaylamak için not defterini uçtan uca çalıştırın:

  1. Eski durumu temizlemek için çekirdeği yeniden başlatın.
  2. Tüm hücreleri yukarıdan aşağıya doğru çalıştırın; her hücre hatasız tamamlanmalıdır.

Dönüştürme hücresi Küçük'te 5 dakikadan uzun sürüyorsa, giriş filtreleriniz çok gevşektir. Ölçeği büyütmeden önce tarih aralığını veya sütun seçimini daraltın.

Çıkış tablosunu doğrulama

Çıkış tablosunun oluşturulduğunu ve beklenen verileri içerdiğini onaylayın:

  1. Sentinel uzantısının Lake tabloları panelinde, çıktı tablonuzun beklenen şemayla göründüğünü yenileyin ve onaylayın.
  2. Doğrulama hücresi çalıştırma:
verify_df = data_provider.read_table("EntraGroups_Processed_SPRK")
print("Row count:", verify_df.count())
verify_df.printSchema()
verify_df.show(5, truncate=False)

Orta veya Büyük havuzda ölçek testi

Not defterinin daha büyük havuz boyutlarında tutarlı sonuçlar ürettiğini doğrulayın:

  1. Not defterini Orta’da (veri kümeniz gerektiriyorsa Büyük’te de) yeniden çalıştırın.
  2. Satır sayılarının ve sütun dağılımlarının Small çalıştırmayla eşleştiğini onaylayın. Eğer farklılık gösteriyorlarsa, incelenmesi gereken deterministik olmayan bir dönüşüm var demektir.

Sınır vakalarını test edin

  • Boş giriş: Sıfır satır içeren bir tablo veya tarih aralığının üzerine gelin. Notebook kontrollü biçimde hata vermeli veya boş bir çıktı üretmeli—çökmemelidir.
  • Şema kayması: Giriş tablonuz bir sütun kazanırsa not defteri yine de çalıştırılmalıdır. Hiçbir zaman konumsal sırayı varsaymayın.

Not defterini iş olarak zamanlama

Yayımlanan not defteri çözümlerinin çoğu saatlik taban çizgisi, günlük anomali taraması vb. bir zamanlamaya göre çalışır. Sentinel uzantısı, herhangi bir kaydedilmiş not defterini, yönetilen bir Spark havuzunda gözetimsiz çalışan zamanlanmış bir işe dönüştürür.

İşi oluştur.

Not defterini zamanlanmış bir işe dönüştürmek için aşağıdaki adımları tamamlayın:

  1. Not defterinizi VS Code'da açın.
  2. Not defterinde Zamanlama işi oluştur'u ve ardından sorulduğunda Mevcut not defterini kullan'ı seçin.

Daha fazla bilgi için bkz. Jupyter not defteri işlerini oluşturma ve yönetme.

Not defterinde zamanlanmış iş oluşturmayı gösteren ekran görüntüsü.

İşi yapılandırın

Zamanlanmış işi yapılandırmak için aşağıdaki alanları doldurun:

  1. Not defterini açıklayan kebab-case biçiminde bir Görev adı girin (örneğin, failed-signin-baseline-hourly).
  2. İşin amacını ve çıkış tablosunu kapsayan tek cümlelik bir Açıklama girin.
  3. Test sırasında doğruladığınız Spark havuzu boyutunu seçin. Fazla boyutlandırma yapmayın; işler her çağrıda bu havuzda çalıştırılır.
  4. Zamanlama için, manuel çalıştırmalar için İsteğe bağlı seçeneğini veya bir yineleme sıklığıyla (dakikalık, saatlik, günlük, haftalık ya da aylık) Zamanlanmış seçeneğini belirleyin.
  5. İşi yayımlamak için Gönder'i seçin.

İşi doğrulayın

Gönderdikten sonra işin düzgün çalıştığını onaylayın:

  1. Sentinel uzantısında İşler paneline geçin; işiniz görünmelidir.

  2. Hemen doğrulama çalıştırması için > işini seçin.

  3. Not defteri işini hemen çalıştırmayı gösteren ekran görüntüsü.

  4. Çalıştırma tamamlandıktan sonra günlükleri ve zamanlamayı incelemek için Çalıştırma geçmişi sekmesine geçin.

Important

Gönderilen işler yerel .ipynb dosyanızdan ayrılmıştır. Yerel dosyayı düzenlemek, çalışan görevi güncellemez. Bir işi güncellemek için: Jobs panelinde açın >Not defterini indir>>İşi düzenle>Gönder seçeneğini kullanarak güncellenmiş sürümü yükleyin.

İşi Defender portalında görüntüleyin

Microsoft Sentinel>Veri gölü araştırma>İşleri'ne gidin. Zamanlamayı etkinleştirebilir veya devre dışı bırakabilir ve çalıştırma geçmişini burada görüntüleyebilirsiniz, ancak not defterini portaldan düzenleyemezsiniz.

Not defteri çözümünüzü paketleme ve yayımlama

Notebook’unuz test edilip materialize edildikten sonra, müşterilere dağıtmak üzere paketleyin. Ayrıntılı paketleme yönergeleri için bkz. Microsoft Sentinel grafik ve not defteri çözümlerini paketleme ve yayımlama.

Sorun giderme

Defter oluşturma

Belirti Olası neden ve düzeltme
MicrosoftSentinelProvider bulunamadı Uzantıda oturum açılmamış ya da Spark dışı bir çekirdek açtınız. Microsoft Sentinel uzantısında oturum açın ve istendiğinde Microsoft Sentinel çalışma zamanını seçin.
Hücre, "Starting Spark session" sırasında takılı kalıyor İlk hücre başlatma işlemi 3-5 dakika sürer. 6 dakika sonra durum çubuğunda sanal çekirdek kullanımı göstergesini kontrol edin; havuzunuz kapasitede olabilir. Daha küçük bir havuz boyutu deneyin.
save_as_table analiz katmanında izin reddedildi hatasıyla başarısız oluyor Data-lake yönetilen kimliğinin msg-resources-<guid> Log Analytics çalışma alanında Log Analytics katkı sağlayıcısı yok. Önkoşullara göre atayın ve yeniden deneyin.
Çıkış tablosu Lake tables panelinde görünür ancak boş .filter() muhtemelen tüm satırları kaldırdı. Sorunu yerelleştirmek için hemen önce save_as_table bir satır sayısı yazdırması ekleyin.

Daha fazla bilgi için bkz . Not defterlerinde sorun giderme.

İş planlama çizelgeleme

Belirti Olası neden ve düzeltme
Yerel .ipynb üzerindeki düzenlemeler zamanlanmış göreve yansımıyor Gönderilen işler yerel dosyadan ayrılmıştır. İşi VS Code'dan indirin, düzenleyin, ardından yeni sürümü karşıya yüklemek için İşi> düzenleGönder'i kullanın.
İş çalışır ancak çıkış üretmez İşler panelinde Çalıştırma geçmişi sekmesini denetleyin; çalıştırma günlüğü genellikle başarısız olan hücreyi gösterir. En yaygın neden, not defterinin çalıştıran kimliğin erişimi olmayan bir tablodan okuma yapmasıdır.

Daha fazla bilgi için bkz . Not defterlerinde sorun giderme.