Merhabalar.
Geçen hafta basit bir şey yaptım. Müşterim için Google AI Studio'da küçük bir "tadilat maliyet hesaplama" uygulaması kurdum. Sadece metin döndüren, kullanıcıya yaklaşık bütçe veren masum bir araç. Tek yaptığı iş ucuz bir metin modeline soru sorup JSON cevap almaktı.
Sonra faturaya baktım. 5 gün içinde 706 dolarlık Gemini kullanımı. Hem de uygulamamın çağıramayacağı modellerden: Veo video üretimi ve görsel üretimi. Yani benim hesap makinem video üretmiyordu bile.
Ne mi oldu?
AI Studio bir uygulamayı Cloud Run'a deploy ederken, koda sizin görmediğiniz bir "proxy" ekliyor. Amacı iyi niyetli: API anahtarınız tarayıcıda görünmesin diye isteği arka tarafa taşıyor. Ama bu proxy iki ölümcül zaafla geliyordu:
Birincisi, proxy her modeli geçiriyor. Uygulamam sadece tek bir ucuz metin modeli kullanıyor olsa bile, o açık kapıdan video ve görsel modelleri de çağrılabiliyor. İkincisi, deploy varsayılan olarak kimlik doğrulaması olmadan, herkese açık yayınlanıyor. Üstüne, bu proxy kodun içinde görünmüyor. Yani denetleyip kısıtlamanız mümkün olmayan bir kapı.
İşin acı tarafı şu: Romanya ve Ukrayna'daki sunuculardan (ikisi de VirusTotal'da "zararlı" olarak işaretli) önce tarama botları geldi, açık kapıyı buldu, sonra Google'ın kendi SDK'sıyla benim anahtarım üzerinden günlerce video ürettiler. Bedava video makinesi gibi kullandılar.
En sinir bozucu kısmı ise bu: Ben aylar önce o projeye 50 dolarlık aylık harcama limiti koymuştum. Limit 50 dolardı, harcama 638 dolara çıktı. 12 katı. Çünkü AI Studio'nun o limiti "Experimental" ve sert bir limit değil. Gecikmeli çalışıyor ve bu durumda hiç tutmadı.
Çıkardığım dersler (sizinki de olmasın diye):
Bir uygulamayı hızlı deploy etmek, onun güvenli olduğu anlamına gelmiyor. Özellikle "vibe coding" ile çıkardığınız araçlarda, deploy aşamasında platformun arkanızda ne açtığını bilmeniz şart.
API anahtarı internete açık bir uç noktanın arkasındaysa, o anahtar artık halka açıktır. Tarayıcı botları o adresi günler içinde buluyor.
AI Studio'nun "spend cap" özelliğine güvenmeyin. Gerçek koruma için Cloud Billing tarafında, otomatik kapatmalı sert bütçe limiti kurun. İkisi aynı şey değil.
Backend'inizi tek bir modele kilitleyin. "Her modeli geçiren" genel bir proxy asla bırakmayın. Uç noktaya token koyun, IP başına hız sınırı ekleyin.
İyi haber: Google olayı kendi sistemiyle inceledi ve "kötüye kullanım yok" (NO_ABUSE) diye projeyi geri açtı. Yani suç bende değildi, kapı açık bırakılmıştı. Şimdi iadesi için destek kaydı açtım.
Uygulamanın fikri güzeldi, sorun fikirde değildi. Sorun deploy'daydı. Aynısını tekrar yapacağım ama bu sefer kapıyı kilitleyerek.
Hızlı gidin ama kapıyı kontrol etmeden çıkmayın. 🙏