İçeriğe geç

Dokümantasyon

Çalıştırmak — bizim sunucumuzda ya da sizinkinde.

İki durumda da aynı compose dosyası. Buradaki hiçbir şey yalnızca bulutta çalışan bir özellik değil; çünkü bir şirketin kendi çalıştıramadığı bir uyumluluk ürünü, denetleyemediği bir üründür.

SIEM’e akış

Denetim kayıtları aynı zamanda güvenlik telemetrisidir ve onları ilişkilendiren ekibin zaten bir aracı vardır. Saklanan her parti oraya aynalanır — taşıma değil aynalama: asıl kayıt olay deposunda kalır.

SplunkHTTP Event Collector. Her olay kendi zarfında, epoch saniyesi ve indeksinizle.
Microsoft SentinelLog Analytics veri toplama uç noktası, adını verdiğiniz özel tabloya.
Elasticsearch / OpenSearchBulk API, create ve belge kimliği olarak olay kimliğiyle — böylece tekrarlanan bir parti sessizce üzerine yazmak yerine yinelenen olarak reddedilir.
WebhookSatır sonuyla ayrılmış JSON alan herhangi bir HTTPS uç noktası.

Dördünde de tek bir alan yapısı. Adlar her satıcının kendi üslubu yerine dışa aktarma ve sorgu API’siyle eşleşir; böylece güvenlik duvarı kayıtlarıyla ilişkilendirme yapan bir müşteri alan adını bir kez yazar ve Splunk’tan Elastic’e geçmek kayıtlı aramalarını geçersizleştirmez.

# Generate the key once, then give it to both the dashboard and the processor.
dotnet run --project tools/Reldavi.Cli -- siem-key

Siem__Enabled=true
Siem__CredentialKey=<32 random bytes, base64>

Toplayıcı jetonları, yalnızca yapılandırmada duran bir anahtarla şifrelenerek saklanır. Panel ve işleyici aynı anahtarı taşımalıdır; anahtarı kaybetmek denetim verisini değil saklanan jetonları kaybettirir — yeniden girilmeleri gerekir.

Bağlantı başına ücretlendirmek yerine her ücretli plana dahildir. İkinci bir bağlantının marjinal maliyeti bir HTTP istemcisidir.

Kendi sunucunuzda

Tek bir compose dosyası PostgreSQL, ClickHouse, mesaj kuyruğu, iki API ve paneli ayağa kaldırır. İlk açılışta müşterinizi, sahip hesabınızı ve bir veri alım anahtarını oluşturur; anahtarı bir kez yazdırır.

cd deploy
cp .env.example .env          # change every secret in it
docker compose up -d

# The ingest key is printed once, into the ingestion service's log.
docker compose logs ingestion-api | grep "Ingest API key"
Yığındaki hiçbir bileşen dışarı bağlanmaz. Telemetri yok, lisans kontrolü yok, CDN bağımlılığı yok — internetsiz ortamda çalışır.

Yedekleme ve geri yükleme

Kendi sunucunuzda çalıştırmak, kopyaların sizde durması demek. Bu platformu sıradan bir uygulamayı yedeklemekten ayıran tek bir şey var ve onu ihtiyaç duyduktan sonra değil önce bilmek gerekir.

Olaylarınız ClickHouse'ta durur. O olayları kanıtlayan kontrol noktaları — Merkle kökleri, zaman damgası çapaları — PostgreSQL'de durur. Ayrı ayrı ikisi de pek işe yaramaz: kontrol noktası olmayan olaylar, değiştirilmediği gösterilemeyen satırlardır; olayı olmayan kontrol noktaları ise hiçliğin özetleridir. Bu yüzden yarım bir geri yükleme yumuşak inmez. Tam görünen, normal çalışan ve sessizce hiçbir şey kanıtlamayan bir iz üretir.
İki veritabanı, tek yedekbuild/backup.sh ikisini birlikte alır ve gördüğü sayıları bir manifest'e yazar; böylece geri yüklemenin karşılaştıracağı bir şey olur.
Ve yanındaki sırlarSiem__CredentialKey saklanan her SIEM toplayıcı jetonunu çözer. Kaybederseniz her müşteri kendi jetonunu elle yeniden girer. O .env içindedir, iki veritabanında da değil.
Önce kontrol düzlemiİki yarı da başarılı olduğu sürece sıra fark etmez. Bu sıra, ikinci yarı başarısız olursa kanıtın sağ kaldığını bilerek kalmanız için seçildi.
Sonra kanıtlayınGeri yükleme veri geri geldiğinde bitmez. reldavi verify mühürlü her günün hâlâ kendi kontrol noktasını verdiğini söylediğinde biter — ve bunu size başka hiçbir şey söylemez.

Tam yordam, ona güvenmeden önce yapılacak tatbikat dahil, depoda docs/runbook-backup-restore.md içinde. Delil paketleri kasten yedeklenmez: paket bir çıktıdır ve iki veritabanından yeniden yazılabilir; denetçiye verilmiş olan da zaten denetçinin sakladığı yerde durur.

Gözlemlenebilirlik

SDK, OpenTelemetry metrikleri yayar. Meter'ı kaydedin ve ilk satır için alarm kurun.

builder.Services.AddOpenTelemetry()
    .WithMetrics(metrics => metrics
        .AddMeter(ReldaviDiagnostics.MeterName));
Metric
reldavi.events.droppedTampon dolu olduğu için kaybedilen olaylar. Bunun için alarm kurun. Sıfır değilse denetim kapsamınızı kaybediyorsunuz.
reldavi.capture.durationInterceptor içinde, sizin iş parçacığınızda geçen süre. “Ek gecikme yok” vaadinin ölçülmüş hâli.
reldavi.events.deliveredVeri alım uç noktasının kabul ettiği olaylar.
reldavi.batches.failedYeniden denemeler tükendikten sonra vazgeçilen paketler.

Hız sınırları ve geri basınç

Alım uç noktası müşteri bazında hız sınırlıdır: bir token bucket, saniyede 50 istek, 200 burst ve her istek on bin olaya kadar taşıyabilir. Sınır, ne kadar denetim yazabileceğinizi değil istek başına düşen maliyeti sınırlar — azami parti boyutunda müşteri başına saniyede yarım milyon olay eder.

IP'ye değil müşteriye göre bölünürSunucularınızdan gelen her istek birkaç NAT adresinden çıkar; IP'ye göre bölmek ya sizi tek bir istemci sayıp kısardı ya da sizi başkalarından hiç ayırmazdı.
Sabit pencere değil, token bucketDenetim trafiği doğası gereği ani yükselir — gecelik bir iş saniyede on bin satır yazar. Sabit pencere, ortalama hızınız sınırın çok altındayken o yükselmeyi reddederdi.
Reddetme `Retry-After` taşırSınırı bir kesintiye değil geri basınca çeviren şey budur. Bu olmadan düzgün davranan bir istemci hemen tekrar dener ve yüklenmeyi büyütür. Buradaki her SDK buna uyar.
429 yüzünden hiçbir şey kaybolmazİstemci partiyi tutar ve yeniden dener. Olay kaybettiren şey, tamponun uç noktanın boşalttığından uzun süre hızlı dolmasıdır — ve o sessiz değil, sayılır ve alarm kurulabilir.

Kendi sunucunuzda mı? Bunlar RateLimiting altında yapılandırmadır. Varsayılanlar, bir müşterinin diğerlerini aç bırakamayacağı paylaşımlı bir kurulum için seçildi; tek müşterili kendi donanımınızda yükseltin.

İngilizce ve Türkçe

Arkasında İngilizce bir ürün duran çevrilmiş bir tanıtım sitesi değil. Panel, dışa aktarımlar, delil paketi ve içindeki doğrulama yönergeleri iki dilde de yazılmıştır ve herkes kendi dilini seçer — aynı müşteride İngilizce okuyan bir mühendisle Türkçe okuyan bir uyum sorumlusu aynı ize bakabilir.

Arama tüm alfabede büyük-küçük harf farkını yok sayaröztürk araması Mehmet Öztürk kaydını bulur. Yalnızca ASCII için yazılmış bir eşleme — şaşırtıcı sayıda sistemde varsayılan budur — Ö ile öyü farklı harfler sayar; o zaman bir Türkçe isim ancak büyük harfleri doğru tahmin edilirse bulunur. Üstelik kimsenin şikâyet etmeyeceği biçimde başarısız olur: hata vermez, yalnızca olması gerekenden az satır döndürür. Bir yürüyüş testi, tohum verisinden alınan bir ismin küçük harfli hâlini arar ve satırın geri gelmesini bekler.
Delil paketi iki dillidirHOW-TO-VERIFY.txt ikisini birden taşır; böylece paket, bir doğrulama yordamını elle çeviren biri olmadan denetçiye verilebilir.
Tarih ve sayılar okuyana göreSunucuya göre değil. Denetçinin yanlış sırada okuduğu bir zaman damgası, tartışma başlatan bir zaman damgasıdır.
KVKK yükümlülükleri Türkçe yazılır ve Türkçe denetlenir. Delili İngilizce çıkan bir uyum aracı, tam da en çok önem taşıdığı gün, zaman baskısı altında birinin çevirmesi gereken bir şey daha demektir.

Sırada ne okunur

Bir yerde takıldınız mı?

Şema, SDK kaynakları ve mimari notların tamamı açıktır. Bir şey belirsizse, bu bizim dokümantasyonumuzdaki bir hatadır. Bize yazın.