Ana içeriğe geç

İzolasyon Bir Sınırdır, Bütçe Değil: Agent Egress Neden Bir Maliyet Modeline İhtiyaç Duyar

Sandbox'lar bir agent'ın nerede çalıştığını kısıtlar, ne kadar uzağa eriştiğini değil. İzolasyonu, hedefleri ve payload hacmini ölçen çalıştırma başına bir egress bütçesiyle birlikte kullanın.

Işık yayan fiber optik kabloların makro fotoğrafı; ağ egress yollarını ve veri akışı sınırlarını temsil ediyor.

İzolasyon çerçevesi ve kör noktası

İzolasyon ilkelleri — sandbox'lar, sanal makineler, syscall filtreleri — kodun nerede çalışabileceği sorusunu yanıtlamada mükemmeldir. Yürütme ortamını tanımlarlar: hangi binary'ler çalışabilir, hangi dosyalar okunabilir, hangi kernel çağrılarına izin verilir. Bu, üretilmiş kod veya keyfi araçlar çalıştıran her agent için gerekli bir katmandır. Ancak dış erişimin bir modeli değildir.

Kusursuz şekilde izole edilmiş bir sandbox içindeki bir agent yine de binlerce farklı hedefe binlerce giden istek gönderebilir. Sandbox, sürecin bir host ile mi yoksa on bin host ile mi konuştuğunu önemsemez; sürecin kutudan kaçmadığını önemser. Sürekli karşılaştığımız arıza modu kaçış değil. Erişimdir.

Getirilen bir belgedeki prompt-injection payload'ı yoluyla ele geçirilmiş izole bir agent düşünün. Agent syscall filtresini kıramaz. Host dosya sistemini okuyamaz. Ancak kendisine verilen ağ erişimini ve verilen kimlik bilgilerini kullanarak iç endpoint'leri numaralandırabilir, bağlamı küçük parçalar halinde sızdırabilir veya işe yarar veriyle yanıt veren birini bulana kadar üçüncü taraf API'leri yoklayabilir. İzolasyon korunur. Etki alanı yine de geniştir.

Agent güvenliği etrafındaki sektör konuşması, tehdit modellerini büyük ölçüde sınırın host olduğu container güvenliğinden miras almıştır. Agent'lar için sınır, agent'ın etkileyebileceği dış kimlikler, endpoint'ler ve veri akışları kümesidir. Bu küme sandbox tarafından kısıtlanmaz. Egress politikası tarafından kısıtlanır ve maliyet modeli olmayan bir egress politikası yalnızca izin verilen host'ların bir listesidir.

Bütçelenmiş bir kaynak olarak egress

Egress'i, her giden eylem başına borçlandırılan boyutlara sahip bütçelenmiş bir kaynak olarak ele alıyoruz. Faydalı bulduğumuz boyutlar şunlardır:

Close-up of a black keyboard with focus on the QWER keys

  • Farklı hedefler. Çağrı sayısı değil, iletişime geçilen benzersiz ağ endpoint'i sayısı. Tek bir host'a on bin çağrı, on bin host'a on çağrıdan farklı bir risk profilidir. Hedef sayımı DNS, IP ve port genelinde normalleştirilmeli ve yönlendirmeleri yeni hedefler olarak ele almalıdır.
  • Giden byte'lar. Header'lar, query string'ler ve request body'ler dahil olmak üzere süreçten çıkan payload hacmi. Bu, çağrı sayısı eşiklerinin altında kalan yavaş sızdırmayı yakalar.
  • Kimlik bilgisi kapsamı. Egress'in sunabileceği kimlikler ve token'lar kümesi. Dar bir hedefe geniş bir token'a izin veren bir bütçe yine de geniş bir bütçedir.
  • Zaman penceresi. Bütçenin geçerli olduğu aralık. Her saniye yenilenen bir bütçe bütçe değildir.

Uygulama, agent framework'ünde değil ağ sınırında olmalıdır. Framework düzeyindeki kontroller tavsiye niteliğindedir: agent'ın işbirliğine, tool wrapper'ının doğru kullanılmasına ve wrapper'ı atlayan hiçbir kod yolunun olmamasına bağlıdırlar. Bir ağ sınırı — bir proxy, bir service mesh sidecar'ı, egress arayüzündeki bir eBPF hook'u — hangi kütüphanenin başlattığından bağımsız olarak her paketi görür. Agent framework'ü bir bütçe talep edebilir; sınır onu uygular.

Sınır ayrıca bir terminal durumu yaymalıdır. Bir bütçe tükendiğinde, çalıştırma sessizce bozulmaz veya yeniden denemez. Tanımlı bir kurtarma yoluyla sonlanır: operatör bilgilendirilir, çalıştırma bütçe-tükendi olarak işaretlenir ve bir insan açıkça yeni bir bütçeyle yeni bir çalıştırmayı yetkilendirebilir. Bu, tükenmeyi yutulacak bir hata değil birinci sınıf bir sonuç haline getirir.

Tasarım kuralları

