Sorun: Ajan kendi kendini denetleyemez
Deno ekibi, üretim ortamında 7/24 çalışan ajanlar kullanıyor: Gelen alarmları inceleyen, Kubernetes komutları çalıştıran, veritabanını sorgulayan ajanlar. İşe yaramaları için geniş erişime ihtiyaçları var. Ama bu erişim, şifreleri ve anahtarları ajanın elinde tutmak demek.
Deno’nun 21 Mayıs’taki yazısındaki tespit net: Bir ajan kendi kendini denetleyemez. psql, kubectl, curl gibi araçlar da, onların kullandığı şifreler de aynı süreçte duruyor. Ajan kandırılırsa ya da yanlış bir karar verirse, önünde hiçbir engel yok.
Piyasadaki çözümlerin çoğu sadece HTTP trafiğini görebiliyor. Postgres ya da SSH gibi protokoller açıkta kalıyor. Claw Patrol bu boşluğu kapatmak için yazıldı ve MIT lisansıyla açık kaynak oldu.
Nasıl çalışıyor?
Bir tarafta ağ geçidi (gateway) denen tek bir sunucu var. Kurallar, şifreler, kayıtlar ve bir kontrol paneli orada duruyor. Diğer tarafta ajanların çalıştığı makineler var. Bu makineler ağ geçidine WireGuard ya da Tailscale ile bağlanıyor ve trafiklerini onun üzerinden geçiriyor. İstersen bütün makineyi, istersen tek bir komutu clawpatrol run ile yönlendirebiliyorsun.
Ağ geçidi üç iş yapıyor.
1. Şifreleri saklıyor. Ajan gerçek şifreyi hiç görmüyor. Ya hiç şifre göndermiyor ya da {{github_pat}} gibi bir yer tutucu gönderiyor. Ağ geçidi isteği yakalayıp gerçek değeri yolda ekliyor. Videoda ajan Postgres’e “x” gibi sahte bir şifreyle bağlanıyor ve yine de doğru sonuçları alıyor. Ajanın kayıtlarını okuyan ya da onu istem enjeksiyonuyla kandıran biri şifreye ulaşamıyor, çünkü şifre başka bir sunucuda.
2. Eylemi denetliyor. Kurallar sadece adrese değil, isteğin içeriğine bakıyor. Ağ geçidi şifreli bağlantıyı açıp içindeki protokolü çözüyor: HTTP yöntemi ve yolu, SQL komutunun türü ve tablosu, Kubernetes’te hangi kaynağa ne yapıldığı. Kurallar HCL adlı yapılandırma dilinde yazılıyor. Örneğin Deno’nun yazısındaki bir kural, ajanın Kubernetes’teki gizli değerlere (secrets) erişmesini tamamen engelliyor. Videoda ajan bir tabloyu silmeye çalışınca “şema değişiklikleri sadece migration PR’larıyla yapılır” mesajıyla reddediliyor.
Karar her zaman “izin ver” ya da “reddet” olmak zorunda değil. Bir isteği önce bir dil modeline kontrol ettirebilir, sonra Slack üzerinden bir insana onaylatabilirsin.
3. Her şeyi kaydediyor. Ajanın yaptığı her istek panelde görünüyor: Hangi SQL çalıştı, hangi API’ye ne gönderildi, ne cevap geldi. Bir şey ters gittiğinde onlarca servisin kayıtlarını tek tek taramak gerekmiyor.
Kuralları test etmek
Güvenlik kuralları da kod gibi bozulabiliyor. Claw Patrol, panelden gerçek istekleri kaydedip bir test klasörüne koymanı ve kural değiştiğinde clawpatrol test ile CI’da tekrar çalıştırmanı sağlıyor. Böylece bir kuralı gevşetirken neyi istemeden serbest bıraktığını görebiliyorsun.
Çekinceler
Deno, projenin henüz alfa aşamasında olduğunu ve desteklenen protokollerin kendi ihtiyaçlarına göre seçildiğini açıkça söylüyor. Videodaki deneyim de bunu doğruluyor: Kurulum zahmetli, bazı adreslerde trafik yakalanmadı. Ama yaklaşım doğru: Güvenliği ajandan rica etmek yerine, ajanın dışında bir yere koymak. Aynı fikri veri akışına uygulayan bir projeyi OpenAPPA yazımızda anlattık. Bu tür bir korumanın neden gerektiğini, kişisel ajan OpenClaw’ın ilk haftalarında yaşananları anlattığımız OpenClaw yazısında görebilirsin. Şifreyi ajandan saklama fikrini kum havuzuyla birleştiren bir başka açık kaynak projeyi NVIDIA OpenShell yazısında anlattık.
Düşün
- Bugün kullandığın ajanlardan hangisi, istese silebileceği bir veritabanının şifresini biliyor?
- “Ajan bunu yapmasın” diye yazdığın bir kural, ajanın dışında bir kontrole nasıl dönüşebilir?
Videoyu izle
Kaynaklar (4, İngilizce)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.