1 puan yazan GN⁺ 12 일 전 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 12 일 전
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

    • Bu yüzden Google Cloud gibi hizmetleri mümkün olduğunca kullanmıyorum
      Sert limitin imkansız olduğu iddiası saçma; en azından kullanıcıya seçim hakkı verilmesi gerekir
    • Bu gerçekten akıl almaz bir durum. Güzel bir proje geliştirirken tek bir hatayla €30,000~€50,000 ödemek zorunda kalmak hayatı değiştirecek kadar büyük bir darbe
      Eskiden bu tür hatalar sadece bug olurdu, şimdi ise iflasa yol açabiliyor
    • Bu tür şeyler yasa dışı olmalı
      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
    • Yönetici olarak bu tür müşteri hizmetleri felaketleri nedeniyle Google Cloud'dan kaçınıyorum
      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
    • Gemini API dokümanına göre hem proje düzeyinde hem de faturalandırma hesabı düzeyinde aylık harcama limiti ayarlanabiliyor
      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

    • Bu tür hikayeler her gündeme geldiğinde sinirleniyorum
      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?
    • Uyarı gecikmesinin nasıl kabul edilebilir olduğunu anlamıyorum
      Sonunda Google ile mali uzlaşmanın nasıl sonuçlandığını merak ediyorum
    • Aslında AWS de bu özelliği önceliklendirmiyor
      Hiçbir bulut sağlayıcı para akışını kesecek bir özelliği önce yapmıyor
    • “Kısa vadeli gelir uğruna uzun vadeli güveni feda ediyorlar” sözü tam oturuyor
      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 sorun daha önce de bildirilmişti ve Google'ın sızdırılmış anahtarları Gemini API'de engelleyeceğini söylediği belirtilmişti
      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
    • Aslında arama sonuçlarında gerçek anahtar yok
    • Sızdırılmış anahtarlar hemen geçersiz kılındı mesajı veriyor
      “Your API key was reported as leaked. Please use another API key.”
      Yani çoğu otomatik olarak engelleniyor gibi görünüyor
    • API anahtarlarını gizli kabul etmemek başlı başına anlamsız
  • 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ı

    • En sevdiğim test, Gemini modeline “projenin API kullanımını getiren bir script yaz” demek
      %100 başarısızlık oranı var
    • Bu aslında fiilen bir kullanıcı tuzağı (antifeature)
    • Muhtemelen kasıtlı bir tasarım
      Kullanıcının kendi yaptığı koruma mekanizması başarısız olursa “bizim sorumluluğumuz değil” demek daha kolay oluyor
    • Böyle bir özelliğin olmaması, şirketin kullanıcıyı korumak için yeterli teşvike sahip olmadığını gösteriyor
    • AWS ve Azure da aynı durumda
      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

    • Gerçekten o oturumda biri anahtarı mı fotoğrafladı? Sebebini merak ediyorum
  • 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

    • İnsan merak ediyor, ya parayı hiç ödemezsen ne olur?
      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

    • Aslında sorun olay tabanlı mimarinin kendisi değil
      Ö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

    • Ancak maliyet oluşumu ile uyarı arasında birkaç saatten birkaç güne kadar gecikme olabilir
      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