Süreçten çıkan her tool call bir bütçeyi borçlandırmalıdır. Bu, iç görünen çağrıları, önbelleğe alınmış bir DNS girdisini kullanan çağrıları ve agent'ın kendi kodu yerine bağımlılıklar tarafından yapılan çağrıları içerir. Süreç sınırından bir byte çıkıyorsa, bu egress'tir. Borçlandırma istekle atomiktir; borçlandırma başarısız olursa istek çıkmaz.

Bütçeler çalıştırma başına ve kimlik başınadır ve devredilmez. Bir çalıştırma, tanımlı bir başlangıcı ve sonu olan tek bir mantıksal görevdir. Bütçe o çalıştırmaya aittir; agent sürecine, kullanıcı oturumuna veya dağıtıma değil. Kimlikler ayrı ayrı kapsamlandırılır: bir kullanıcı adına hareket eden bir agent başka birinin bütçesini miras almaz. Kullanılmayan bütçe bir sonraki çalıştırma için biriktirilmez, çünWhite industrial robotic arm operating indoors in a modern factory setting](/media/server-rack-closeup-3b0bfb-b5562f.jpg)

Yalnızca isteği değil, borçlandırmayı, hedef sınıfını ve kararı da loglayın. Yalnızca URL'yi kaydeden bir log satırı olay sonrası analiz için yetersizdir. Bütçe borçlandırma miktarını, hedef sınıfını (örneğin: iç servis, üçüncü taraf API, genel web, bilinmeyen), kalan bütçeyi ve isteği izin veren veya reddeden politika kararını kaydediyoruz. Karar kaydı, bütçeyi denetlenebilir kılan şeydir. O olmadan bütçe bir sayıdır, bir kontrol değil.

Somut bir mekanizma

Kullandığımız bir uygulama, agent sandbox'ı ile ağ arasına bir forward proxy yerleştirir. Proxy, çalıştırma tanımlayıcısı ve kimlikle anahtarlanmış çalıştırma başına bir bütçe tablosu tutar. Her istekte proxy hedefi çözer, sınıflandırır, request header'ları ve body'den byte maliyetini hesaplar ve çalıştırmanın bütçesini tüm boyutlarda atomik olarak azaltmayı dener. Herhangi bir boyut negatife düşecekse, proxy agent'a bir ret döndürür ve kontrol düzlemine bir bütçe-tükendi olayı yayar. Kontrol düzlemi çalıştırmayı terminal duruma geçirir ve operatörü bilgilendirir.

Agent bütçe tablosunu asla görmez. Yeniden denenemez bir koşul olarak ele alması gereken bir ret görür. Bu kasıtlıdır: agent kalan erişimi hakkında akıl yürütememelidir, çünkü kalan erişimi hakkında akıl yürütebilen bir agent onun etrafından plan yapabilir.

Dürüst ödünleşim

Bütçe uygulaması gecikme ve operasyonel yüzey ekler. Her giden istek bir proxy atlaması, bir sınıflandırma adımı ve bir durum güncellemesi gerektirir. Tek bir bilinen endpoint'e yüksek frekanslı çağrılar yapan agent'lar için bu, az fayda sağlayan bir ek yüktür; bütçe etkin biçimde statiktir. Birçok hedefe yayılan agent'lar için ek yük tam da amaçtır.

Daha zor ödünleşim yanlış pozitiflerdir. Yeni bir hedef sınıfına başvurması gereken meşru bir çalıştırma bütçeye takılacak ve sonlanacaktır. Operatörler hızlıca yeni bir bütçe verebilmelidir ve verilen izin orijinaliyle aynı titizlikle loglanmalıdır. Kurtarma yolu yavaşsa, ekipler kesintilerden kaçınmak için varsayılan bütçeyi genişletecek ve kontrol dekoratif hale gelecektir. Bütçe ancak kurtarma yolu kadar iyidir.

İzolasyon gerekli olmaya devam eder. Yeterli değildir. Bir sandbox içinden on bin hedefe erişebilen bir agent, dokunabileceği veriler açısından önem taşıyan hiçbir anlamda izole değildir. Sınır nerede çalıştığını tanımlar. Bütçe ne kadar uzağa eriştiğini tanımlar. Her ikisi de mevcut olmalıdır ve ikincisi agent'ın itiraz edemeyeceği bir yerde uygulanmalıdır.

Bunun yanıtladığı sorular

Why is sandboxing alone insufficient for agent safety?

Sandboxing constrains the execution environment, not the external surface an agent can touch. A contained agent can still issue thousands of outbound requests to thousands of distinct destinations, so the failure mode is reach rather than escape.

What dimensions should an egress budget track?

Distinct destinations, bytes out, credential scope, and time window. Counting only calls misses fan-out to many hosts and slow exfiltration that stays under call-count thresholds.

Where should egress budgets be enforced?

At the network boundary — a proxy, service mesh sidecar, or eBPF hook — rather than in the agent framework. Framework-level checks depend on agent cooperation and can be bypassed by dependencies or alternate code paths.

What happens when an agent exhausts its egress budget?

The run terminates in a first-class budget-exhausted state. The operator is notified and can authorise a new run with an explicit new budget. Exhaustion is a defined outcome, not a silent retry.