Logunuz Gerçekleşmeyen Bir Şeyi Kaydedemez

Çoğu yapay zeka güvenlik aracı izlere (artifact) bakar. Bir log kaydı, bir imza veya bir araç sonucu ararlar. Eğer bir araç sonucu sahteyse, sistem bunu işaretler. Eğer bir JSON bloğu bozuksa, sistem bunu yakalar.

Bunlar kolay başarısızlıklardır çünkü bir iz bırakırlar.

Asıl tehlike eksikliktir (omission). Eksiklik, hiçbir şeyin gerçekleşmemesi durumudur.

Sadece ekleme yapılabilen (append-only) bir logda, yokluk üç şekilde aynı görünür:

  • Gerçekleşmedi.
  • Henüz gerçekleşmedi.
  • Gerçekleşti ama hiç kaydedilmedi.

Log hiçbir şey göstermez. Denetim sorgusu (audit query) hiçbir şey döndürmez. Sessizlik, onay anlamına gelir.

Bunu üç tasarım kuralıyla düzeltebilirsiniz:

1. Sessizliğe bir zaman aşımı tanımlayın

Eğer bir ajan bir eylem gerçekleştirirse, bir denetçinin bunu onaylaması gerekir. Eksik bir imza, güvenliğinizde bir deliktir. "Beklemede" (pending) durumunun sonsuza kadar beklemesine izin vermeyin. Bir son tarih belirleyin. Eğer son tarih geçerse, sistem REVIEW_EXPIRED gibi bir terminal durum kaydetmelidir. Bu, boş bir alanı aranabilir bir hataya dönüştürür.

2. İddialar için atıf gereksinimini getirin

Ajanlar dünyayı tanımlamak için genellikle düz metin kullanırlar. Bir ajan, "dosya boştu" diyebilir. Eğer bunu destekleyecek bir araç sonucu yoksa, bu iddia tehlikelidir.

Eğer bir iddia gelecekteki bir eylemi etkiliyorsa, bir gözlem kimliği (observation ID) içermelidir. Ajanın doğruyu söyleyip söylemediğini tahmin etmeye çalışmayın. Sadece iddianın gerçek bir veri kaynağına işaret edip etmediğini kontrol edin. Atıf içermeyen bir iddia, hatalı biçimlendirilmiş (malformed) bir mesajdır.

3. Eylemler için iki olaylı bir ayrım kullanın

Bir ajan, e-posta göndermek gibi bir göreve başladığında, sonucu kaydetmeden önce çökebilir. Bu bir boşluk yaratır. E-posta gönderildi mi? Tekrar denemeli misiniz?

Şu akışı kullanın:

  • Benzersiz bir anahtarla bir INTENT olayı ekleyin.
  • Eylemi gerçekleştirin.
  • Bir OUTCOME olayı ekleyin.

Artık ara durumu görebilirsiniz. Eğer bir INTENT'iniz varsa ancak OUTCOME yoksa, sistemin tam olarak nerede başarısız olduğunu bilirsiniz. Tahmin yürütmek yerine durumu tutarlı hale getirebilirsiniz (reconcile).

Kural basittir: Sisteminizin kaydettiği her başarı için, o kayıt eksik olduğunda ne olacağını sorun. Eğer cevap "hiçbir şey" ise, bir kör noktanız var demektir.

Negatif durumlarınızı birinci sınıf kayıtlar (first-class records) olarak tasarlayın. Onlara isimler verin. Onlara sahipler atayın. Onların güvenlik kontrollerinizden (gates) geçememesini sağlayın.

Kaynak: https://dev.to/anp2network/your-log-cant-record-what-didnt-happen-2ga7

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi