◉GEMINI LABEN
●CLI 0.63.0 — Gemini CLI 0.63.0(10月6日)。接続回復時の再試行表示、MCP 設定の欠落と JSON 破損の見分け、長いエージェントループでのツール出力の上限を直しました●10/29 — 画像モデル gemini-3.1-flash-image のシャットダウンまで残り22日。10月6日に加わった gemini-nano-banana-2.1 へ移します●10/22 — Veo 3.1 の3モデルの提供終了まで残り15日。移行先は gemini-omni-1.1-flash です●NOTICE — AI のモデルが提供終了しても、プラグインの管理画面は何も言わなかった、という報告が Zenn に出ています。見落とさない仕組みが論点です●NEW — Veo 3.1 の preview 3種が 10/22 に止まります。差し替えの前に、呼び出し箇所を棚卸しする手順をまとめました●CLAUDE — Codex や Claude Code の文章を Gemini に任せる仕組みが Zenn で続けて出ています。振る仕事と振らない仕事の線引きが論点です●CLI 0.63.0 — Gemini CLI 0.63.0(10月6日)。接続回復時の再試行表示、MCP 設定の欠落と JSON 破損の見分け、長いエージェントループでのツール出力の上限を直しました●10/29 — 画像モデル gemini-3.1-flash-image のシャットダウンまで残り22日。10月6日に加わった gemini-nano-banana-2.1 へ移します●10/22 — Veo 3.1 の3モデルの提供終了まで残り15日。移行先は gemini-omni-1.1-flash です●NOTICE — AI のモデルが提供終了しても、プラグインの管理画面は何も言わなかった、という報告が Zenn に出ています。見落とさない仕組みが論点です●NEW — Veo 3.1 の preview 3種が 10/22 に止まります。差し替えの前に、呼び出し箇所を棚卸しする手順をまとめました●CLAUDE — Codex や Claude Code の文章を Gemini に任せる仕組みが Zenn で続けて出ています。振る仕事と振らない仕事の線引きが論点です
記事一覧/API / SDK
◈ API / SDK/2026-07-03上級

Webhook が本物である保証はどこにもない — Gemini Webhooks 受信エンドポイントの三層防御設計

Gemini Webhooks の受信エンドポイントは公開 URL である以上、偽イベント・リプレイ・二重処理を想定する必要があります。ペイロードを事実として信じず API へ照会し直す構造を軸に、到達検証・重複排除・軽量ハンドラの三層防御を動くコードで示します。

Gemini API244Webhooksセキュリティ8冪等性6自動運用4

✦ プレミアム記事

Gemini API の Webhooks で Batch 処理のポーリングを畳んだあと、受信側のコードを読み返していて手が止まりました。この URL に POST してくるのは Google だけだ、と私はどこかで思い込んでいたのです。実際には、Webhook の受信エンドポイントはインターネットに公開された URL であり、その気になれば誰でも、どんな JSON でも投げ込めます。

個人開発の Webhook 受信部は、最初は「動けばいい」で書かれがちです。私自身、Dolice Labs のメンバーシップ決済で Stripe の Webhook を運用してきた経験がなければ、素通しのまま本番に置いていたと思います。決済の世界では「Webhook を信じすぎた実装」が事故の定番として知られていて、その規律は Gemini の自動処理パイプラインにもそのまま持ち込めます。ここでは、受信エンドポイントを三層で守る設計を、動くコードと一緒に整理します。

素通しの受け口で、実際に何が起きるのか

防御を考える前に、故障モードを具体的にしておきます。受信部が「届いた JSON をそのまま信じて処理する」実装だった場合、次の3つが起きえます。

偽イベント。攻撃者、あるいは単に誤設定された別システムが、「ジョブ完了」を装ったペイロードを POST してきます。受信部がそれを信じて後段を起動すると、まだ存在しない結果を取りに行って空の成果物を保存したり、未完成のデータを公開処理に流したりします。悪意がなくても、ステージング環境の通知が本番の受け口に飛んでくる、という事故は現実に起きます。

リプレイ。過去に受け取った正規のイベントが、もう一度届きます。意図的な再送攻撃だけでなく、配信側のリトライでも同じことが起きます。一度処理を終えたジョブの後段がもう一度走り、処理コストが二重にかかったり、公開済みのデータを上書きしたりします。

二重処理。受信部の応答が遅れると、配信側はタイムアウトと判断して同じイベントを再送します。受信部が重い処理を同期でやっているほど応答は遅れ、再送が増え、さらに詰まる、という悪循環に入ります。

重要なのは、後半の2つは攻撃がなくても正規の再送だけで発生するという点です。ここが本番運用での落とし穴で、悪意への防御と、再送・順序入れ替わりへの対処は、実装上ほとんど同じ場所に収まります。順序の問題については完了したはずの Gemini ジョブが『実行中』に戻った — Webhook の順序入れ替わりを止める単調適用の設計で扱ったので、ここでは受け口そのものの防御に集中します。

原則 — ペイロードは「通知」であって「事実」ではない

三層の防御に入る前に、すべての土台になる原則をひとつ決めます。Webhook のペイロードで状態を更新しない、ということです。

届いたイベントは「何かが変わったかもしれない」という合図として扱い、実際の状態は必ず Gemini API に照会し直します。ペイロードに state: succeeded と書いてあっても、それを理由に後段を動かさない。照会した結果が完了を示したときだけ動かす。この一手で、偽イベントの実害は構造的にほぼ消えます。攻撃者が偽造できるのは「照会のきっかけ」だけになり、事実は API 側にしか存在しないからです。

この考え方は、Webhooks に移しても、デプロイの瞬間にイベントは落ちる — Gemini 長時間オペレーションを照合で二重化した運用メモで書いた照合の設計と地続きです。イベントの取りこぼしに備えて API 照会で照合する仕組みを持っているなら、その照会ロジックをそのまま「ペイロードを信じない」ためにも使えます。防御のためだけの新しい部品は、ほとんど要りません。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦誰でも POST できる公開 URL を素通しにしていた Webhook 受信部に、偽イベント・リプレイ・二重処理を層で止める防御を組み込めるようになる
✦ペイロードを信じず API へ状態を照会し直す「通知と事実の分離」を、FastAPI と SQLite の動くコードで実装できる
✦決済 Webhook で確立された運用規律を Gemini の自動処理パイプラインに応用する際の、対策ごとのコストと優先度の判断基準を持ち帰れる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ API / SDK2026-08-08
打ち切りは失敗の合図ではありませんでした — ブロッキング挙動を伴う関数呼び出しの設計
呼び出しが返るまで待つブロッキング型のツールをエージェントに持ち込むと、並列化と打ち切りの常識が反転します。サンドボックスの最小ハーネスで実測した数値をもとに、再試行を観測へ振り替える設計と unknown を握りつぶさない扱い方をまとめました。
◈ API / SDK2026-09-29
『F6号』と『A4くらい』が同じ列に並ぶ作品台帳を、Gemini の読み取りと号数表の換算で cm に揃えるまで
作家さんの作品台帳に『F6号』『41×31.8cm』『A4くらい』が混ざっていました。Gemini API には読み取りだけを頼み、換算は号数表、向きは画像で決める小さな道具を、動くコードとともに一本ずつ組み立てます。
◈ API / SDK2026-09-22
関数呼び出しが平文に化けるとき、まず疑うのはツール宣言のプロパティ名です
MALFORMED_FUNCTION_CALL を出力上限とスキーマ衝突で潰しきれなかったとき、ツール宣言のプロパティ名を二分探索で絞り込んだ記録です。予約語を名前に置かない線引きと、宣言の手前で落とすリンタまで書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます