İncelenen iddia
Bu makale, doğru çerçevenin yenilik değil amplifikasyon olduğunu ve doğru yanıtın sistemin yeniden yazımı değil sınır kontrolü olduğunu savunuyor. Yeniden yazım çok yıllık bir programdır; amplifikasyon riski ise bu çeyrekte mevcuttur. Sınır kontrolleri ucuz, test edilebilir ve geri alınabilirdir; ayrıca sıradan yanlış yapılandırılmış otomasyonun zararını da azaltırlar — ki pratikte bu, kasıtlı bir düşmandan çok daha yaygın bir hasar kaynağıdır.
Yenilik değil, amplifikasyon
İnsan bir saldırgan dikkatle sınırlıdır. Bir kişi zihninde birkaç hipotez tutabilir, sonlu bir hızda yazabilir ve bağlam değiştirmenin bir maliyeti vardır. Bir agent sürüsü ise bütçe ve hız limitleriyle sınırlıdır. İkisi de yoksa, sürü hedefin kabul edeceği kadar genişler. Darboğaz, saldırganın bilişinden hedefin toleransına kayar.
Bu kayma en çok, bir legacy arayüzün üç belirli özellikten yoksun olduğu yerlerde önem taşır:
- Hız sınırlaması. Principal başına istek bütçeleri olmadan, bir agent uç durumu bulana kadar bir endpoint'i yoklayabilir. Bu eksiklik yeni bir delik değildir; daha önce içinden geçmenin pahalı olduğu eski bir deliktir.
- Idempotency anahtarları. Bir yeniden denemeyi yeni bir niyetten ayırt edemeyen bir yazma yolu, yeniden deneme baskısı altında yinelenen kayıtlar üretir. Agent'lar yeniden denemeyi agresif biçimde yapar çünkü onlar için yeniden deneme ucuzdur.
- Denetim izleri. Bir çağrı bir principal'a atfedilemiyorsa, bir operatör bir patlamayı bir hatadan ya da bir hatayı bir izinsiz girişten çok sonrasına kadar ayırt edemez.
Bu eksikliklerin olduğu yerlerde, bir agent bunları bir insan ekibinden daha hızlı bulur ve kullanır; daha zeki olduğu için değil, sıkılmadığı için. Arıza modu nadiren dramatik bir ihlaldir. Tükenme ve gürültüdür: gerçek kullanıcıları devre dışı bırakan hesap kilitlenmeleri, yeniden deneme yükü altında bozulan hizmet ve tekrarlanan kısmi yazmalardan kaynaklanan bozuk durum. Saatte hiçbir zaman birkaç yüzden fazla yazma görmemiş bir legacy sistem binlerce yazma görebilir ve serileştirme ile çakışma çözümüne dair varsayımları geçerliliğini yitirir.

Somut bir mekanizma bunu anlaşılır kılar. Idempotency anahtarı ve principal başına kota olmadan bir createRecord işlemini açığa çıkaran bir legacy SOAP veya REST endpoint'i düşünün. Zaman aşımında yeniden deneme politikası olan tek bir agent döngüsü, yavaş bir backend altında aynı mantıksal yazmayı birkaç kez gönderir. Her girişim sunucu için geçerli görünür. Sonuç, klasik anlamda bir güvenlik olayı değildir; elle uzlaştırılması gereken bir veri kalitesi olayıdır. Bir sürüyle çarpın, gerçek hasar uzlaştırma maliyetidir.
Sınırda işleyen kontroller
Müdahale edilecek faydalı yer, agent framework'ünün kendisinin içi değil, agent sınırıdır — agent framework'ü ile legacy arayüz arasındaki katman. Framework içindeki kontroller tavsiye niteliğindedir; agent yeniden yapılandırılabilir ve farklı bir framework bunları paylaşmaz. Sınırdaki kontroller ise hangi agent, satıcı veya script çağırırsa çağırsın uygulanır.
Ağırlığın çoğunu üç kontrol taşır.
Legacy arayüzlerde principal başına istek bütçeleri, agent framework'ünün dışında uygulanır. Legacy sistemin önündeki bir gateway, principal başına, endpoint başına, pencere başına istekleri sayar ve bütçenin ötesini reddeder veya kuyruğa alır. Bütçe, agent'ın iştahından değil, legacy sistemin gösterdiği toleranstan belirlenmelidir. Bu, güvenlik kararı olduğu kadar bir kapasite kararıdır.
Bir agent'ın erişebileceği her yazma yolu için idempotency gereksinimleri. Her yazma çağrısı istemci tarafından üretilen bir anahtar taşır. Gateway veya servis, anahtarı sonuçla birlikte saklar ve aynı anahtarın tekrarı, yazmayı yeniden yapmak yerine özgün sonucu döndürür. Bu, arayüz sözleşmesinde küçük bir değişiklik ve arıza modunda büyük bir değişikliktir: yeniden denemeler güvenli hale gelir ve kısmi yazma bozulması birikmeyi durdurur.
Keşif için salt okunur yansıtma. Agent'ların keşif amaçlı her şeyi bir replika üzerinden sorgulamasına izin verin. Kayıt sistemini açık, denetlenmiş çağrıların arkasında tutun. Keşif, agent'ların en çok trafik ve çağrı başına en az değer ürettiği yerdir; aynı zamanda eski bir replikanın en az zararlı olduğu yerdir. Ödünleşim dürüsttür: bir replika replikasyon gecikmesi getirir ve replikadan okuyup sonra kayıt sistemine yazan bir agent eski duruma göre hareket edebilir. Bu, arama ve triyaj için tolere edilebilir, işlemsel iş akışları için tolere edilemez. Sınır, bu ayrımı agent'ın muhakemesine bırakmak yerine açık
agent -> boundary gateway -> legacy interface
|
|- principal identity
|- per-endpoint budget
|- idempotency store
|- audit log (append-only)
|- read/write routing (replica vs system of record)

Gateway, bir isteğin atfedildiği, sayıldığı, tekilleştirildiği ve günlüğe kaydedildiği yerdir. Aynı zamanda bir politika değişikliğinin bir sürüm döngüsü yerine dakikalar içinde yürürlüğe girdiği yerdir.
Yeniden yazım neden yanlış ilk hamledir
Değiştirme programları yıllar alır. Ayrıca genellikle aynı argümanla gerekçelendirilirler — legacy sistemin güvensiz olduğu — bu da güvenlik gerekçesinin, bu çeyreğin maruziyetini azaltmayacak bir projeyi finanse etmek için kullanıldığı anlamına gelir. Bu arada amplifikasyon riski canlıdır. Bir agent sürüsü göçün tamamlanmasını beklemez.
Sınır kontrollerinin, değiştirmede olmayan üç özelliği vardır. Yeniden yazıma kıyasla ucuzdurlar, çünkü sistemin içinde değil önünde dururlar. Test edilebilirler, çünkü bir bütçe ve bir idempotency deposu güvenilmeden önce sentetik yükle denenebilir. Ve geri alınabilirler, çünkü çok sıkı olduğu kanıtlanırsa bir gateway politikası gevşetilebilir. Yeniden yazım bunların hiçbiri değildir.
Gözden kaçması kolay ikincil bir fayda vardır. Aynı kontroller, sıradan yanlış yapılandırılmış otomasyonun zararını da azaltır. Yeniden deneme hatası olan bir cron job, geçici bir hatada döngüye giren bir script, bir kuyruğu yeniden oynatan yanlış yapılandırılmış bir entegrasyon — bunlar legacy olaylarının gündelik nedenleridir. Principal başına bütçeler ve idempotency anahtarları, agent amplifikasyonunu ele aldıkları anda bunları da ele alır. Bu, altyapı işinde nadir bir özelliktir: tek kontrol, iki hasar sınıfı.
Önce ne yapmalı
Pratik sıralama kısadır. Bir agent'ın erişebileceği legacy arayüzleri envanterleyin ve her biri için principal başına bütçesi, yazmalarda idempotency anahtarı ve atfedilebilir denetim izi olup olmadığını kaydedin. Olmayanların önüne bir gateway koyun. Bütçeleri gözlemlenen toleranstan belirleyin. Keşif amaçlı okumaları bir replikaya yönlendirin. Ancak ondan sonra, sistemin kendisinin değiştirilmesi gerekip gerekmediğine karar verin — ve gerekiyorsa, değiştirme inşa edilirken sistemi güvende tutan şey yine sınır kontrolleri olacaktır.
Agent'ların legacy sistemleri yeni baştan tehlikeli hale getirdiği iddiası yarı yarıya doğrudur. Onları yeni baştan savunmasız hale getirmezler. Mevcut savunmasızlığı kullanmayı ucuzlatırlar ve bu, verimle ilgili bir sorundur ve verimle ilgili bir yanıtı vardır.
