01
Denetim ve önceliklendirme
Bir şey onarılmadan önce, elimizde ne olduğuna bakarız: kod, mimari, bağımlılıklar, veri modeli ve işletim. Önceliklendirilmiş bir bulgu raporu ve temizlemenin mi yoksa bazı parçaların ya da tamamının yeniden yapılmasının mı daha uygun maliyetli olduğuna dair dürüst bir öneri alırsınız.
Tipik bulgular ve görevler
- Uygulamanın parçalarının birbirine nasıl bağlandığına ve en büyük risklerin nerede olduğuna dair genel bir bakış yok
- Kimsenin bilinçli olarak seçmediği eski veya güvensiz bağımlılıklar
- Tekrar eden mantık ve hiçbir işlevin artık kullanmadığı kod
- Uygulamanın bugün yaptığı işe uymayan bir veri modeli
Örnek: Yapay zekâ aracıyla geliştirilmiş bir rezervasyon uygulaması incelenir. Denetim, oturum açma ve veritabanının sağlam olduğunu, ödeme mantığının ise yeniden yazılması gerektiğini gösterir ve her yapı taşı için emek tahminiyle bir sıra sunar.
Denetim ve önceliklendirmeSayfa 1/4
02
Güvenlik sıkılaştırma
Bir yapay zekâ, testte çalışan işlevler geliştirir. Kimin neyi yapabileceğine dair kuralların tüm uygulamada geçerli olup olmadığını ise çoğu zaman kimse kontrol etmez. Uygulamanızı bir saldırganın gözüyle inceler ve açıkları kapatırız: tüm işlevler boyunca yetkiler, erişim bilgilerinin ve harici hizmetlerin ele alınışı, kötüye kullanıma ve kontrolsüz maliyetlere karşı koruma.
Tipik bulgular ve görevler
- Tek tek işlevlerde doğru olan ama uygulamanın tamamında doğru olmayan yetkiler
- Demoda hiç sınanmamış veri erişim kuralları
- Erişim bilgileri ve anahtarlar, bulunmaması gereken yerlerde
- Herkesin istediği kadar çağırabildiği, masrafı sizin cebinizden çıkan işlevler ve hizmetler
- Kimsenin bilinçli olarak seçmediği veya kontrol etmediği üçüncü taraf bileşenler
Örnek: Supabase kullanan bir Next.js uygulamasında veri erişim kuralları yeniden çizilir ve iki test hesabıyla sınanır, istemci koduna gömülmüş bir anahtar değiştirilip yenilenir ve harici hizmetlere yapılan pahalı çağrılara sınır konur.
1// api/config.ts
2
const API_KEY = "sk-live-…";
const API_KEY = process.env.API_KEY;
Bulgu 1 · Koddaki gizli anahtar
3app.get("/user", async (req, res) => {
4
db.users.find(req.query.id)
db.users.find(session.userId)
Bulgu 2 · Yetki
5});
2 bulgunun 2'si giderildi
Güvenlik sıkılaştırmaSayfa 2/4
03
Kararlılık ve yeniden düzenleme
Her değişiklik başka bir şeyi bozuyorsa, kodun kendisinde bir güvence ağı yoktur. Hataları gideririz, tekrar eden ve ölü kodu temizleriz, yapıyı ve veri modelini düzenleriz; testler ve her değişiklikte çalışan otomatik bir kontrol ekleriz, böylece uygulama yeniden güvenle değiştirilebilir.
Tipik bulgular ve görevler
- Oturum açma, ödeme veya çekirdek işlev için otomatik test yok
- Raporlanmak yerine sessizce kaybolan hatalar
- Aynı mantık birkaç yerde, her biri biraz farklı, ve tutarlı bir yapı yok
- Yeşil olan ama önemli hiçbir şeyi kontrol etmeyen testler
Örnek: Bir web uygulamasının en kritik üç akışına otomatik testler eklenir, ardından tekrar eden indirim mantığı tek bir yerde birleştirilir ve her commit'te çalışan bir kontrol kurulur.
Kararlılık ve yeniden düzenlemeSayfa 3/4
04
Production readiness ve işletim
Dizüstü bilgisayarda çalışan bir uygulama henüz bir ürün değildir. Dağıtımı, ayrı ortamları, izlemeyi, yedekleri ve performansı öyle kurarız ki bir kesintiyi müşteri bildirmeden önce fark edersiniz ve barındırma ile yapay zekâ hizmetlerinin ne kadara mal olacağını bilirsiniz.
Tipik bulgular ve görevler
- Test ve canlı ortam ayrılmamış
- Yedek yok ya da hiç denenmemiş bir geri yükleme
- İzleme yok: kesintiler ancak müşteri şikâyetleriyle fark ediliyor
- Kullanım arttıkça barındırma ve yapay zekâ hizmeti maliyetleri belirsiz
- Yapay zekâ araçlarının ve hizmetlerinin verilerinizle ve erişimlerinizle neler yapabileceği belirsiz
Örnek: Vercel ve Supabase üzerindeki bir uygulama, ayrı hazırlama ve canlı ortamlar, denenmiş bir geri yüklemeyle otomatik yedekler, hata artışlarında bir uyarı ve verilerin yapay zekâ sağlayıcılarına nereden aktığını gösteren bir genel bakış alır.
Production readiness ve işletimSayfa 4/4