İçeriğe geç
< ./SECURITY_PROFILE

> ./OMNISIGHT

Kendi sunucunuzda çalışan, uç nokta ağ görünürlüğü ve SIEM yönelimli bir ürün: bir uç nokta ajanı, yerel bir sunucu, bir operatör konsolu, kurulum paketleri ve lisans ile güncelleme için bir bulut kontrol düzlemi. İlginç olan büyüklüğü değil. İlk satırı yazmadan önce taahhüt ettiğim sınırlar ve onları tutmanın maliyeti.

Rol: tek tasarımcı ve geliştiriciGo · Python · React · LinuxDurum: geliştirme aşamasında

Ne yapıyor

Yönetilen uç noktalardaki ajanlar; bağlantı metadatasını, yazılım envanterini ve sistem metriklerini müşterinin kendi donanımında çalıştırdığı bir sunucuya bildiriyor. Sunucu bunları saklıyor, üzerinde tespit çalıştırıyor, kurulu yazılımları kamuya açık zafiyet verisiyle eşleştiriyor ve arama, alarm triyajı ile raporlama için bir operatör konsolunu besliyor.

Dört aşamalı akış: uç nokta ajanları metadata, envanter ve metrik topluyor; müşterinin kendi OmniSight sunucusu saklıyor ve tespit ediyor; operatör konsolu sorguluyor; raporlar ve alarmlar e-postaya ve müşterinin kendi webhook'una gidiyor.
> Topla, sakla ve tespit et, incele, bildir. Düz yollar her zaman açık. Kesikli yollar yalnızca operatör yapılandırdığında var.

Uç nokta ajanı

Go. Ağ metadatası, envanter, heartbeat, toplu metrikler.

Yerel sunucu

Python API, ilişkisel depo, RBAC, denetim kaydı, tespit, raporlama.

Operatör konsolu

React. Kontrol paneli, olay arama, alarm triyajı, zafiyetler.

Kontrol düzlemi

Lisanslama, güncelleme dağıtımı, yayılım durumu, toplu rapor aktarımı.

Zafiyet servisi

CVE akışı senkronizasyonu ve envantere karşı sürüm farkında eşleştirme.

Kurulum ve paketleme

macOS ve Linux kurulum, güncelleme ve kaldırma akışları.

Üç sınır

Bir izleme ürünü, yapısı gereği ağdaki en geniş erişime sahip şeydir. Bu onu bir araç olduğu kadar bir yükümlülük de yapar; cevaplanmaya değer tasarım soruları da onun bilerek neyi yapmayı reddettiğiyle ilgilidir.

01

Sözleşme olarak yalnızca metadata

Paket içeriği, istek gövdesi, başlık, çerez, çözülmüş TLS, komut satırı, uç nokta dosyası veya kimlik bilgisi yok. Bu yalnızca dokümanda değil, ürünün sözleşme metninde yazılı — dolayısıyla sonradan genişletmek bir özellik anahtarı değil, düzeltme sürecini gerektiren sözleşmesel bir değişiklik.

02

Yalnızca dışa doğru

Bulut hiçbir zaman müşteri ağına doğru bağlantı açmaz. Her alışverişi müşterinin sunucusu başlatır: lisans kontrolleri, güncelleme sorguları, aktarım gönderimleri. Benim altyapımın ele geçirilmesi, saldırgana içeri doğru hiçbir yol vermez.

03

Her yerde fail-closed

E-posta aktarımı, izin listesinde olmayan bir alıcıyı kuyruğa almak yerine reddeder. Zafiyet eşleştirmesi bir sürümü çözemediğinde tahmin yürütmeyi reddeder. Çalışma zamanı kapıları, eksik çalışmaktansa hiç başlamamayı seçer.

Müşterinin kendi altyapısı — uç nokta ajanları, kendi OmniSight sunucusu ve operatör konsolu — tek bir sınırın içinde duruyor. Yönetilen OmniSight servisleri bu sınırın dışında; yalnızca lisans, güncelleme ve yazılım sürümü isteklerini taşıyan, dışa doğru kesikli bağlantılarla erişiliyor.
> Sınırı geçen her ok dışarı bakıyor. Benim altyapımdan müşteri ağına doğru içeri giden bir yol yok.

