Webアプリの主要セキュリティリスク一覧で触れた「DDoS・過剰アクセス」を掘り下げます。ただし、この記事の主眼は一般的なDDoS対策そのものより、LLM時代ならではの急所——サービスが止まらなくても、請求だけが跳ね上がる話です。
DDoSとは
DDoS(Distributed Denial of Service、分散型サービス拒否攻撃)は、大量のアクセスを一斉に送りつけて、サービスを使えない状態にする攻撃です。ネットワークそのものを溢れさせるもの(L3/L4、通信の下位層を狙うもの)から、アプリケーションの処理を溢れさせるもの(L7、Webページ・APIそのものを狙うもの)まで種類があります。
Vercelは自動で守ってくれる
まず安心材料から。Vercel公式ドキュメントにはこうあります。
Vercel provides automatic DDoS mitigation for all deployments, regardless of your plan. We block incoming traffic if we identify abnormal or suspicious levels of incoming requests.
(Vercelは、プランを問わずすべてのデプロイに対して自動のDDoS対策を提供します。異常あるいは疑わしいレベルの受信リクエストを検知した場合、そのトラフィックをブロックします)
しかも、これは無料プラン(Hobby)でも有効です。さらに、ブロックした分については課金もされません。
Vercel does not charge customers for traffic that gets blocked with DDoS mitigation.
(Vercelは、DDoS対策によってブロックされたトラフィックについて、顧客に課金しません)
ここまで聞くと「じゃあ何も心配いらない」と思うかもしれません。ここからが本題です。
それでも防げない、もう1つの穴
同じページには、こんな一文もあります。
Usage will be incurred for requests that are successfully served prior to us automatically mitigating the event. Usage will also be incurred for requests that are not recognized as a DDoS event, which may include bot and crawler traffic.
(対策が働く前に正常に処理されたリクエストには、利用料が発生します。また、DDoS攻撃として認識されなかったリクエストにも利用料が発生します。これにはbotやクローラーのトラフィックが含まれることがあります)
つまり、「あからさまな攻撃」としてVercelに検知されない程度の、そこそこの頻度でのアクセスは、そのまま処理され、そのまま課金される、ということです。
これが、なぜLLM時代に特に危ないのか。
LLM時代の急所:裏で従量課金APIを呼んでいる場合
Vercel自体の利用料については、そもそもVercelとは何かで書いたとおり、Hobbyプランは上限を超えても買い足せない仕組みになっています。想定外のアクセスが来ても、上限に当たれば止まるだけで、青天井の請求にはなりません。
ところが、この安心はVercel自体の利用料の話であって、あなたのアプリが裏で呼び出している外部のAPIには及びません。
たとえば、/api/chatのようなエンドポイントを公開していて、その中でAIモデルのAPI(AnthropicやOpenAIなど)を呼び出しているとします。このAPIは、呼び出した回数や量に応じて課金される従量課金の仕組みです。誰でも呼べる状態でこのエンドポイントを公開していると、DDoSと呼べるほどの規模ではない、地味な連打でも——Vercel側からは「異常なアクセス」に見えず、普通に処理され続けます——その裏では、あなたのアカウントで従量課金のAPIが呼ばれ続け、請求が積み上がっていきます。 サービスは止まらないまま、気づいたときには請求額だけが跳ね上がっている、という事故になります。
対策の具体策
-
誰でも呼べるAPIを減らす。 ログインしたユーザーだけが呼べるようにするだけで、無関係な第三者からの連打はほぼ防げます
-
レート制限をかける。 一定時間内に呼べる回数の上限を決める仕組みです。Vercel FirewallにはCustom Rulesという機能があり、
rate_limitというアクションで、たとえば「/api以下は、同じIPから60秒に100回まで」のような制限をCLIから設定できますvercel firewall rules add "Rate limit API" \ --condition '{"type":"path","op":"pre","value":"/api"}' \ --action rate_limit \ --rate-limit-window 60 \ --rate-limit-requests 100 \ --rate-limit-keys ip \ --yes最初から厳しい制限をかけると正規のユーザーまで止めてしまうことがあるので、まずは
log(記録するだけでブロックしない)で様子を見てから、段階的に絞るのが安全な進め方です -
AIプロバイダ側でも使用量の上限・アラートを設定する。 多くのAIプロバイダのコンソールには、使用量が一定額に達したら通知する、あるいは自動で止める機能があります。Vercelの防御をすり抜けた分の、最後の砦になります
-
Vercel Proなら、Spend Managementも使える。 使用量が設定した金額に達した時点で通知したり、Webhookで自動的にプロジェクトを一時停止したりできる機能です。Hobbyプランには無いので、本格的に外部APIを呼ぶ機能を公開するなら、Proへの移行時に検討する価値があります
-
緊急時はAttack Modeを使う。 実際に攻撃を受けていると分かったときに、すべての訪問者にひとまず確認画面を挟む緊急対応です。全プランで無料で使えます
エージェントへの頼み方
「このアプリで、従量課金のAPIを呼んでいるエンドポイントを一覧にして。認証なしで誰でも呼べるものがあれば教えて」のように頼むと、まず危険な箇所を洗い出せます。そのうえで「Vercel Firewallでレート制限のルールを追加して」と頼めば、具体的な設定に進めます。
まとめ
- Vercelの自動DDoS対策は全プラン無料で有効、ブロックされた分は課金もされない
- ただし、攻撃と認識されない程度のアクセスは、そのまま処理され、そのまま課金される
- Vercel自体の利用料は、Hobbyプランなら上限超過で暴走しない。危ういのは、あなたのアプリが裏で呼んでいる従量課金の外部API——ここにはVercelの安心材料は及ばない
- 対策は、認証必須化+レート制限を自分のアプリ側にかけることと、AIプロバイダ側の使用量アラートを組み合わせる二段構え
「サービスが落ちるかどうか」だけでなく、「止まっていないのに、請求だけが増えていないか」も、LLM時代のセキュリティでは見ておきたい観点です。