Tüm yazılar
·8 dk okuma·ShamashAi Ekibi

ShamashAi Custom Connector SDK: 3 Günde Yeni Vendor Desteği

ShamashAi Agent'ın .NET 8 tabanlı IConnector SDK'sı ile Palo Alto, Cisco ASA, CrowdStrike gibi vendor'ları 3 günde entegre edin. Vendor'a ödeme yapmadan, çekirdek koda dokunmadan Connectors-custom klasörüne bırakın, agent otomatik yüklesin.

Salı 14:37, Bir Entegrasyon Talebi

IT müdürü toplantı odasına girdiğinde ekrandaki Jira ticket açıktı: "Yeni nesil Next-Gen Firewall cihazlarından (10 adet) ShamashAi'ya log gelmesi gerekiyor. Vendor X'in API dokümantasyonu ekte, öncelik: HIGH." Klasik SIEM dünyasında bu talep şu demekti: SIEM vendor'una destek talebi aç, 3-6 ay bekle, belki bir sonraki major release'de gelir, belki de "yeterli müşteri talebi yok" cevabını al. Ya da üçüncü taraf bir ETL aracı sat al, ayda 800 EUR lisans öde. ShamashAi Agent'ın Custom Connector SDK yaklaşımı bu süreci tersine çevirir: .NET 8 tabanlı, açık standartlara bağlı, müşteri ya da AfnTeknoloji pilot ekibi tarafından 1-3 günde teslim edilebilir bir mimari.

ShamashAi Agent Connector Mimarisi

ShamashAi Agent .NET 8 üzerine inşa edilmiş, modüler bir event collection daemon'udır. Çekirdek kodu (AfnTeknoloji tarafından imzalı DLL) değişmez; yeni vendor desteği eklemek için Connectors-custom/ klasörüne yeni bir .NET assembly bırakırsınız, agent restart ettiğinde otomatik olarak Dependency Injection container'a register olur. Bu mimari iki kritik avantaj sağlar: 1. Upgrade güvenliği: ShamashAi'nın core agent'ı güncellendiğinde custom connector'larınız bozulmaz; interface kontratı korunduğu sürece yan yana yaşarlar. 2. Hız: Vendor'un REST API'si, syslog formatı, SNMP MIB'i veya WinRM endpoint'i hakkında bilginiz varsa, connector'ı siz yazabilir, pilot kapsamında AfnTeknoloji'den talep edebilir ya da AfnTeknoloji Marketplace'den (roadmap) indirebilirsiniz.

IConnector Interface Kontratı

