13 saatte €54.000 fatura patlaması: API kısıtlaması olmayan Firebase tarayıcı anahtarıyla Gemini API çağrıları yapıldı
(discuss.ai.google.dev)- Firebase tarayıcı anahtarı API kısıtlaması olmadan açığa çıktı ve dışarıdan Gemini API istekleri otomatik olarak üretildi, bu da kısa sürede çok büyük bir faturaya yol açtı
- Gerçek kullanıcı trafiğiyle ilgisiz şekilde 13 saat içinde €54.000’dan fazla maliyet oluştu ve maliyet uyarıları gecikmeli tetiklendiği için müdahale gecikti
- Google Cloud destek ekibi, ilgili istekleri geçerli kullanım (valid usage) olarak sınıflandırdı ve ücret düzeltme talebini reddetti
- Google; harcama limiti, kimlik doğrulama anahtarı, otomatik anahtar devre dışı bırakma, ön ödemeli faturalama gibi korumalar ekliyor ve sınırsız anahtar kullanımını kademeli olarak sonlandırmayı planlıyor
- Geliştiricilerin istemci koduna anahtar koymaması, ayrıca API anahtarı kısıtları ve bütçe limitlerini mutlaka uygulaması gerekiyor
Firebase tarayıcı anahtarı sızıntısının Gemini API faturalamasını sıçrattığı vaka
-
Olay özeti
- Daha önce yalnızca Firebase Authentication kullanan bir projede, Firebase AI Logic etkinleştirildikten hemen sonra Gemini API kullanımı hızla arttı
- Gerçek kullanıcı trafiğiyle ilgisi olmayan otomatikleştirilmiş istekler kısa sürede oluştu ve yaklaşık 13 saat içinde €54.000’dan fazla fatura çıktı
- API devre dışı bırakılıp kimlik bilgileri (credential) döndürüldükten sonra anormal trafik durdu
- Bütçe uyarısı (€80) ve maliyet anomali tespit uyarısı birkaç saat gecikmeyle tetiklendi; müdahale anında maliyet zaten €28.000 seviyesine ulaşmıştı
- Nihai fatura tutarı, gecikmeli maliyet raporlaması nedeniyle €54.000’ın üzerine çıktı
-
Google Cloud destek sonucu
- Loglar ve analizler sunulmasına rağmen, istekler projeden kaynaklanan geçerli kullanım (valid usage) olarak sınıflandırıldı ve ücret düzeltme talebi reddedildi
- Bu kullanım anormal ve kullanıcı kaynaklı trafik olmamasına rağmen, sistem tarafından normal faturalama olarak işlendi
-
Kullanıcının soruları
- Firebase AI Logic veya Gemini etkinleştirildikten sonra benzer vakaların olup olmadığı soruldu
- App Check, kota, sunucu tarafı çağrılara geçiş dışında ek koruma yöntemleri olup olmadığı soruldu
- Bu tür durumlar için ek bir itiraz/escalation path olup olmadığı soruldu
Google tarafının yanıtı (Logan Kilpatrick)
-
Faturalama ve kullanım kısıtlama özellikleri
- Gemini API kullanıcıları için faturalama limiti (billing account caps) getirildi; Tier 1 kullanıcıları için aylık $250 sınırından sonra kullanım otomatik olarak durduruluyor
- Proje bazlı harcama limiti (project spend caps) ayarlanabiliyor; örnek olarak kişisel hesap için sınırın $50 olarak belirlendiği ifade edildi
- Tüm faturalama raporlarında yaklaşık 10 dakikalık gecikme bulunuyor
-
API anahtarı güvenliği ve değişiklikler
-
Kısıtlanmamış API anahtarı (unrestricted key) kullanımı yakında Gemini API’de devre dışı bırakılacak
- Yeni kullanıcılar için varsayılan olarak kimlik doğrulama anahtarı (Auth key) oluşturuluyor; bu yapı geçmişe göre daha güvenli
- İstemci koduna anahtar koyulmamalı; açığa çıkarsa maliyet doğabilir
- Anahtarın herkese açık web’de ifşa edilmesi durumunda otomatik tespit edilip devre dışı bırakılması özelliği var; gerçekten de birkaç dakika içinde engellenen örnekler olduğu belirtildi
-
-
Anahtar kısıtları ve hizmet kapsamı
-
Google AI Studio’da oluşturulan anahtarlar varsayılan olarak Gemini API ile sınırlı
- Buna karşılık Google Cloud Console gibi diğer yollardan oluşturulan anahtarlar birden çok hizmete erişebilir; gerekirse hizmet bazlı kısıtlama uygulanmalı
-
-
Ek önlemler ve gelecek planları
- Sorunlu vakayı incelemek için doğrudan e-posta ile (Lkilpatrick@google.com) iletişim kurulması istendi
- Ön ödemeli faturalama (prepaid billing) sistemi devreye alındı ve kullanmadan önce ödeme modeline geçiliyor
- Şu anda ABD’deki yeni hesaplarda uygulanmaya başlandı ve küresel olarak kademeli şekilde yayılıyor
- Bu adımların amacı, geliştiricilerin maliyet kontrolünü güçlendirmek ve beklenmedik faturalamayı önlemek
1 yorum
Hacker News görüşleri
Bütçe uyarısı (€80) ve maliyet eşiği uyarısı ayarlamıştık, ancak ikisi de birkaç saat gecikmeyle tetiklendi
Biz müdahale ettiğimizde maliyet zaten €28,000'e ulaşmıştı ve sonunda gecikmeli maliyet raporlaması nedeniyle €54,000'den fazla faturalandırıldık
Böyle bir durumda üç şirketin de “sert harcama limiti teknik olarak imkansız” bahanesi ikna edici değil
Sert limitin imkansız olduğu iddiası saçma; en azından kullanıcıya seçim hakkı verilmesi gerekir
Eskiden bu tür hatalar sadece bug olurdu, şimdi ise iflasa yol açabiliyor
Banyonun fayanslarını değiştirmesi için birini tuttuysanız ve size bahçe yenileme masrafı çıkarıyorsa, bunu reddetme hakkınız olması gerekir
Ama telekom faturalandırma sistemleriyle çalışmış biri olarak, TB ölçeğinde logları toplamanın zaman almasını anlayabiliyorum
Yine de telekom şirketleri genelde %2~3 oranında tahsil edilemeyen alacağı göze alır ve müşteriyi gözetir
Google da böyle durumlarda daha zarif bir yaklaşım sergilemeli
Özellikle AI anahtarı herkese açıldıktan hemen sonra bu yaşandıysa, Google anahtar taramasını tespit edip engellemeliydi
Ama pratikte bu özellik düzgün çalışmıyor gibi görünüyor
Ben de benzer bir deneyim yaşadım
GCP'de $100 bütçe ayarladım ama aşım olduktan ancak 5 saat sonra e-posta uyarısı aldım
Böyle bir özelliğin öncelik olmaması şaşırtıcı
Kısa vadede Google'ın geliri düşebilir ama bunu yaşayan geliştirici bir daha asla tavsiye etmeyecektir
Bizim 2 kişilik ekibimiz runaway job yüzünden neredeyse battı
GCP'nin önerdiği şekilde uyarıları bir kill switch ile bağladık ama uyarı 6 saat geç geldi
Sonunda ancak kanıt sunabildiğimiz için geri ödeme alabildik
Google “satır kalemi çok fazlaydı, bu yüzden pipeline tıkandı” dedi ama bu sistem tam da o durum için yok mu?
Sonunda Google ile mali uzlaşmanın nasıl sonuçlandığını merak ediyorum
Hiçbir bulut sağlayıcı para akışını kesecek bir özelliği önce yapmıyor
Geç kapitalizmin tipik bir örneği
GitHub arama sonuçlarına bakınca, herkese açık depolarda Gemini API token'larının doğrudan ifşa edildiği çok sayıda örnek görülüyor
Google uzun süre API anahtarlarını gizli kabul etmedi, sonra LLM anahtarlarıyla birlikte birden gizli saymaya başladı
Muhtemelen yazar front-end veya kod paylaşımı sürecinde anahtarı açığa çıkardı
Bu durum ilgili HN başlığında ve resmi dokümanda açıkça yazıyor
O halde neden yine böyle vakalar çıktığı soru işareti
“Your API key was reported as leaked. Please use another API key.”
Yani çoğu otomatik olarak engelleniyor gibi görünüyor
Google Cloud'da sert limit belirlemenin kolay bir yolu yok
Ben de bir saatten fazla ayarları aradım ve sonunda Reddit'te Pub/Sub → Cloud Function → faturalandırmayı devre dışı bırakma yöntemini öğrendim
Tam anlamıyla çılgınca bir yapı
%100 başarısızlık oranı var
Kullanıcının kendi yaptığı koruma mekanizması başarısız olursa “bizim sorumluluğumuz değil” demek daha kolay oluyor
Kullanım eşik değeri aşıldığında otomatik bir kill-switch çalışsa harika olurdu
5 saatlik kesinti kabul edilebilir ama devasa bir fatura değil
Bu yazıyı okur okumaz Firebase planımı düşürdüm
Bir ay boyunca benim hiç çağırmadığım API'ler için $6,909 faturalandırıldığı örneğini görünce şok oldum
Ben de daha önce bir eğitim oturumunda API anahtarı oluşturmuştum; acaba fotoğrafı çekilmiş olabilir mi diye düşündüm
2020~21'de öğrencilere bulut hizmetlerini öğretirken AWS Free Tier kullanıyordum
Bir MediaWiki sunucusu kurmuştum ama sürekli spam hesaplar açılıyordu ve güvenlik zayıftı
Ağ portları sürekli saldırı altındaymış gibi hissediliyordu
Sonunda bütçeyi $20~30 ile sınırlamanın bir yolunun olmadığını fark edip AWS'den vazgeçtim
Bulut ilk bakışta yönetimi kolay gösterse de, sınırsız maliyet bombası yüzünden hem bireyler hem şirketler için riskli
Tek geliştiriciler veya küçük ekipler için public cloud korkutucu ve güvensiz bir ortam
Güvenlik önlemleri yetersiz ve maliyet teorik olarak sınırsız yükselebiliyor
Bu yüzden proje zamanının önemli bir kısmını maliyet izleme ve engelleme mantığına harcıyorum
Eskiden basit VPS kullanırdım ama artık çoğu zaman Google veya AWS hizmetlerini kullanmak gerekiyor
Yine de GCP'nin programatik olarak faturalandırma hesabı bağlantısını kesebilmesi onu biraz daha iyi kılıyor gibi geliyor
ABD'de hukuki sorun çıkar ama diğer ülkelerde ne olur bilmiyorum
Bu tür faturalandırma sistemleri, müşteri deneyimi (CX) açısından çok kötü tasarlanmış
Faturalandırma olay tabanlı; kullanım kuyrukta birikiyor ve toplulaştırma gecikiyor
Uyarılar da ancak toplulaştırmadan sonra geldiği için, gecikme olursa aşım çoktan büyümüş oluyor
Böyle bir yapı şirketi koruyor ama müşteriyi korumuyor
Gerçekten müşteri odaklı olsaydı, sert limite ulaşıldığı anda o tutarın üstünde hiçbir ücret yansıtılmaması gerekirdi
Ancak o zaman şirket kendi toplulaştırma sistemini iyileştirmek için motive olurdu
Ön ödemeli tarifelerde veya veri kotası hizmetlerinde olduğu gibi önceden düşüm yapan bir modelle bu gayet mümkün
Sonuçta mesele Google'ın iş yapma biçimi
Google Cloud resmi dokümanına göre acil durumda faturalandırma hesabını devre dışı bırakarak ücretlendirmeyi durdurmak mümkün
Resmi kılavuzda “geri döndürülemez kaynak kaybı riski” uyarısı var
Ama test veya şirket içi uygulamalar için iyi bir acil fren olabilir
Diğer alternatif doküman ve bütçe uyarısı ayarlama dokümanı da bakmaya değer
Ben 5 dakikada $400 harcadım
Biz de aynı sorunu yaşadık
Başta gizli olmayan bir anahtar, Gemini API etkinleştirildikten sonra gizli hale geldi, ama hiçbir uyarı verilmedi
Neyse ki uyarı sayesinde bunu erken fark ettik ve zarar $26,000 ile sınırlı kaldı
Google destek ekibinden geri ödeme istedik ama önce reddedildik; şu anda yeniden inceleniyor
Böyle durumlarda konuyu mümkün olduğunca üst kademelere eskale etmek gerekiyor