1 ポイント 投稿者 GN⁺ 12 일 전 | 1件のコメント | WhatsAppで共有
  • FirebaseブラウザキーがAPI制限なしで露出しており、外部からGemini APIリクエストが自動的に発生し、短時間で多額の課金が発生
  • 実際のユーザートラフィックとは無関係に13時間で€54,000超の費用が請求され、コストアラートの発報が遅延して対応が遅れた
  • Google Cloudサポートは当該リクエストを**正常な利用(valid usage)**として分類し、料金調整の要請を拒否
  • Googleは支出上限、認証キー、自動キー無効化、前払い課金などの保護機能を導入し、無制限キーの利用を段階的に終了する予定
  • 開発者はクライアントコードにキーを含めずAPIキー制限と予算上限設定を必ず適用する必要がある

Firebaseブラウザキー露出によるGemini API課金急増の事例

  • 事件の概要

    • 既存のFirebase Authenticationのみを使っていたプロジェクトでFirebase AI Logicを有効化した直後、Gemini APIの使用量が急増
    • 実際のユーザートラフィックとは無関係な自動化リクエストが短時間で発生し、約13時間で€54,000超の課金が発生
    • APIを無効化し、認証情報(credential)をローテーションした後に異常トラフィックが停止
    • 予算アラート(€80)およびコスト異常検知アラートが数時間遅れて発報し、対応時点ではすでに€28,000規模の費用が発生
    • 最終請求額は遅延したコスト報告により€54,000超で確定
  • Google Cloudサポートの結果

    • ログと分析資料を提出したが、**リクエストがプロジェクトで発生した有効な利用(valid usage)**に分類され、料金調整の要請は拒否された
    • 当該利用は異常でありユーザー主導のトラフィックではないにもかかわらず、システム上は通常課金として処理された
  • ユーザーの問い合わせ事項

    • Firebase AI LogicまたはGemini有効化後に類似事例が存在するかを質問
    • App Check、クォータ、サーバーサイド呼び出しへの移行以外に追加の保護手段があるかを問い合わせ
    • このようなケースに対する**追加のエスカレーション経路(escalation path)**が存在するかを質問

Google側の回答 (Logan Kilpatrick)

  • 課金および利用制限機能

    • **Gemini APIユーザー向けの課金上限(billing account caps)**が導入されており、Tier 1ユーザーは月額$250上限以降は自動的に停止
    • **プロジェクト単位の支出上限(project spend caps)**を設定可能で、例として個人アカウントは$50に制限設定
    • すべての課金レポートには約10分の遅延が存在
  • APIキーのセキュリティと変更点

    • 制限のないAPIキー(unrestricted key)の利用はまもなくGemini APIで無効化予定

      • 新規ユーザーにはデフォルトで認証キー(Auth key)が生成され、これは従来よりセキュリティが強化された形式
      • クライアントコードにキーを含めないこと。露出すると費用が発生する可能性がある
      • 公開Webでキーが露出すると自動検知して無効化する機能があり、実際に数分で遮断された事例がある
  • キー制限とサービス範囲

    • Google AI Studioで生成されたキーはデフォルトでGemini API専用に制限

      • 一方、Google Cloud Consoleなど他の経路で生成されたキーは複数サービスにアクセス可能で、必要に応じてサービス別の制限設定が必要
  • 追加対応と今後の計画

    • 問題事例の確認のため、**直接メール(Lkilpatrick@google.com)**での連絡を要請
    • **前払い課金(prepaid billing)**制度が導入され、利用前決済方式へ移行中
    • 現在米国の新規アカウントに適用済みで、世界全体へ段階的に拡大中
    • これらの措置は開発者のコスト統制と予期しない課金の防止強化を目的としている