Veri gerçekte nereye gidiyor

Telemetri müşterinin sunucusunda kalır. Benim altyapıma geçen şey kısa ve bilinçli bir listedir; listedeki her madde, o özellik onsuz imkânsız olduğu için oradadır — zafiyet eşleştirmek için yazılım adları ve sürümleri, rapor iletmek için toplu özetler, lisans ve güncelleme istekleri. İki liste arasındaki asimetri, tasarımın kendisidir.

What stays on your OmniSight server and what leavesNetwork events, alerts and verdicts, system metrics and endpoint inventory, and anything identifying your internal hosts or users all stay on your own server. Only software names and versions for vulnerability matching, aggregate report summaries for email delivery, and licence and update requests leave, and only when you configure them.Your data does not cross this lineStays on your serverYour OmniSight ServerNetwork events and connection metadataAlerts, verdicts, and investigation notesSystem metrics and endpoint inventory detailAnything identifying your internal hosts or usersLeaves only whenyou configure itOmniSight CloudVulnerability IntelligenceSoftware names and versions, forvulnerability matchingAggregate report summaries, foremail deliveryLicence and update requests
> Sol: hiçbir zaman çıkmayan her şey. Sağ: çıkabilecek olanlar, o da yalnızca yapılandırıldığında.

Savunulmaya değer iki karar

Kalıcı veri REST üzerinden gider, asla soket üzerinden

Konsol canlı güncellenir; bu genelde veriyi WebSocket üzerinden itmek demektir. Ben hiç içerik taşımayan bildirimler itiyorum — bir şeyin değiştiğine dair bir sinyal; ardından tarayıcı kimlik doğrulamalı REST yolundan yeniden çekiyor. Bu daha fazla iş ve fazladan bir gidiş-dönüş demek. Ama aynı zamanda soketin, veriyi okumanın daha az denetlenen ikinci bir yolu hâline gelmemesi ve yetkilendirmenin tam olarak tek bir yerde uygulanması demek.

Ayrıca yazdığım lab kesintisi bu kararın karşı ağırlığı: soket ve REST aynı arıza alanını paylaşmadığı için, REST ingest tamamen engellenmişken soket sağlıklı bildirmeye devam etti. İkisini ayırmak bana daha temiz bir yetkilendirme hikâyesi kazandırdı ve bir izleme kör noktasına mal oldu. İkisi de doğru.

Kendi sürümümü geri çektim

Kendi kurulum paketimin güvenlik incelemesinde, üzerinden geçip yayına devam etmenin savunulamayacağı kadar ciddi bir kusur buldum. Sessizce ileriye yama geçmek yerine yayımlanmış paketi geri çektim, sorunu kaynağında düzelttim ve düzgün şekilde yeniden derlenip incelenene kadar yayımlamadım. Eskisinin üzerini örtmek için yeni sürüm yayımlamak, eskisini makinelerde kurulu bırakır; geri çekmek bırakmaz.

Neyi farklı yapardım

Dokümantasyonun yapısız büyümesine izin verdim. Her zaman yüklenen küme sonunda on binlerce token'a ulaştı; çünkü üç ayrı doküman aynı sürüm geçmişinin kendi kopyasını biriktirmişti ve gerçekten kullanılamaz hâle geldi — hem başkaları hem benim için. Düzeltmek, bugünü anlatan dokümanları geçmişi anlatan bir changelog'dan ayırmak ve bu ayrımı bir gelenekle değil bir kontrolle zorunlu kılmak demekti.

Genel ders, tekrar tekrar öğrendiğim şey: kimsenin ölçmediği kural, zaten çiğnenmiş kuraldır. Bu sayfadaki her sınırın, aşıldığında bozulan bir karşılığı var — bir kapı, bir test, bir betik — çünkü yalnızca niyet olarak var olanlar tutmadı.

root@omnisight:~

> Önce reddedeceklerini tasarla. Özellikler onların bıraktığı şekle uyar.

Ürünün asla neyi toplamayacağına erken karar vermek, sonraki kararların çoğunu kolaylaştırdı; çünkü içerik gerektiren hiçbir şey masada değildi.