Yapay Zeka Kod Üretiminde İyi Promptlar Yeterli Değil, Koruma Mekanizmalarına İhtiyaç Var

Yapay Zeka Kod Üretiminde İyi Promptlar Yeterli Değil, Koruma Mekanizmalarına İhtiyaç Var

May 20, 2026 ai-assisted development code security authorization multi-tenant systems structural constraints type safety backpressure vibe coding

AI Kod Üretiminde Güvenlik: Daha İyi Promptlardan Ziyade Sistem Mimarisi Gerekli

Teknoloji dünyasında klasik bir korku senaryosu var: bir kullanıcı yanlışlıkla başka bir müşterinin verilerine erişiyor. Bu tür hatalar güvenlik denetçilerinin uykusunu kaçırır, şirketleri yasal sorunlarla karşı karşıya bırakır. En can sıkıcı tarafı ise hiç kimsenin bunu istememesidir. Bu, bir tasarım anlaşmazlığı ya da hesaplı bir risk değildir—saf bir unutkanlık meselesidir.

Claude ve GPT gibi AI modellerinin günde binlerce satır kod ürettiği çağımızda bu sorun çok daha ciddi hale geldi. Sistem promptunuza ne kadar çok güvenlik notu eklerseniz ekleyin, ne kadar ayrıntılı yetkilendirme kuralları yazarsanız yazın—16.000 satırlık kod oluşturduktan sonra hala bir soru kalıyor:

Yazdırılan kodun gerçekten istediğiniz şeyi yaptığını nasıl bilebilirsiniz?

Davranışsal Kontroller Yeterli Değil (Başa Çıkmak Umuduna Kalmak)

AI destekli geliştirme ortamında güvenlik uygulamalarının çoğu, diyebileceğimiz "davranışsal kontrollere" dayanıyor. Yani modele kibar bir şekilde kuralları takip etmesini söylemek. "Her zaman yetkilendirmeyi doğrula", "Giriş doğrulamasını asla atla", "İzin kontrolleri için paylaşılan yardımcı fonksiyonu kullan"...

Bazen işe yarar. Sık sık yeterince işe yarar ki faydalı olsun, ama üretim ortamında güvenilir olmak için yeterli olmaz.

Sorun şu: davranışsal kontroller modelin şunları yapmasını gerektiriyor:

  • Kuralın var olduğunu hatırlaması
  • Uygulanması gereken yerleri tanıması
  • Yerel bağlamın telkin ettiği kısa yollardan kaçınması
  • Tüm kod tabanında aynı ilkeyi koruması

Sonra insan kodunu incelerken aynı şeyleri yapmalı. AI üretimi kodun patlaması çağında bu kaybedilmiş bir savaş.

Yapısal Kontroller: Kodun Kendisini Koruyabileceği Sistem

Yapısal kontroller farklı işler. Bunlar makine tarafından doğrulanabilen, hiç esneklik göstermeyen kısıtlamalar: derleyiciler, tip sistemleri, linterlar, test çalıştırıcıları.

Buradaki sihirli sözcük: reddetmek.

Yapısal bir kısıtlamanız olduğunda, kodunuz derlenemiyor—veya test geçemiyor—eğer o şartı sağlamıyorsa. AI'dan hiçbir şey hatırlamasını istemiyor, uyum umulmuyor. Kritik kurallarınızı doğrudan kodun yapısına gömüyorsunuz; ihlal etmek istemese bile neredeyse imkansız hale geliyor.

Burada "geri basınç" kavramı işin içine giriyor. Kodu bir kez üretip umut etmek yerine, geribildirim döngüsü kuruyorsunuz: kod üretimi başlıyor, yapısal kısıtlamaya tosluyor, hatayı girdi olarak alıyor ve yeniden deniyor. Döngü belirlenimli şekilde kapıya toslanana dek devam ediyor.

Aradaki fark şöyle: bir kontrol listesi ile kilitli bir kapı arasındaki fark.

Temel Sistem: Kurallar Nereye Yerleştirilmeli?