1件のコメント

 
GN⁺ 12 일 전
Hacker Newsの意見
  • 予算アラート(€80)費用超過アラート を設定していたが、どちらも数時間遅れて発動した
    対応した時点で費用はすでに €28,000 に達しており、最終的には遅延した費用レポートのせいで €54,000 以上が請求された
    この状況で「ハードな支出上限は技術的に不可能だ」という3社の言い訳には説得力がない

    • だから私は Google Cloud のようなサービスをできるだけ使わない
      ハードキャップが不可能だというのはおかしいし、少なくともユーザーに選択肢は与えるべきだ
    • 本当に信じがたい話だ。良いプロジェクトを作っていて、たった一度のミスで €30,000〜€50,000 を支払わされるのは、人生を変えてしまうほどの打撃
      昔ならこういうミスは単なるバグだったが、今では破産につながりかねない
    • こういうのは違法であるべきだ
      浴室のタイル交換を頼んだのに庭のリフォーム代まで請求されたら、当然拒否する権利がある
    • 私はマネージャーとして、こうした カスタマーサービスの惨事 のせいで Google Cloud を避けている
      ただ、通信事業者の課金システムを扱った経験からすると、TB単位のログを集計するのに時間がかかるのは理解できる
      とはいえ通信会社は普通、2〜3%の 不良債権 を見込んだうえで顧客に配慮する
      Google もこうした状況ではもっと 上品な対応 をすべきだ
      特に AI キーが公開された直後にこうなったなら、Google がキースキャンを検知して遮断すべきだった
    • Gemini API ドキュメントによれば、プロジェクト単位と請求先アカウント単位の両方で月間支出上限を設定できるという
      だが実際には、この機能はまともに動いていないようだ
  • 私も似たような経験がある
    GCP で $100 の予算を設定していたのに、超過してから 5時間後になってようやくメール通知 を受けた
    こういう機能の優先順位が低いことに驚く
    短期的には Google の収益は増えるかもしれないが、こんな経験をした開発者は二度と勧めなくなるだろう

    • こういう話を聞くたびに腹が立つ
      うちの 2人チーム も runaway job のせいでほぼ潰れかけた
      GCP 推奨どおりにアラートと kill switch を連携させたのに、通知が6時間遅れて届いた
      結局、証拠を示してようやく返金してもらえた
      Google は「明細項目が多すぎてパイプラインが詰まった」と言っていたが、まさにその状況に備えるための仕組みではないのか
    • 通知遅延がどうして許容されるのか理解できない
      結局 Google との費用精算はどうなったのか気になる
    • 実のところ AWS もこうした機能を優先していない
      どのクラウドも 金の流れを止める機能 を先に作ろうとはしない
    • 「短期利益のために長期的信頼を捨てる」という言葉がぴったりだ
      後期資本主義 の典型的な姿だ
  • GitHub 検索結果を見ると、公開リポジトリに Gemini API トークン がそのまま露出しているケースが多い
    Google は長いあいだ API キーを秘密情報として扱っておらず、LLM キーになってから急に秘密扱いに変わった
    おそらく投稿者はフロントエンドやコード共有の過程でキーを露出させてしまった可能性が高い

    • この問題は以前から報告されており、Google が 漏洩したキーを Gemini API で遮断 すると述べていた
      関連する HN スレッド公式ドキュメント にも明記されている
      それなのに、なぜまたこうした事例が出てくるのか疑問だ
    • 実際、検索結果には本物のキーはない
    • 漏洩したキーは直ちに 無効化 されるというメッセージが表示される
      “Your API key was reported as leaked. Please use another API key.”
      つまり大半は自動で遮断されているようだ
    • API キーを秘密として扱わないという発想自体がおかしい
  • Google Cloud には ハードキャップ を設定する簡単な方法がない
    私も1時間以上設定方法を探し回り、結局 Reddit で Pub/Sub → Cloud Function → 請求の無効化 という方法を知った
    完全に 狂気じみた構成

    • 私の好きなテストは、Gemini モデルに「プロジェクトの API 使用量を取得するスクリプトを書け」と頼むことだ
      失敗率100% を誇っている
    • これは実質的に ユーザーを罠にはめる機能(antifeature)
    • おそらく意図された設計なのだろう
      ユーザーが自作した保護策に失敗しても、「それは当社の責任ではない」と言いやすい
    • こうした機能がないということは、企業にユーザー保護への インセンティブが欠けている ことを意味する
    • AWS や Azure も同じだ
      使用量がしきい値を超えたら自動で kill-switch が作動する機能があればいいのにと思う
      5時間のダウンタイムは許容できても、巨額の請求書は到底耐えられない
  • この投稿を読んで、私はすぐに Firebase の料金プランをダウングレード した
    1か月のあいだ、自分が一度も呼び出していない API に $6,909 が請求された事例を見て衝撃を受けた
    私も以前、教育セッション中に API キーを作ったことがあり、もしかすると写真に撮られていたかもしれないと思った

    • 本当にそのセッションで誰かがキーを撮影したのだろうか? 原因が気になる
  • 2020〜21年に学生へクラウドサービスを教えていたとき、AWS Free Tier を使っていた
    MediaWiki サーバー を立ち上げたが、スパムアカウントが次々に作られ、セキュリティにも不安があった
    ネットワークポートが常に攻撃されているように感じた
    結局、予算を $20〜30 に制限する方法がないと気づいて AWS を諦めた
    クラウドは管理が楽に見えても、無制限の費用爆弾 という点で個人にも企業にも危険だ

  • 個人開発者や小規模チームにとって、パブリッククラウドは 恐ろしく不安な環境
    安全装置がなく、費用が無限に跳ね上がる可能性がある
    そのため、プロジェクトのかなりの時間を 費用監視と遮断ロジック に費やしている
    以前は単純な VPS を使っていたが、最近は Google や AWS のサービスを使わざるを得ないことが多い
    それでも GCP は、プログラムから 請求先アカウントの接続を切れる点 が少しだけましだと感じる

    • もし単に支払いをしなかったらどうなるのか気になる
      アメリカでは法的問題になるだろうが、他の国ではどうなのかわからない
  • こうした 課金システム は、顧客体験(CX)の観点から見て設計がひどい
    課金はイベントベースなので、使用量がキューにたまり、集計が遅れる
    通知も集計後にしか来ないため、遅延が起きるとすでに大幅超過になっている
    こうした構造は企業だけを守り、顧客は守らない
    本当に顧客中心なら、ハードリミットに達した瞬間に その金額を超えて請求されないように すべきだ
    そうすれば企業側にも、自ら集計システムを改善する動機が生まれる

    • 実際のところ、イベントベース自体が問題なのではない
      プリペイド料金制やデータ通信量上限サービス のように事前に差し引く方式なら十分実現可能だ
      結局は Google の ビジネス慣行の問題
  • Google Cloud の公式ドキュメントによれば、緊急時には 請求先アカウントを無効化 して課金を止められる
    公式ガイド には「復旧不可能なリソース損失のリスク」があると警告されている
    ただ、テスト用途や社内向けアプリには良い 非常ブレーキ
    別の代替ドキュメント予算アラート設定ドキュメント も参考になる

    • ただし、費用発生と通知のあいだに 数時間〜数日の遅延 があり得る
      私は5分で $400 を使ってしまったことがある
  • 私たちも同じ問題を経験した
    もともと秘密情報ではなかったキーが、Gemini API を有効化した後に秘密扱いへ切り替わった のに、警告はなかった
    幸い通知で早めに気づき、被害は $26,000 に抑えられた
    Google サポートに返金を依頼したが最初は拒否され、今は再審査中だ
    こういう場合は できる限り上の部署まで問題をエスカレーション すべきだ