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

ShamashAi Topology: 5 katman, sabit layout — neden serbest çizim yok?

ShamashAi Topology modülü, Visio'daki serbest şekil çiziminin yarattığı okunabilirlik kaosunu ortadan kaldırıyor. External services'ten internal network'e sabit 5 katmanlı mimari, her müşteride aynı düzende okunabilir ağ haritası sunuyor.

Pazartesi sabahı CISO'nun ekranında hangi diagram açık?

Pazartesi 08:45. CISO, haftalık yönetim sunumuna hazırlanıyor. Ekranında üç hafta önce network ekibinin çizdiği Visio dosyası: firewall ikonları sayfanın ortasında diyagonal yerleşmiş, switch'ler sağ üst köşede küme oluşturmuş, internet bağlantısı soldaki ok ile temsil ediliyor ama ok başlangıç noktası hangisi açık değil. "Bu nasıl okunuyor?" sorusunu sormadan önce yeni bir sekme açıp güvenlik danışmanının gönderdiği revize diagram'a bakıyor — bu sefer firewall üstte, switch'ler altta, ama hangi VLAN hangi segment'e bağlı anlamak için üç dakika zoom in-out yapmak gerekiyor. Denetim toplantısında ISO 27001 denetçisi "network topolojinizi görebilir miyim?" dediğinde hangisini açacak? İki diagram birbirine benzemiyor, her ikisi de doğru ama ikisi de hızlıca anlaşılabilir değil.

ShamashAi Topology modülü, bu serbest çizim kaosuna karşı bilinçli bir tercih yapıyor: sabit 5 katmanlı layout. Her müşteride aynı, her denetimde aynı, her raporda aynı. External services en üstte, internal network en altta, aralarında üç katman daha — ve bu sıralama değişmiyor. Bu yazıda ShamashAi'nin neden Visio benzeri drag-drop özgürlüğü sunmadığını, sabit layout'un hangi operasyonel kazançları getirdiğini ve 5 katmanın teknik detaylarını inceleyeceğiz.


Serbest çizimin operasyonel maliyeti

Klasik network diagram araçları (Visio, draw.io, Lucidchart) kullanıcıya maksimum esneklik sunar: istediğin yere ikon koy, istediğin yöne ok çiz, istediğin renkte boya. Bu özgürlük, ilk çizimde yaratıcı görünse de zaman içinde üç kritik soruna yol açıyor:

1. Takım içi tutarsızlık

Network ekibinden Ahmet, firewall'ları üstte çiziyor ("internet'ten gelen trafik üstten gelir" mantığı). Sysadmin Mehmet, firewall'ları altta çiziyor ("core switch üstte olmalı" mantığı). Güvenlik danışmanı Ayşe, firewall'ları ortada çiziyor ("DMZ perspektifi" mantığı). Üç diagram, üç farklı dünya görüşü — ama hepsi aynı ağı tanımlıyor. Sonuç: CISO'nun kafası karışık, denetçi hangisinin "resmi" olduğunu soruyor.

2. Zaman içinde bozulan tutarlılık

İlk diagram Ocak'ta çizilmiş, güzel düzenli. Mart'ta yeni VLAN ekleniyor — yer bulamadığınız için sağ köşeye sıkıştırıyorsunuz. Haziran'da yeni firewall pair gelince ortadaki boşluğa yerleştiriyorsunuz. Eylül'de diagram artık ilk halinin gölgesi: ikon yoğunluğu eşit dağılmamış, oklar birbirini kesiyor, zoom seviyesini değiştirince bazı yazılar okunamıyor.

3. Denetim sırasında açıklama yükü

ISO 27001 denetimi sırasında denetçi diagram'a bakıyor, iki dakika sessiz kalıyor, sonra soruyor: "Bu firewall'lar HA mı? DMZ hangi segment? Internet çıkışı bu mu yoksa bu mu?" Serbest çizim, denetçinin zihinsel haritasına uymadığı için her seferinde 5 dakikalık açıklama gerekiyor. Aynı açıklamayı her denetimde, her raporda, her sunum sırasında tekrarlıyorsunuz.

ShamashAi Topology, bu üç sorunu sabit layout ile çözüyor. Her müşteride aynı katman sırası, aynı ikon yerleşimi, aynı okuma sırası. Öğrenme eğrisi bir kere, sonrasında her diagram aynı mantıkla okunuyor.


5 katmanlı sabit layout detayları

ShamashAi Topology, ağ mimarisini yukarıdan aşağıya 5 katmanda temsil ediyor. Bu katmanlar fiziksel olarak değil mantıksal olarak ayrılıyor — yani bir cihaz birden fazla katmanda görünebilir (örneğin, bir firewall hem Public Edge hem Perimeter katmanında yer alabilir). İşte katmanlar:

Katman 1: External Services

En üst katman. Kuruluşunuzun kullandığı ama kendi network'ünüzde barındırmadığı servisler:
  • M365: Exchange Online, SharePoint, Teams
  • Website: Dışarıdan erişilen kurumsal web sitesi (CDN, hosting provider üzerinde)
  • Mail Provider: Harici e-posta güvenlik gateway'i (Proofpoint, Mimecast vb.)
  • Diğer SaaS: CRM, ERP bulut modülleri
Bu katman, dış dünyanın kuruluşa dokunduğu noktaları gösteriyor. ShamashAi, bu servislere yapılan bağlantıları dbo.events tablosunda event_type = 'M365_RISKY_SIGNIN' veya destination_fqdn LIKE '%.onmicrosoft.com' gibi kayıtlarla ilişkilendiriyor. Diagram üzerinde bu servislere tıkladığınızda, son 7 gündeki ilgili olaylar filtreleniyor.

Katman 2: Internet

Sembolik bir katman. Gerçek bir cihaz değil, mantıksal sınır çizgisi. Public internet ile iç ağ arasındaki ayrımı gösteriyor. Bu katman çoğu zaman görsel bir çizgi veya bulut ikonu ile temsil ediliyor, tıklanabilir değil.

Katman 3: Public Edge

Kuruluşun WAN IP adresleri. Dışarıdan erişilebilen, internet'e doğrudan bakan cihazlar:
  • Firewall'ların dış arayüzleri (WAN interface)
  • VPN gateway'leri
  • Reverse proxy sunucuları (eğer doğrudan public IP alıyorsa)
Bu katman, dbo.devices tablosunda device_role = 'public_edge' veya public_ip IS NOT NULL olarak işaretlenmiş kayıtlardan besleniyor. ShamashAi, bu cihazlara yapılan brute-force denemelerini (BRUTE_FORCE_DETECTED) veya known bad IP bağlantılarını (KNOWN_BAD_IP) bu katmanda görselleştiriyor. Public Edge katmanındaki bir cihaza tıkladığınızda, son 24 saatte o IP'ye yapılan başarısız bağlantı denemelerini gösteren mini-rapor açılıyor.

Katman 4: Perimeter

Ağın güvenlik sınırı. Tipik olarak:
  • Firewall (HA pair): Active-passive veya active-active konfigürasyonlar. ShamashAi, HA pair'i yan yana ikon olarak gösteriyor; aktif olanın üzerinde yeşil nokta, pasif olanın üzerinde gri nokta.
  • IDS/IPS: Inline güvenlik cihazları
  • Load balancer: Web sunucu önündeki yük dengeleyiciler (eğer güvenlik işlevi de görüyorsa)
Bu katman, dbo.devices.device_type = 'firewall' veya device_type = 'ids' olan cihazları içeriyor. ShamashAi, firewall'lar arasındaki failover olaylarını dbo.events.event_type = 'HA_FAILOVER' olarak kaydediyor ve Perimeter katmanında alarm ikonu gösteriyor.

Katman 4.5: Interface Row (VLAN'ler)

Bu katman, katman 4 ile 5 arasında tıklanabilir bir filtre satırı olarak duruyor. VLAN'lerinizi temsil ediyor:
  • VLAN 10 - Management
  • VLAN 20 - Production
  • VLAN 30 - Guest
  • VLAN 40 - DMZ
Her VLAN bir buton veya pill şeklinde gösteriliyor. Bir VLAN'e tıkladığınızda, Internal Network katmanı sadece o VLAN'deki cihazları gösterecek şekilde filtreler. Bu sayede 200 cihazlı bir ağda, sadece Management VLAN'deki 15 cihazı görüp diğerlerini gizleyebiliyorsunuz. Teknik olarak, bu filtre dbo.devices.vlan_id = @selected_vlan sorgusunu tetikliyor.

Katman 5: Internal Network

En alt katman. İç ağdaki tüm cihazlar:
  • Switch: Core, distribution, access switch'ler
  • Identity: Active Directory domain controller'lar, RADIUS server'lar
  • Server: Uygulama, web, dosya sunucuları
  • Database: SQL Server, PostgreSQL, Oracle cluster'lar
  • NAS: Network-attached storage
  • AP: Wireless access point'ler
  • Endpoint: Masaüstü, laptop, tablet (genellikle gruplanmış gösterilir: "120 endpoint")
Bu katman, dbo.devices tablosundaki çoğu kaydı içeriyor. ShamashAi, cihazları device_type ve device_role alanlarına göre otomatik ikonlayıp yerleştiriyor. Örneğin, device_type = 'server' ve device_role = 'domain_controller' olan bir kayıt, Internal Network katmanında "Identity" grubunun altında Domain Controller ikonu ile gösteriliyor.

Bucket-match priority: cihazlar hangi katmana düşüyor?

ShamashAi, bir cihazı hangi katmana yerleştireceğine bucket-match priority ile karar veriyor. Sıralama:

1. Manuel etiketleme (device.network_id) Eğer bir cihazı dbo.devices.network_id alanında elle belirli bir katman ID'sine atamışsanız, sistem bu önceliği alır. Örneğin, network_id = 3 (Public Edge) olarak işaretlediğiniz bir firewall, başka hiçbir kurala bakmadan Public Edge katmanına yerleşir.

2. IP-CIDR eşleştirme Manuel etiket yoksa, ShamashAi cihazın IP adresini dbo.sites.network_ranges tablosundaki CIDR bloklarıyla karşılaştırır. Örneğin:

sql SELECT layer_id FROM dbo.network_ranges WHERE @device_ip BETWEEN range_start AND range_end ORDER BY prefix_length DESC LIMIT 1;

Bu sorgu, en spesifik CIDR'ı (en uzun prefix) döndürür. 10.0.10.5 IP'si hem 10.0.0.0/16 hem 10.0.10.0/24 içinde kalıyorsa, /24 daha spesifik olduğu için öncelik o bloğun layer_id'sine verilir.

3. Other (varsayılan) Hiçbir kural uymazsa, cihaz Internal Network katmanına düşer ve "Other" alt grubunda gösterilir. Bu, bilinmeyen veya kategorize edilmemiş cihazları temsil eder.

Bu 3 seviyeli önceliklendirme, hem otomasyonu hem de esnekliği sağlıyor: çoğu cihaz IP-CIDR ile otomatik yerleşiyor, kritik cihazları elle ayarlayabiliyorsunuz, geri kalanı varsayılan sepete düşüyor.


Örnek .NET agent kod parçası: cihaz katman kaydı

ShamashAi .NET 8 agent'ı, keşfettiği cihazları SQL Server'a kaydederken device.network_id alanını belirliyor. İşte basitleştirilmiş bir kod örneği:

csharp using System.Net; using Microsoft.Data.SqlClient;

public class DeviceLayerMapper { private readonly string _connectionString;

public DeviceLayerMapper(string connectionString) { _connectionString = connectionString; }

public async Task<int?> DetermineLayerAsync(string deviceIp, string deviceType) { using var conn = new SqlConnection(_connectionString); await conn.OpenAsync();

// 1. Manuel etiket kontrolü var manualLayerId = await GetManualLayerIdAsync(conn, deviceIp); if (manualLayerId.HasValue) return manualLayerId;

// 2. IP-CIDR eşleştirme var cidrLayerId = await MatchCidrLayerAsync(conn, deviceIp); if (cidrLayerId.HasValue) return cidrLayerId;

// 3. Varsayılan (Internal Network) return 5; // layer_id = 5 -> Internal Network }

private async Task<int?> GetManualLayerIdAsync(SqlConnection conn, string deviceIp) { var cmd = new SqlCommand( "SELECT network_id FROM dbo.devices WHERE ip_address = @ip AND network_id IS NOT NULL", conn); cmd.Parameters.AddWithValue("@ip", deviceIp); var result = await cmd.ExecuteScalarAsync(); return result as int?; }

private async Task<int?> MatchCidrLayerAsync(SqlConnection conn, string deviceIp) { var ipInt = IpToInt(IPAddress.Parse(deviceIp)); var cmd = new SqlCommand(@" SELECT TOP 1 layer_id FROM dbo.network_ranges WHERE @ipInt BETWEEN range_start_int AND range_end_int ORDER BY prefix_length DESC", conn); cmd.Parameters.AddWithValue("@ipInt", ipInt); var result = await cmd.ExecuteScalarAsync(); return result as int?; }

private long IpToInt(IPAddress ip) { var bytes = ip.GetAddressBytes(); Array.Reverse(bytes); return BitConverter.ToUInt32(bytes, 0); } }

Bu kod, agent'ın her cihazı keşfettiğinde hangi katmana yerleştirileceğini belirleyen mantığı gösteriyor. DetermineLayerAsync metodu, önce manuel etiket arıyor, bulamazsa CIDR tablosuna bakıyor, hiçbiri uymazsa varsayılan Internal Network katmanına (layer_id = 5) atıyor.


Sabit layout'un ISO 27001 ve KVKK denetimine katkısı

ISO 27001:2022 Annex A.13.1.3, "network'lerin ayrımı" kontrolünü gerektiriyor. Denetçi, güvenlik bölgelerinin (DMZ, Production, Management) nasıl ayrıldığını görmek istiyor. Serbest çizimde, bu ayrımı göstermek için diagram'ı açıklaman gerekiyor — "şu ok DMZ'yi gösteriyor, şu renk Production" gibi. ShamashAi Topology'de, Interface Row (VLAN katmanı) bu ayrımı tek bakışta gösteriyor. Denetçi, VLAN 40 - DMZ'ye tıkladığında sadece DMZ cihazlarını görüyor, zaten ayrım net.

KVKK Madde 12, kişisel verilerin güvenliğini sağlamak için "teknik ve idari tedbirlerin" dokümante edilmesini istiyor. Network topology, bu dokümantasyonun kritik parçası. Sabit layout, her denetimde aynı görseli sunduğunuz için denetçi önceki yılın diagram'ını biliyor — değişiklikleri hemen fark ediyor. "Geçen yıl burada firewall pair vardı, şimdi neden tek firewall?" sorusu anında geliyor, bu da değişiklik yönetimi sürecinizin ne kadar sağlam olduğunu test ediyor.


Web arayüzünden topology kullanımı: Next.js API çağrısı

ShamashAi web arayüzü (Next.js), topology verilerini Fastify API'den çekiyor. İşte basit bir örnek:

javascript // app/topology/page.jsx (Next.js App Router) import { useState, useEffect } from 'react';

export default function TopologyPage() { const [layers, setLayers] = useState([]); const [selectedVlan, setSelectedVlan] = useState(null);

useEffect(() => { async function fetchTopology() { const res = await fetch('/api/topology/layers'); const data = await res.json(); setLayers(data.layers); } fetchTopology(); }, []);

const handleVlanClick = async (vlanId) => { setSelectedVlan(vlanId); const res = await fetch(/api/topology/devices?vlan_id=${vlanId}); const data = await res.json(); // Update layer 5 (Internal Network) with filtered devices setLayers(prev => prev.map(layer => layer.id === 5 ? { ...layer, devices: data.devices } : layer )); };

return ( <div className="topology-container"> {layers.map(layer => ( <div key={layer.id} className="topology-layer"> <h3>{layer.name}</h3> {layer.id === 4.5 && ( <div className="vlan-filters"> {layer.vlans.map(vlan => ( <button key={vlan.id} onClick={() => handleVlanClick(vlan.id)} className={selectedVlan === vlan.id ? 'active' : ''} > {vlan.name} </button> ))} </div> )} <div className="device-icons"> {layer.devices?.map(device => ( <DeviceIcon key={device.id} device={device} /> ))} </div> </div> ))} </div> ); }

Bu kod, 5 katmanı yükleyip render ediyor. Kullanıcı bir VLAN'e tıkladığında, handleVlanClick fonksiyonu /api/topology/devices?vlan_id=X endpoint'ini çağırıp Internal Network katmanını filtreli cihazlarla güncelliyor.


Gerçek senaryo: Haftalık yönetim sunumunda topology

Pazartesi sabahına geri dönelim. CISO, artık üç farklı Visio dosyası arasında gezmiyor. ShamashAi web arayüzünü açıyor, Topology modülüne giriyor, ekranında 5 katman var. Üst yönetim, "geçen hafta firewall değişikliği yaptınız, şimdi yapı nasıl?" diye soruyor. CISO, Perimeter katmanındaki firewall HA pair'ine tıklıyor — yeşil nokta aktif firewall'u gösteriyor, pasif olan hazır bekleme modunda. VLAN 10 - Management'a tıklıyor, Internal Network katmanı sadece domain controller, backup server ve monitoring araçlarını gösteriyor. Sunum 3 dakika sürüyor, herkes anlamış, kimse "bu ok ne anlama geliyor?" diye sormamış.

Aynı gün öğleden sonra ISO 27001 gözetim denetimi var. Denetçi, network ayrımını görmek istiyor. CISO aynı topology ekranını açıyor, Interface Row'daki VLAN'leri gösteriyor. Denetçi, "DMZ'de hangi sunucular var?" diye soruyor, CISO VLAN 40 - DMZ'ye tıklıyor, 4 sunucu (web server, reverse proxy, mail relay, DNS) görünüyor. Denetçi not alıyor, geçiyor. Toplam açıklama süresi: 90 saniye.

Bu senaryoda sabit layout'un katkısı açık: tekrar eden açıklama yükü sıfır. Herkes aynı düzeni biliyor, öğrenme eğrisi bir kere.


Limitler ve dürüst notlar

ShamashAi Topology'nin yapamadıkları ve bilinçli kısıtlamaları:

  • Serbest drag-drop yok: Bir cihazı istediğiniz yere sürükleyip bırakamazsınız. Katman değiştirmek için dbo.devices.network_id alanını manuel güncellemek veya IP-CIDR kurallarını değiştirmek gerekiyor. Visio benzeri özgürlük istiyorsanız, ShamashAi Topology yerine dış bir araç kullanmanız gerekir.
  • Fiziksel kablo bağlantıları gösterilmiyor: ShamashAi, hangi cihazın hangi switch portuna bağlı olduğunu otomatik keşfetmiyor. Mantıksal bağlantılar (firewall → VLAN → server) gösteriliyor, fiziksel port mapping yok.
  • Coğrafi dağıtım desteği sınırlı: Eğer şirketinizin 5 farklı şehirde ofisi varsa, her ofis ayrı site olarak tanımlanıyor ama tek bir topology ekranında tüm ofisleri aynı anda göremiyorsunuz. Site seçici ile ofis değiştirmeniz gerekiyor.
  • Real-time veri akışı yok: Topology ekranı her 60 saniyede bir otomatik yenilenmiyor. Manuel refresh butonu veya sayfa yenileme gerekiyor. Gerçek zamanlı trafik akışı animasyonu ("şu anda firewall'dan 2000 paket/sn geçiyor" gibi) yok.
  • Endpoint detayı sınırlı: Internal Network katmanında 200 endpoint varsa, hepsi tek bir "200 Endpoint" ikonu ile gruplanıyor. Her endpoint'i ayrı görmek için Devices sayfasına geçmek gerekiyor.

Sonuç: Okunabilirlik > Esneklik

ShamashAi Topology, okunabilirlik ve tutarlılık için çizim esnekliğinden bilinçli olarak feragat ediyor. Her müşteride aynı 5 katmanlı düzen, her denetimde aynı okuma sırası, her raporda aynı görsel dil. Visio'nun sağladığı serbest ifade özgürlüğü yerine, ShamashAi "herkesin anladığı ortak dil" tercihini yapıyor. Eğer kuruluşunuzda network diagram'ları her seferinde farklı şekilde çiziliyor, denetim sırasında açıklama yükü artıyor ve takım içi tutarsızlık sorun oluyorsa, sabit layout sizin için çözüm olabilir.

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.