Kritik bir nokta: uygulanmaya değer olan kurallar zaten kesin bir şekilde ifade edilebilir.

"Bir kullanıcı, sadece doğrulanmışsa, müşteriyle ilişkiliyse ve kaynak onun müşterisi tarafından sahipleniyorsa kaynağa erişebilir."

Bu açık. Bu sınırlandırılmış. Bu belirsizlikten arındırılmış.

Ama İngiltere—yani dokümantasyon yazarak—bu kuralları uygulamak yanlış yol.

Kuralları yorumlar veya prompt talimatları olarak bırakmak yerine, kodunuzun tip sistemine gömün. "Doğrulanmış kullanıcı", "Doğrulanan müşteri üyeliği", "Sahip olunan kaynak" gibi koruma tipleri oluşturun. Derleyiciyi, bu parçaları yanlış şekilde bağlamaya kalkışan koda hayır demesi için programlayın.

Bunu yaptığınızda, Go ya da TypeScript kodu yazan AI modeli, biçimsel açıklamalar hakkında hiç bilmek zorunda kalmaz. Sadece kodun derlenip testleri geçmesi gerekir. Temel sistem—tip sisteminiz, yapıcılarınız, doğrulama fonksiyonlarınız—gerçek kaynak haline gelir, birinin system promptu değil.

Pratikte Nasıl Görünür?

Biçimsel bir tip sistemi kullanarak yetkilendirme kurallarınızı tanımladığınızı düşünün:

JWT jetonu sadece boş olmayan bir string ise geçerlidir
Doğrulanmış bir kullanıcı, üye ise müşteriye erişebilir
Bir kullanıcı, müşterisi sahipse kaynağa erişebilir

Bu kurallar, kodunuzda koruma tipleri ve yapıcılarına derlenir. Model, bu tipleri çevreleyerek çalışan kod üretir, onları atlamaya çalışmaz. Üretilen kod bir kontrolü atlamaya kalkarsa, tip sistemi bunu üretim ortamına gelmeden reddeder.

Bu, akıllı modeller için beklemek hakkında değildir. Günümüzün AI sistemleri zaten çoğu kod tabanını doğru şekilde üretebilir. Sınırlandırıcı faktör bilmektir. Ve bu bilgi, inşa ettikleri sistemden gelir.

Günümüz Yazılım Geliştirmesi için Daha Geniş Bakış

AI kod üretimi norm haline geldikçe, strateji değişiyor:

Eski yol: İnsanların güvenlik kurallarını takip eden kodu yazmasına güven. İnsanlar hatırlar. Kod incelemesi sorunları yakalar.

AI çağı: Makinenin kodu, biçimsel olarak tanımlanmış özelliklerle eşleştirmesini doğrulamasına güven. Sistemi öyle yapılandır ki ihlal, kasıtlı direniş gereksin, tesadüfi unutkanlık değil.

AI destekli geliştirmedir kullanırken bu geçiş önem kazanıyor. Altyapınızı ölçeklendirip daha yüksek hızda kod ürettikçe, yapısal kısıtlamalar gerçek doğru kaynağı haline geliyor, davranışsal umutlar değil.

En güzel kısım? Bu yöntem aslında AI promptlarınızı basitleştiriyor. Neden önemli olduğunu anlatan uzun metinler yazmak yerine, yapısal kuralları bir kez tanımlıyor, korumaları üretip geribildirim döngüsünün işlemesine izin veriyorsunuz.

Özet

Daha yetenekli sistemler geliyor. Fakat gerçek kullanıcı verileriyle çalışan üretim sistemleri için—özellikle tek bir hata her şeyi ifşa eden multi-tenant ortamlarda—yapısal geri basınç, model kapasitesinde kademeli iyileştirmelerden ağır basıyor.

AI'dan kuralları hatırlamasını istemeyi bırakın. Kuralları takip etmenin tek yol olduğu bir sistem inşa edin.

Read in other languages:

RU BG EL CS UZ SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN