Bölüm 15: Prompt Guard¶
Prompt Guard Amacı¶
Prompt Guard, doğrudan veya dolaylı prompt injection risklerini yönetmek için kullanılan merkezi koruma katmanıdır. Amaç yalnızca belirli anahtar kelimeleri yakalamak değil; AI akışını etkilemeye çalışan zararlı veya manipülatif içerik kalıplarını kurumsal politika altında yönetmektir.
Prompt Guard sayfası (/admin/prompt-guard, menüde Prompt Koruması) beş sekmeden oluşur:
- Kurallar — yeniden kullanılabilir prompt guard kuralları. Bir kural desen tabanlı, sınıflandırıcı modeli tabanlı veya güvenlik konusu (Safety Topics) tabanlı olabilir.
- Desenler — özel (custom) anahtar kelime ve regex desenlerinin kütüphanesi.
- Desen Grupları — desenleri topluca kurallara bağlayan gruplar.
- Sınıflandırıcı Modeller — eğitilmiş konu sınıflandırıcı modellerinin yüklenmesi ve izlenmesi.
- Safety Topics — ModernBERT tabanlı güvenlik konusu kategorilerinin kataloğu.
İlk üç sekme geleneksel desen tabanlı taramayı, son ikisi makine öğrenmesi tabanlı sınıflandırmayı oluşturur. İçerik moderasyonu (toksisite, nefret söylemi vb.) bu sayfanın değil, kendi kural sayfasının konusudur (aşağıda ayrı bölüm).
Kurallar Sekmesi¶
Bu sekme, prompt koruma kurallarının oluşturulduğu ve yönetildiği ana görünümdür.
Kural Tablosu Sütunları:
- Ad: Kuralın görünen adı; altında kural kimliği (ID) gösterilir.
- Kaynak Türü: Kuralın hangi içerik kaynağını taradığı. Emekliye ayrılmış bir tür taşıyan kurallar "hiçbir trafikle eşleşmez" rozetiyle işaretlenir.
- Desen Grubu: Kuralın eşleşme kaynağı. Desen kurallarında bağlı desen grubu rozetleri, sınıflandırıcı kurallarında modelin alan adı (ör. "Automotive"), güvenlik konusu kurallarında seçili kategori etiketleri görünür.
- Tekil Desenler: Kurala doğrudan bağlı özel desenler.
- Öncelik: Kural önceliği (1–100).
- Durum:
etkin/devre dışı. Etkin olan ama ne global ne de Access Management'ta atanmış kurallar ek olarak "kimseye uygulanmıyor" rozetiyle işaretlenir — böyle bir kural hiçbir isteği taramaz (v1.3.0). - İşlemler: Düzenle ve Sil; Access Management'ta kopyası (klonu) olan kurallarda ayrıca Atamalara Uygula düğmesi.
Kural Oluşturma¶
Kural oluşturma/düzenleme penceresi şu alanları içerir:
- Ad: Kuralın görünen adı (ör. "Finans Prompt Guard"). Kural kimliği ada göre otomatik oluşturulur.
- Kaynak Türü: Kuralın hangi içerik kaynağını tarayacağı (aşağıda).
- Eşleşme Kaynağı (mod seçimi): Üç düğmeyle geçilir ve üçü aynı kuralla bir arada kullanılamaz:
- Desen Grupları — yeniden kullanılabilir gruplar ve kurala doğrudan bağlanacak tekil özel desenler. Yeni kurallarda varsayılan olarak
builtin-defaultgrubu seçilidir. - Sınıflandırıcı Model — eğitilmiş bir konu sınıflandırıcı modeli (aşağıda).
- Güvenlik Konuları — ModernBERT güvenlik konusu kategorileri (aşağıda).
- Öncelik: 1–100 arası değer (varsayılan 100). Anlamı kural ailesine göre değişir; bkz. "Kural Aileleri ve Çalışma Sırası".
- Kural Etkin: Kuralın aktif olup olmadığı. Devre dışı kurallar çalışma zamanında değerlendirilmez.
- Tüm Kullanıcılara Uygula (Global): Anahtar kapalıyken kural atanana kadar hiçbir kullanıcıya uygulanmaz; açıkken atama olmadan tüm kullanıcılara uygulanır.
Sınıflandırıcı ve güvenlik konusu modlarında desen seçimi yapılamaz; bu kurallar yerleşik desen tarayıcısının devralınmış fallback'ini de kullanmaz — desen denetimi yalnızca açık desen seçimiyle yapılır.
Kaynak Türleri (Source Type)¶
Yeni kurallarda dört aktif kaynak türü seçilebilir:
- user_prompt: Kullanıcının doğrudan yazdığı prompt metni. En yaygın tarama kaynağıdır.
- external_document: İsteğe satır içi eklenmiş belgelerin metni — claude.ai ekleri,
documentvefileparçaları. Dosyalar hiçbir zaman indirilmez. - tool_result: AI modelinin kullandığı araçların (function calling) döndürdüğü çıktılar. Araç sonuçlarına enjekte edilen zararlı yönergeler bu kaynakta izlenir.
- system_context: Yalnızca explicit proxy üzerinde ve yalnızca cihazın sistem prompt taraması açıkken üretilir.
retrieved_context ve response_chunk türleri emekliye ayrılmıştır (v1.3.0 davranış değişikliği): hiçbir trafik bu etiketleri üretmediği için bu türe kapsamlanan bir kural hiç çalışmaz. Bu türü taşıyan eski kurallar değeriyle korunur, uyarıyla işaretlenir ve yalnızca devre dışı olarak kaydedilebilir — kaynak türünü değiştirin ya da kuralı silin.
Kural Aileleri ve Çalışma Sırası¶
Bir kullanıcının karşısına aynı anda birden çok kural çıkabilir; bunlar üç bağımsız ailede çözümlenir (v1.3.0 davranış değişikliği):
- Desen (pattern) ailesi: Eşleşen her desen kuralı çalışır — sıralama önce dar hedefe (kullanıcı > grup > rol), sonra küçük öncelik numarasına göredir — ve ilk bloklayan karar verir. Önceden motor tek bir "kazanan" seçiyor ve diğerlerini sessizce öldürüyordu.
- Sınıflandırıcı (classifier) ailesi: Kaynak türü başına yalnızca bir sınıflandırıcı kuralı değerlendirilir.
- Güvenlik konusu (safety-topic) ailesi: Kaynak türü başına yalnızca bir güvenlik konusu kuralı değerlendirilir.
Sınıflandırıcı veya güvenlik konusu kuralı, kullanıcının desen kurallarını susturmaz: desen zinciri her ingress'te ayrıca çalışır. Değerlendirilmeyen kaybeden kural artık görünürdür: kullanıcının etkin politikasında "X tarafından gölgelendi" olarak listelenir ve Access Management'ta atama yapılırken aynı ailedeki başka bir kuralı gölgeleyecek atamalar için uyarı gösterilir.
Diğer v1.3.0 değişiklikleri:
Role "*"bir Prompt Guard kuralında artık her ingress'te açık wildcard'dır (önceden yalnızca tarayıcı/transparent proxy bu değeri kabul ediyordu).- Etkin politika görünümü çalışma zamanının kendi eşleştiricisini kullanır: devre dışı ve etkisiz kütüphane kuralları listelenmez, rol/grup karşılaştırmaları çalışma zamanıyla aynıdır.
- Kendi aktif yerleşik katalog deseni kalmayan desen kuralları (tüm yerleşik desenler hariç tutulmuş ya da yalnızca özel desenler seçilmiş) yerleşik tarayıcıyı hiç çalıştırmaz; karar yalnızca kuralın kendi desenlerinden gelir. Yerleşik tarayıcının katalogda görünmeyen ek denetimleri (
blocklist:jailbreak,regex:prompt-leak,regex:encoding-evasion) böyle bir kural altında artık bloklamaz.
Yükseltme etkisi: daha önce gölgelenen desen kuralları artık uygulanır — blok ve tespit satırlarının artması normaldir.
Kural Modları (Action)¶
Kuralın eylemi, kuralın oluşturulduğu sayfada değil, Access Management üzerinden atanır (bkz. Bölüm 11). Üç mod vardır:
- Block: Eşleşen isteği tamamen engeller. Yüksek riskli içerik kaynakları için uygundur.
- Sanitize: Zararlı içerik temizlenerek istek iletilebilir. Kullanıcı deneyimini kesintiye uğratmadan koruma sağlar.
- Detect Only: İstek değiştirilmeden iletilir ve eşleşme yalnızca kayıt altına alınır. İzleme ve pilot amaçlı kullanılır.
Bu esneklik, farklı içerik kaynaklarına farklı sertlikte tepki vermeyi sağlar (ör. user_prompt → block, external_document → sanitize).
Oturum kilitlenmesini önleyen iki v1.3.0 davranış değişikliği:
- Geçmiş tur redaksiyonu: Kodlama ajanları her istekte tüm konuşmayı yeniden oynatır. Geçmiş bir tura denk gelen block-modlu kural zinciri sanitize'e düşürülür; oturum geçmişteki bir eşleşme yüzünden kilitlenmez.
- Gateway'de redaksiyon: Unified gateway'de yeni mesaj dışındaki bir eşleşme (önceki mesaj, model yanıtı, sistem prompt'u, araç çıktısı) istek reddedilmek yerine iletilen istekten çıkarılır; eşleşen metin sağlayıcıya hiç ulaşmaz ve yanıt bunu
X-Arceris-Redactedbaşlığıyla belirtir. Reddedilmiş bir prompt istemci tarafından geçmişinde yeniden gönderildiğinde reddedilmek yerine redaksiyona uğrar.
Ayrıca gateway artık JSON'u katı doğrular: bir anahtarı iki kez içeren, aynı anahtarı farklı yazımlarla veren (messages / MESSAGES) veya 128 seviyeden derin iç içe geçen istekler 400 ile reddedilir.
Unified Gateway Tarafında Uygulama¶
Unified gateway (/gateway/v1) ve kullanıcı panelindeki Sohbet, çağırana atanmış Prompt Guard kuralını uygular: kuralın kendi desenleri, modu (block/sanitize/detect-only), güven eşikleri, hariç tuttuğu yerleşik desenler ve sınıflandırıcı modeli — tarayıcı ve kodlama ajanı yollarında olduğu gibi (v1.3.0 davranış değişikliği; önceden gateway yerleşik desenlerin tamamını kuralı yok sayarak tüm istek üzerinde çalıştırıyordu).
Bunun bir sonucu olarak gateway yalnızca kendisine Prompt Guard kuralı atanmış kullanıcıları tarar. Ataması olmayan kullanıcının trafiği taramadan geçer; sürekli tarama isteniyorsa varsayılan (default) kuralı atamayı unutmayın.
Desenler Sekmesi¶
Özel desenlerin oluşturulduğu ve yönetildiği kütüphanedir. Her desen şu alanlara sahiptir:
- Ad: Desenin görünen adı. Örnek: "SQL Injection Attempt". Desen kimliği ada göre otomatik oluşturulur.
- Tür:
keyword(büyük/küçük harf duyarsız alt dize eşleşmesi) veyaregex(düzenli ifade; geçersiz söz dizimi hata mesajı olarak gösterilir). - İfade: Keyword türünde aranacak metin, regex türünde düzenli ifade.
- Önem:
critical,high,medium,low— operatörün eşleşmenin tehlike derecesini hızlıca anlaması için risk etiketi. - Güven: Desenin eşleşme güvenilirliği (0–1, varsayılan 0.8). Düşük değerler daha fazla yanlış pozitif üretebilir.
- Açıklama: Opsiyonel açıklama metni.
- Desen Etkin: Desenin aktifliği.
Yerleşik desenler salt okunur olarak listelenir; yalnızca özel desenler düzenlenebilir ve silinebilir.
Desen Grupları Sekmesi¶
Desen gruplarının yönetildiği görünümdür. Gruplar, benzer risk tiplerindeki desenleri bir araya getirerek kurallara topluca bağlanmasını sağlar. Her grup için ad, açıklama ve Grup Desenleri seçimi yapılır; seçim listesinde yerleşik ve özel desenler birlikte yer alır. Yerleşik gruplar (ör. builtin-default) salt okunurdur; özel gruplar oluşturulabilir, düzenlenebilir ve silinebilir.
Yerleşik Default Grup¶
Ürünle birlikte gelen builtin-default grubu, bilinen prompt injection kalıplarını içeren yerleşik bir desen setidir. Yeni kurallar varsayılan olarak bu gruba bağlanır. Bu grup hızlı başlangıç sağlar; ancak kurumun kendi risk profiline göre özel desenler ve gruplar eklenmesi önerilir.
Access Management ile Atama¶
Kurallar yalnızca tanımlanmakla etkinleşmez. Prompt Guard kuralları Access Management üzerinden kullanıcı, grup veya rol hedeflerine bağlanır; atama sırasında her kural için ayrıca eylem (block/sanitize/detect_only) ve öncelik belirlenir. Prompt koruması böylece role, kullanıcıya veya kullanım bağlamına göre farklılaştırılır. Prompt Guard atamaları model erişimi vermez; erişimi Model Erişimi kuralları belirler (bkz. Bölüm 16).
Atama ve kütüphane ilişkisi:
- Access Management'a atanan her kural orada bir kopya (klon) oluşturur; klon kendi eylemini, önceliğini, etkinlik durumunu ve sınıflandırıcı eşik override'ını korur.
- Kütüphanedeki kuralı düzenlemek mevcut klonları otomatik değiştirmez. Kural kaydedildikten sonra sayfa, eski sürümü uygulayan klon sayısını gösterir; Atamalara Uygula düğmesi değişikliği klonlara taşır, güncel olmayan atamalar için uyarı bandı gösterilir (v1.3.0).
- Yeni bir atama aynı ailede başka bir kuralı gölgeleyecekse bu, atama yapılırken uyarıyla bildirilir.
- Etkin + atanmamış kurallar kural tablosunda "kimseye uygulanmıyor" ile işaretlenir; seeded varsayılan kurallar da buna dahildir.
Sınıflandırıcı Modeller Sekmesi¶
Geleneksel desen tabanlı taramanın ötesinde, bu sekme makine öğrenmesi tabanlı konu sınıflandırıcı modellerinin yüklenmesini ve yönetilmesini sağlar. Modeller, desen eşleşmesine dayanmayan olasılık temelli kararlar veren eğitilmiş sınıflandırıcılardır. Sınıflandırıcılar bağımsız bir kural türü değil, prompt guard kuralı üzerinden uygulanır: kural editöründe Sınıflandırıcı Model modu seçilir ve bir model bağlanır. Eski /admin/topic-classifier sayfası otomatik olarak /admin/prompt-guard sayfasına yönlendirilir.
Model Yükleme penceresi şu alanları içerir:
- Alan: Modelin sınıflandırdığı alan tanımlayıcısı (ör.
finance,healthcare,legal,automotive,malware_development). Alanlar sabit bir listeye bağlı değildir; yeni alan eklemek yeni model yüklemekle olur. - Dil: Dil kodu (varsayılan
tr, en fazla 8 karakter). - Eşik: Karar eşiği,
(0, 1]aralığında (varsayılan0.5). - Değerlendirme Doğruluğı ve Eğitim Örnekleri: Bilgilendirme amaçlı.
- Model Artefaktı JSON: Eğitilmiş model dosyası; yüklenmeden önce JSON olarak doğrulanır, geçersiz JSON hata bildirimi gösterir.
Model tablosu Alan, Dil, Mod, Eşik ve Durum sütunlarını gösterir; durum "Yüklü", "Yüklü değil" veya "Block için önerilmez" değerlerini alır. Arama ve sayfalama desteklenir; model silme, ona bağlı kurallarla birlikte kademeli olarak yapılır.
Kullanılabilirlik kuralları:
- Etkin bir kural, motorun yüklemediği bir modele bağlanamaz — kaydetme reddedilir ve gereken tarama servisi belirtilir. Yüklü olmayan model seçildiğinde editör bunu uyarıyla gösterir.
- "Block için önerilmez" durumlu modeller (ölçümle zararsız trafiği ayıramadığı saptanan modeller) için Block seçeneği kilitlidir; eylem Yalnızca Tespit'e döner.
- Sınıflandırıcı moduna geçildiğinde eylem varsayılan olarak Yalnızca Tespit (pilot) olur. Önce detect_only ile pilot yapın, Audit Log'daki güven değerlerini izleyin, gerekirse eşiği yükseltin ve ancak sonra Block'a geçin.
- Kurala özgü Güven Eşiği alanı boş veya 0 bırakılırsa modelin kendi eşiği kullanılır. Eşik atama düzeyinde de üzerine yazılabilir; atamanın geçerli eşiği Access Management hedef detayında görünür.
İki Çalışma Modu:
| Mod | Bağımlılık | Çalışma Şekli |
|---|---|---|
| TF-IDF | Yok — dağıtımın içinde çalışır | Eğitilmiş model dosyası yüklenir ve sınıflandırma doğrudan yapılır. |
| Embedding | Dağıtımla gelen tarama servisi | Metin, Türkçe dahil çok dilli embedding modeliyle değerlendirilir. |
Yerleşik (Seed) Modeller:
Arceris ilk başlatmada gömülü dosyalardan iki yerleşik sınıflandırıcı modeli otomatik yükler (yalnızca model tablosu tamamen boşsa):
automotive— TF-IDF modu. Otomotiv fikri mülkiyeti sızıntısını algılar. Eşik v1.3.0'da zararsız trafiğin eşiğin altında kalması için 0.75'e yeniden kalibre edildi; blok kullanımına uygun ölçülmüştür.malware_development— Embedding modu (çalışması için embedding modunun tarama servisi gereklidir). Kötü yazılım/açık geliştirme alanını algılar; ölçüm, zararsız geliştirici trafiğini gerçek pozitiflerden ayıramadığını gösterdiği için Block için önerilmez — yalnızca Yalnızca Tespit eylemiyle kullanılabilir.
Seeding idempotent'tir; istenmeyen modeller silinebilir, tablo boşalmadıkça tekrar yüklenmezler.
Safety Topics (Güvenlik Konuları)¶
Safety Topics sekmesi, ModernBERT-TR motorunun izleyebildiği güvenlik konusu kategorilerinin kataloğunu listeler (arama ve sayfalama ile). Sınıflandırıcı servisi hazır değilse sekme durumu bildirir ve tarama servisinin etkinleştirilmesini ister.
ModernBERT-TR, Türkçe prompt güvenliği için üretim sınıflandırıcısıdır ve paketle birlikte gelir: 405 bin Türk prompt ile eğitilmiş model, 10 sabit güvenlik kategorisini değerlendirir. Sürüm paketinde varsayılan olarak etkin gelir.
Bir kuralda Güvenlik Konuları modu seçildiğinde:
- İzlenecek kategoriler tek tek işaretlenir; eşleşen promptlar kuralın eylemine göre engellenir veya kayda geçer.
- "Sınıflandırıcı erişilemezse isteği engelle (fail-closed)" anahtarı: kapalı (varsayılan) olduğunda sınıflandırıcı servisi erişilemezse promptlar taranmadan iletilir ve bu durum Denetim Kaydı'nda NOT SCANNED olarak görünür; açık olduğunda servis erişilemediği sürece her prompt engellenir — servisin kapasitesini ve sağlığını izleyin.
- Sınıflandırıcı yalnızca kullanıcının o turda gerçekten yazdığı promptu okur; kodlama ajanının token sayma (
count_tokens) ve öneri, başlık, özet gibi yan istekleri bu taramaya girmez (v1.3.0 davranış değişikliği).
Aile semantiği: kaynak türü başına tek güvenlik konusu kuralı değerlendirilir; kaybeden kural etkin politikada gölgelendi olarak görünür.
İçerik Moderasyonu (Ayrı Sayfa)¶
İçerik moderasyonu Prompt Guard'ın bir paneli değil, kendi kural sayfasıdır: /admin/content-moderation (menüde İçerik Moderasyonu). Prompt Guard injection kalıplarına bakarken, İçerik Moderasyonu güvenlik konularını yargılar: kullanıcı istemlerinde ve model yanıtlarında toksisite, nefret söylemi, şiddet, cinsel içerik ve kendine zarar verme. Kategori listesi MLCommons tehlike taksonomisinden gelir (S1–S13: Şiddet İçeren Suçlar, Nefret Söylemi, İntihar ve Kendine Zarar, Seçimler vb.) ve seçilen arka uca göre sunulur.
Her kural iki şeyi bir arada tutar:
- Arka Uç: Sınıflandırmayı kim yapar — OpenAI Moderation (yönetilen) metni OpenAI'ya gönderir ve internet bağlantısı ister; Llama Guard / ONNX (çevrimdışı) sınıflandırmayı yerel olarak yapar ve ağdan hiç veri çıkarmaz. Servis/API adresi, anahtar, model ve zaman aşımı kural başına girilir.
- Politika: Kapsam (prompt / yanıt / ikisi; yanıt kapsamı, yanıtı tamamı belleğe almayı gerektirdiğinden atanan kullanıcıda kelime kelime akan yanıtı devre dışı bırakır), ihlalde eylem (izle — içeriği iletir ve ihlali kayda geçer, başlangıç için önerilir; engelle), eşik ve arka uç erişilemezse içeriği geçiren ya da engelleyen Hata Durumunda Geçir anahtarı.
Kural formundaki Test kutusuyla bağlantı sınanabilir ya da örnek metinle gerçek tarama çalıştırılıp kategori bazlı skorlar listelenebilir. OpenAI arka ucunda ne kuralda bir anahtar ne de kurulumda tanımlı bir anahtar yoksa kural hiçbir tarama yapamaz; tablo bunu "API anahtarı yok" uyarısıyla işaretler.
Atama Access Management'tan yapılır (İçerik Moderasyonu kural türü, bkz. Bölüm 11); buradaki düzenlemeler mevcut atamaları değiştirmez. Yalnızca aktif ve atanmış kurallar çalışır; atanmamış kural tabloda "Atanmamış" olarak görünür.
Denetim İzleri ve Test¶
- Tarayıcı yolunda verilen bir sanitize veya yalnızca-tespit kararı artık yalnızca Request Events'te değil, Audit Log ve SIEM akışında da yer alır; aynı metin için on dakikada bir kez yazılır — bir kodlama ajanı transkripti her turda yeniden oynattığı için (v1.3.0).
- Request Events'te tek bir kullanıcıya veya gruba atanmış bir kural artık "herkese uygulanıyor" olarak gösterilmez (v1.3.0).
- Kural setinizi gerçek çalışma zamanı seçimiyle sınayın: PII Playground'daki "Kullanıcı olarak test et" seçeneği, bir kullanıcı ve kanal (tarayıcı ya da API/ajanlar/gateway) seçerek gateway'in o kullanıcı için o kanalda seçtiği kurallarla tarama yapar (bkz. Bölüm 14).
- Hangi kuralın neyi engellediği ve gölgelenen kuralların listesi Audit/SIEM görünümlerinden izlenir (bkz. Bölüm 25).
Lisans¶
Prompt Guard sayfası prompt_guard_advanced özelliğini gerektirir. Sınıflandırıcı model yükleme ve silme topic_classifier lisans özelliğinin arkasındadır; Business ve Enterprise planlarında mevcuttur, Starter paketinde kullanılamaz.