Her custom connector ShamashAi.Agent.Abstractions namespace'indeki IConnector interface'ini implement eder: csharp using ShamashAi.Agent.Abstractions; public interface IConnector { string Name { get; } // "NextGenFW Collector" string Vendor { get; } // "VendorX" string DeviceType { get; } // "firewall" Task<bool> TestConnectionAsync(ConnectorConfig config, CancellationToken ct); Task SubscribeAsync(ConnectorConfig config, Func<CanonicalEvent, Task> onEventReceived, CancellationToken ct); } CanonicalEvent ShamashAi'nın vendor-agnostik event şemasıdır: csharp public record CanonicalEvent ( DateTimeOffset Timestamp, string Source, // "192.168.1.254" (firewall IP) string EventType, // "AUTH_FAIL_USER", "BRUTE_FORCE_DETECTED", "KNOWN_BAD_IP" string? UserName, string? SourceIp, string? DestinationIp, int? DestinationPort, string? Action, // "blocked", "allowed" Dictionary<string, object>? RawFields ); Bu şema, farklı vendor'ların farklı field isimlendirmelerini (src_ip, source_address, remote_host) normalize eder. ShamashAi backend'de dbo.events tablosuna yazılırken BRUTE_FORCE_DETECTED, BEHAVIORAL_ANOMALY gibi event_type'lar correlation engine'e doğrudan beslenir.

Örnek 1: REST API Tabanlı Firewall Connector

VendorX Next-Gen Firewall, /api/v2/events endpoint'inde JSON formatında son 5 dakikadaki olayları döner: { "events": [ { "ts": "2026-09-11T08:10:22Z", "action": "deny", "src": "203.0.113.45", "dst": "10.20.30.40", "dport": 3389, "user": null, "reason": "GeoIP block" } ] } Custom connector implementasyonu: csharp using System.Net.Http.Json; using ShamashAi.Agent.Abstractions; namespace ShamashAi.Connectors.Custom; public class VendorXFirewallConnector : IConnector { public string Name => "VendorX NextGen Firewall"; public string Vendor => "VendorX"; public string DeviceType => "firewall"; private readonly HttpClient _httpClient; public VendorXFirewallConnector(IHttpClientFactory factory) { _httpClient = factory.CreateClient("VendorXFirewall"); } public async Task<bool> TestConnectionAsync(ConnectorConfig config, CancellationToken ct) { _httpClient.BaseAddress = new Uri(config.Endpoint); _httpClient.DefaultRequestHeaders.Add("X-API-Key", config.ApiKey); var response = await _httpClient.GetAsync("/api/v2/health", ct); return response.IsSuccessStatusCode; } public async Task SubscribeAsync(ConnectorConfig config, Func<CanonicalEvent, Task> onEventReceived, CancellationToken ct) { _httpClient.BaseAddress = new Uri(config.Endpoint); _httpClient.DefaultRequestHeaders.Add("X-API-Key", config.ApiKey); while (!ct.IsCancellationRequested) { var payload = await _httpClient.GetFromJsonAsync<VendorXEventResponse>("/api/v2/events?minutes=5", ct); if (payload?.Events != null) { foreach (var raw in payload.Events) { var canonical = new CanonicalEvent ( Timestamp: raw.Ts, Source: config.DeviceIp, EventType: raw.Action == "deny" ? "KNOWN_BAD_IP" : "FIREWALL_ALLOW", UserName: raw.User, SourceIp: raw.Src, DestinationIp: raw.Dst, DestinationPort: raw.Dport, Action: raw.Action, RawFields: new() { ["reason"] = raw.Reason } ); await onEventReceived(canonical); } } await Task.Delay(TimeSpan.FromMinutes(5), ct); } } } record VendorXEventResponse(VendorXEvent[] Events); record VendorXEvent(DateTimeOffset Ts, string Action, string Src, string Dst, int Dport, string? User, string Reason);

Örnek 2: Syslog RFC5424 Tabanlı IDS Connector

Bazı vendor'lar (Cisco ASA, legacy IDS cihazları) syslog UDP/TCP stream gönderir. ShamashAi Agent syslog listener'ı built-in; custom connector sadece parse mantığını sağlar: csharp using System.Text.RegularExpressions; using ShamashAi.Agent.Abstractions; public class GenericSyslogIDSConnector : IConnector { public string Name => "Generic Syslog IDS"; public string Vendor => "Generic"; public string DeviceType => "ids"; private static readonly Regex _ciscoAsaRegex = new( @"(?<timestamp>\w+ \d+ \d+:\d+:\d+) (?<host>[\w.-]+) %ASA-(?<severity>\d)-(?<code>\d+): (?<message>.*)", RegexOptions.Compiled ); public Task<bool> TestConnectionAsync(ConnectorConfig config, CancellationToken ct) { // Syslog için test: UDP port açık mı kontrolü (opsiyonel) return Task.FromResult(true); } public Task SubscribeAsync(ConnectorConfig config, Func<CanonicalEvent, Task> onEventReceived, CancellationToken ct) { // ShamashAi Agent çekirdeği syslog stream'i dinler, raw satırı buraya gönderir // (Bu örnekte basitleştirilmiş; gerçekte SyslogListener DI üzerinden gelir) // Demo amaçlı: parse mantığı return Task.CompletedTask; } public CanonicalEvent? ParseSyslogLine(string raw, string sourceIp) { var match = _ciscoAsaRegex.Match(raw); if (!match.Success) return null; var severity = int.Parse(match.Groups["severity"].Value); var code = match.Groups["code"].Value; var message = match.Groups["message"].Value; // Örnek: %ASA-4-106023: Deny tcp src outside:203.0.113.55/52314 dst inside:10.1.1.5/22 by access-group var eventType = severity <= 3 ? "FIREWALL_CRITICAL" : "FIREWALL_WARNING"; return new CanonicalEvent ( Timestamp: DateTimeOffset.UtcNow, // Syslog timestamp parse edilir Source: sourceIp, EventType: eventType, UserName: null, SourceIp: null, // message içinden regex ile çekilebilir DestinationIp: null, DestinationPort: null, Action: "logged", RawFields: new() { ["syslog_code"] = code, ["syslog_message"] = message } ); } }

DI Registration ve Deployment

Custom connector assembly'sini Connectors-custom/ShamashAi.Connectors.VendorX.dll olarak agent klasörüne bıraktığınızda, agent Program.cs içindeki reflection tabanlı yükleyici otomatik register eder: csharp // ShamashAi.Agent/Program.cs (AfnTeknoloji tarafından teslim edilir) var builder = Host.CreateApplicationBuilder(args); // Built-in connectors builder.Services.AddSingleton<IConnector, WindowsEventLogConnector>(); builder.Services.AddSingleton<IConnector, M365AuditConnector>(); // Custom connectors: Connectors-custom/*.dll scan var customPath = Path.Combine(AppContext.BaseDirectory, "Connectors-custom"); if (Directory.Exists(customPath)) { foreach (var dll in Directory.GetFiles(customPath, "*.dll")) { var asm = Assembly.LoadFrom(dll); var connectorTypes = asm.GetTypes() .Where(t => typeof(IConnector).IsAssignableFrom(t) && !t.IsAbstract); foreach (var t in connectorTypes) { builder.Services.AddSingleton(typeof(IConnector), t); } } } var host = builder.Build(); await host.RunAsync(); Agent restart ettikten sonra dbo.devices tablosunda yeni connector görünür; ShamashAi Web UI > Ayarlar > Cihazlar bölümünden "VendorX NextGen Firewall" seçerek endpoint, API key gibi ConnectorConfig alanlarını doldurursunuz.

Event Akışı: Connector → Backend → Correlation

1. Connector SubscribeAsync içinde CanonicalEvent üretir. 2. Agent event'i HTTPS POST ile backend'e gönderir: POST /agent/ingest-batch (JSON array). 3. Backend event'i dbo.events tablosuna yazar; event_type değerine göre correlation engine tetiklenir: - AUTH_FAIL_USER event'i 10 dakikada 5+ kez gelirse → BRUTE_FORCE_DETECTED oluşturulur, dbo.incident_groups'a yazılır. - KNOWN_BAD_IP event'i gelirse → SOAR Engine POST /soar/block endpoint'ini çağırır (firewall'a otomatik block komutu gönderir). 4. Compliance modülü GET /compliance/evidence ile bu raw event'leri ISO 27001 Annex A.8.16 (izleme) ve KVKK Madde 12 (veri güvenliği) audit raporlarına dahil eder.

Pilot Kapsamında Custom Connector Teslimi

ShamashAi Pilot SOW (Statement of Work) belgesi standart olarak şunları kapsar:
  • 30 gün pilot lisansı (100 cihaz, 10 kullanıcı)
  • 1 adet özel vendor connector teslimi (eğer built-in connector'lar yetmezse)
  • Test ortamında PoC (Proof of Concept): Vendor'ın test/staging API'sine bağlanma, örnek event'lerin ShamashAi'da görünmesi, correlation kuralının tetiklenmesi.
Custom connector teslim süreci: 1. Vendor dokümantasyonu: API endpoint'leri, authentication (API key, OAuth2, mTLS), event şeması, rate limit bilgileri AfnTeknoloji'ye iletilir. 2. Geliştirme: AfnTeknoloji .NET 8 connector'ı 1-3 iş gününde yazar; IConnector interface'ini implement eder. 3. Staging test: Müşteri test ortamında agent'a DLL eklenir, restart edilir, ShamashAi Web UI'da yeni connector görünür. 4. Prodüksiyon: Başarılı pilot sonrası connector müşteriye teslim edilir; ShamashAi güncellemeleri bu connector'ı bozmaz. ShamashAi dokümantasyonu pilot süreçlerinin detaylarını (SLA, destek kanalları, fiyatlandırma) pilot teklif aşamasında paylaşır; bu blog yazısında genel akışı özetledik.

Roadmap: Marketplace ve Önceden Hazır Connector'lar

AfnTeknoloji roadmap'inde 2027 Q1'de ShamashAi Connector Marketplace planlanıyor:
  • Palo Alto Networks: syslog + REST API (Traffic, Threat, WildFire logs)
  • Cisco ASA: syslog CEF formatı, ACL deny events
  • CrowdStrike Falcon: Streaming API (detections, behavioral IOAs)
  • Microsoft Sentinel: webhook listener (Azure Monitor alert'leri ShamashAi'ya çekilir)
  • FortiGate: FortiOS syslog + FortiAnalyzer REST API
Marketplace'den connector indirmek ücretsiz olacak (ShamashAi lisansına dahil); sadece built-in olmayan egzotik vendor'lar için "özel geliştirme" ücreti (günlük danışmanlık) uygulanabilir. Şu an (2026 Eylül) Marketplace henüz yayında değil; pilot sürecinde manuel DLL teslimatı yapılıyor.

Teknik Limitler ve Karşılaştırma

| Özellik | Klasik SIEM (Splunk/QRadar) | ShamashAi Custom Connector SDK | |---------|------------------------------|--------------------------------| | Yeni vendor desteği süresi | 3-6 ay (vendor roadmap'ine bağlı) | 1-3 gün (pilot kapsamında) | | Ek maliyet | Vendor'a premium support ücreti | Pilot SOW'da 1 connector dahil | | Kodu görebilme | Kapalı kaynak, API kısıtlı | .NET 8 açık interface, kaynak kodunu siz de yazabilirsiniz | | Upgrade riski | Vendor major release ile connector bozulabilir | Interface kontratı korunduğu sürece bozulmaz |

Gerçek Dünya Senaryosu: Banka Şubesi Yeni Nesil Firewall

Bir banka şubesine 10 adet yeni nesil firewall cihazı yerleştiriliyor. Vendor'un SIEM entegrasyonu Splunk için var ama aylık 2000 EUR; QRadar için connector henüz yok. ShamashAi pilot kapsamında: 1. Gün 1: Vendor'ın REST API dokümantasyonu (28 sayfa) incelenir; authentication OAuth2, event formatı JSON. 2. Gün 2: AfnTeknoloji connector'ı yazar; TestConnectionAsync OAuth2 token alır, SubscribeAsync 5 dakikada bir /api/v2/logs çeker. 3. Gün 3: Staging ortamda test edilir; örnek 500 event ShamashAi'ya gelir, KNOWN_BAD_IP event'leri correlation engine'de "Tehdit İstihbaratı" grubu altında görünür. 4. Gün 7: Prodüksiyon agent'lara DLL dağıtılır; 10 cihazdan dakikada ~200 event toplanır. Toplam maliyet: pilot dahil, ek ücret yok. Alternatif senaryoda Splunk Add-on için 2000 EUR/ay × 12 = 24000 EUR/yıl ödenirdi.

dbo.events Tablosunda Custom Connector Event'leri

Custom connector'dan gelen event'ler diğer tüm event'lerle aynı tabloya yazılır: sql SELECT TOP 100 event_id, timestamp, source, -- '192.168.50.10' (VendorX firewall IP) event_type, -- 'KNOWN_BAD_IP' source_ip, -- '203.0.113.45' destination_ip, action, -- 'blocked' raw_fields -- JSON: {"reason": "GeoIP block", "vendor": "VendorX"} FROM dbo.events WHERE source = '192.168.50.10' AND timestamp >= DATEADD(hour, -1, GETUTCDATE()) ORDER BY timestamp DESC; Bu event'ler üzerinde ShamashAi SOAR Engine otomatik aksiyon alabilir: csharp // POST /soar/block endpoint'i custom connector event'ine tepki verir { "event_id": "evt_20260911_081525_abc123", "action": "block_ip", "target_ip": "203.0.113.45", "duration_minutes": 60, "reason": "KNOWN_BAD_IP detected by VendorX firewall" } SOAR Engine dbo.soar_actions tablosuna bu aksiyonu kaydeder; eğer firewall'ın REST API'si block desteği veriyorsa (yani connector IBlockableDevice interface'ini de implement ediyorsa), agent firewall'a otomatik block komutu gönderir.

Limitler ve Dürüst Notlar

  • Connector geliştirme .NET 8 bilgisi gerektirir: Kendi connector'ınızı yazmak istiyorsanız C# async/await, HttpClient, dependency injection kavramlarına aşina olmalısınız. AfnTeknoloji pilot kapsamında bunu üstleniyor; eğer siz yazarsanız AfnTeknoloji code review yapar.
  • Rate limit sorumluluğu müşteride: Vendor API'sinin rate limit'i (ör. dakikada 60 request) varsa, connector içinde Task.Delay ayarlaması doğru yapılmalı. ShamashAi bunu otomatik hesaplamıyor; PollingInterval config parametresini manuel ayarlarsınız.
  • Syslog parse regex kırılgandır: Vendor syslog formatını değiştirirse (ör. Cisco ASA major upgrade) regex güncellenmeli. ShamashAi built-in connector'ları AfnTeknoloji güncelliyor; custom connector'lar için müşteri ya da pilot destek kapsamı geçerli.
  • Event volume hesaplaması pilot öncesi yapılmalı: VendorX firewall dakikada 500 event üretiyorsa, 10 cihaz × 500 = 5000 event/dakika = 216 milyon event/ay. ShamashAi lisansı cihaz sayısına göre; event volume SQL Server disk planlamasını etkiler (dokümantasyonda 1 milyon event ~500 MB tahmin edilir).
  • Marketplace henüz yok: 2027 Q1'e kadar connector'lar manuel DLL teslimatı ile sağlanır; self-service indirme portalı roadmap'te.
ShamashAi Custom Connector SDK, orta ölçekli Türk firmalarına vendor bağımsızlığı kazandırır. Vendor'ınız SIEM entegrasyonunu desteklemiyor ya da pahalı Add-on satıyorsa, pilot kapsamında 1-3 günde çözüm teslim edilir. .NET 8 tabanlı açık mimari sayesinde upgrade güvenliği sağlanır; core agent güncellenirken custom connector'larınız bozulmaz. Pilot programı 30 gün ücretsiz: shamashai.com.tr/iletisim
Paylaş

Bu konuyu projenize uygulayalım

Pilot programı kapsamında ürünü gerçek altyapınızda 30 gün ücretsiz deneyin.