Cloudflare AI Gatewayで請求先の取り違えを防ぐ方法

Cloudflare AI Gatewayで顧客のプロバイダーキー欠落時に、Unified Billingへフォールバックして自社負担になるのを防ぐ方法を解説。Require provider credentialsとBYOKの優先順位、HTTP 400の検証、Spend limitとの違いを実務目線で整理します。

Thursday, September 17, 2026Omid Saffari
Cloudflare AI Gatewayで請求先の取り違えを防ぐ方法

Cloudflareでは、クライアントのモデルキーが欠けている場合、そのリクエストがCloudflare側のAI利用料として計上される前に止められるようになりました。2026年9月14日、Cloudflare AI Gatewayにプロバイダー認証情報を必須とする機能が加わり、該当するキーがないサードパーティー向けリクエストはUnified Billingへ回らず、HTTP 400で失敗するようになりました。

Cloudflare AI Gatewayで変わる「誰が支払うか」

AI Gatewayでは、1回のモデルリクエストに対して複数の認証経路を選べます。ここでいう認証情報とは、どのアカウントに料金を請求するかを上流のモデルプロバイダーへ伝えるキーです。

変更前の判定順は単純でした。まず、リクエストにプロバイダーキーが付いているかをCloudflareが確認します。なければ、ゲートウェイにdefaultエイリアスで保存されたBring Your Own Key(BYOK)を探します。どちらも見つからない場合は、Unified BillingのCloudflare管理認証情報を使い、Cloudflareのクレジット残高から利用分を差し引くことができました。

最後のフォールバックは、Cloudflareを支払者にしたい場合には便利です。しかし、本来はクライアント自身がOpenAI、Anthropic、Googleなどのプロバイダーキーを用意するリクエストなら、予算流出の原因になります。

今回、サードパーティーのプロバイダーへ送るトラフィックについて、この3段階目を無効にできるようになりました。ゲートウェイでRequire provider credentialsを有効にすると、API上ではbyok_only: trueとなり、利用できる顧客側の認証情報がないリクエストはHTTP 400で停止します。cf-aig-no-wholesale: trueを指定すれば、同じ制限をリクエスト単位でも適用できます。認証情報の判定順と2つの設定については、Cloudflareのドキュメントに詳しく記載されています。

リクエストキー、保存済みのdefaultキー、HTTP 400による停止、Cloudflareへの請求が遮断される経路を粘土細工で示した解説図
Unified Billingへ進む前に、新しい停止条件が入ります。リクエストキーまたは保存済みのdefaultキーがあれば通過し、キーがなければ失敗します。

支払者の候補が順に並んでいると考えると、仕組みを理解しやすくなります。

  1. リクエストの認証情報: クライアントが呼び出し時にプロバイダーキーを送ります。AI Gatewayはキーを変更せずに転送するため、そのキーに紐づくアカウントへプロバイダーから請求されます。
  2. ゲートウェイに保存された認証情報: リクエストにプロバイダーキーがなければ、Cloudflare Secrets Storeに保存されたキーをAI Gatewayが使います。Unified Billingのエンドポイントでは、対象となる保存済みキーにdefaultエイリアスが必要です。
  3. Cloudflare Unified Billing: 利用できるクライアントキーも保存済みキーもなければ、Cloudflareの管理認証情報を使い、Cloudflareアカウントのクレジットから利用分を差し引けます。

新しいルールを有効にすると、この判定は2段階目で終わります。事業上の違いは明快です。認証情報の欠落が、見えないコスト移転ではなく、把握できる停止として現れます。

コスト管理が「事後照合」から「事前拒否」へ変わる

Unified Billingでクレジットを購入すると、5%の手数料が加算されます。Cloudflareの例は明快です。$100分のクレジットに対する請求は$105ですが、プロバイダーの推論料金そのものに上乗せはありません。

これをクライアント向けのワークフローに当てはめてみます。本来はクライアントのプロバイダーアカウントを使うジョブでキーが欠落すると、$100分のモデル利用料が運用者のCloudflareクレジットから差し引かれる可能性があります。そのクレジットの購入費は$105です。クライアント側のプロバイダーアカウントにはフォールバック分が一切記録されず、運用者が$105の支払いをすべて負担したうえで、どのクライアントが原因だったかを特定しなければなりません。

本質的な問題は5%の手数料ではありません。$100分のワークロード全体が、誤った予算に移ってしまうことです。追加の$5は、そのミスをさらに高くつかせるだけです。

プロバイダー認証情報を必須にすれば、問題の性質は請求調査からアプリケーションエラーへ変わります。自動救済は失いますが、誰が支払うかを明確に区切れます。ゲートウェイ手数料とプロバイダーへの直接請求を広く比較したい場合は、AIゲートウェイのコスト比較も参照してください。

この設定が向いているケース

クライアント向け自動化を運用する支援会社

1つのCloudflareアカウントを支援会社が運用しつつ、モデルプロバイダーとの契約はクライアントごとに用意する形があります。この場合、クライアント負担のルートでゲートウェイルールを有効にします。導入時のキー登録漏れやローテーション時の削除が起きても、支援会社のプリペイド残高を使わずにジョブが停止します。

効果は、請求の負担元が明確になることです。クライアントは有効な認証情報を提供するか、設定エラーを受け取るかのどちらかです。処理が終わってから共有クレジットの請求をさかのぼって調べる必要がなくなります。

顧客持ち込みのキーを受け付けるSaaSチーム

顧客が用意したプロバイダーキーを使うSaaSでは、HTTP 400をセットアップ未完了の状態として扱えます。プロバイダー認証情報がないことを顧客へ伝え、プラットフォーム自身のCloudflareクレジットが使われないようにできます。

特に有効なのは、リクエストが成功すると設定ミスに気づけない場面です。制限がなければ機能は動き続け、別の会社が料金を支払います。制限を設ければ、アカウント設定を直せる段階で早期に失敗させられます。

まず1つのルートから切り替えるプラットフォームエンジニア

影響範囲を小さく始めるなら、リクエストヘッダーを使います。サードパーティー向けの1つのリクエスト経路にcf-aig-no-wholesale: trueを追加し、キー欠落時の挙動をテストして、エラーを監視へ組み込んでからゲートウェイ全体へ広げます。

優先関係は、厳しくする方向にしか働きません。リクエストヘッダーを使えば、許可型のゲートウェイに厳しい条件を追加できます。一方、Require provider credentialsがすでに有効なゲートウェイで、リクエスト側からヘッダーをfalseにして制限を緩めることはできません。Cloudflareは、これらの制限が追加的に適用されると説明しています。

支払者の制御と予算の制御を分けたいFinOps担当者

この設定で決めるのは、どのアカウントに支払いを許すかです。いくらまで使えるかはAI GatewayのSpend limitで決めます。両者は異なる制御なので、テストも分ける必要があります。

制御防げること失敗時のシグナル重要な制約
Require provider credentialsサードパーティーキーの欠落によってCloudflare Unified BillingへフォールバックすることHTTP 400Workers AIはこのルールの対象外
Spend limit対象予算が上限を超えた後に、さらにリクエストが処理されることHTTP 429集計には遅延があり、バースト時には一時的に上限を超える可能性がある
Workers AI billing modeこれ自体では何も防がない。Workers AIで後払いかUnified Billingかを選ぶ別の請求設定プロバイダー認証情報のルールによる変更はない

Cloudflareがモデル価格を把握していれば、Spend limitはBYOKとUnified Billingの両方のリクエストを対象にできます。モデル、プロバイダー、メタデータごとの設定も可能です。ただし、コストはベストエフォートの推定値であり、Cloudflareも正確な請求額はプロバイダーのダッシュボードで確認するよう案内しています。プロバイダー認証情報のルールは支払者の境界として扱い、支出上限は別に検証してください。

原因不明の停止を招かずに設定する手順

  1. 各ルートの支払者を明確にする

    サードパーティープロバイダー向けのトラフィックとWorkers AIを分けます。サードパーティー向けの各ルートについて、プロバイダーキーをリクエストに付けるのか、ゲートウェイに保存したdefaultキーを使うのかを記録してください。支払い主体が明確になるまでは、認証情報がないと停止するルールを有効にしないでください。

  2. 最小の適用範囲を選ぶ

    1つの経路だけなら、cf-aig-no-wholesale: trueを送ります。ゲートウェイ全体なら、AI > AI Gatewayから対象のゲートウェイを選び、Settingsを開いてRequire provider credentialsを有効にし、確定します。APIで管理するゲートウェイでは、更新リクエストにbyok_only: trueを指定します。

  3. 2つの有効な認証経路を確認する

    まず、プロバイダーキーを付けたステージングリクエストを送ります。次に、保存済みのdefaultキーを使うリクエストを送ります。それぞれについて、想定したプロバイダーアカウントに利用記録が残ることを確認してください。Unified Billingのエンドポイントがproductionというキーに依存している場合は、先へ進む前にエイリアスを修正します。

  4. 意図的にキーを外す

    ステージング環境で、プロバイダーキーも対象となる保存済みのdefaultキーもない状態にし、同じサードパーティー向けリクエストを送ります。期待する結果は、モデルからの正常な応答ではなくHTTP 400です。この設定エラーをリトライ処理が繰り返さないことも確認してください。

  5. エラーの担当者と対応キューを決める

    このHTTP 400は、リクエストヘッダー、保存済みシークレット、キーローテーションを管理するインテグレーション担当者またはプラットフォーム担当者に割り当てます。カスタマーサポートが状況を説明し、財務チームが監査することはあっても、修正の担当にすべきではありません。

導入前に知っておくべきトレードオフ

この設定では、気づきにくいフォールバックと引き換えに、認識できるエラーを受け入れます。Unified Billingを可用性確保の手段として意図的に使っていた場合、有効化するとサードパーティープロバイダー向けリクエストの救済経路がなくなります。期限切れや無効なリクエストキーも、別の請求経路へ差し替えられずにプロバイダーへ転送されるため、上流のプロバイダーが拒否する可能性は残ります。

重要な例外はWorkers AIです。Workers AIのリクエストではサードパーティーのプロバイダー認証情報を使わないため、そのまま許可され、別途設定されたWorkers AIの請求モードが維持されます。byok_onlyを有効にしても、「Cloudflareへの請求をすべて止める」スイッチにはなりません。

Spend limitでも、すべての抜け道を塞げるわけではありません。集計には遅延があるため、同時リクエストによって一時的に上限を超えることがあります。また、トークン数と既知のモデル価格からコストを推定しています。Spend limitは活用しつつ、正確な請求額はプロバイダーとCloudflare双方の請求画面で照合してください。

今週最初にやること

クライアント負担のサードパーティー向けルートを1つ選びます。まずリクエスト単位の制限を追加し、ステージング環境で認証情報がない状態をテストしてください。合格条件は、フォールバックが成功せず、担当者が決まったHTTP 400として処理されることです。そのエラーをインテグレーションチームまたはプラットフォームチームのキューへ入れ、キーを修正する担当者を決めてから、ゲートウェイ全体への適用を検討します。

すべてのサードパーティー向けトラフィックでCloudflare Unified Billingを意図的に使っているなら、ルールは無効のままにします。Workers AIだけを使っている場合、この設定で請求は変わりません。クライアントや部門のプロバイダーアカウントが支払うべき運用なら、今週中に着手し、次のキーローテーションで問題が表面化する前に失敗時の挙動をテストしてください。

このような変更を運用に落とし込むための解説をもっと読みたい方は、ニュースレターにご登録ください。

最終更新
2026年9月17日
カテゴリー
Explained

Googleでこのサイトを優先する

omidsaffari.comをGoogle検索の優先ソースに追加

omidsaffari.comを優先ソースに設定すると、GoogleがTop Stories・AI Overviews・AI Modeであなたのために優先表示します。

AI 文字起こしの料金は据え置き:Grok Voice Transcribe 2.0移行ガイド

AI 文字起こしの料金は据え置き:Grok Voice Transcribe 2.0移行ガイド

Grok Voice Transcribe 2.0のAI 文字起こし料金は、バッチが音声1時間あたり$0.10、ストリーミングが$0.20のままです。デフォルトモデル変更で起こり得る出力差、移行前に確認すべき総コスト、1.0と2.0を同条件で検証して本番モデルを固定する手順を、運用担当者向けに整理します。2026年9月20日Explained
HAR ファイルで原因を追う:Cloudflare Browser Runの失敗調査

HAR ファイルで原因を追う:Cloudflare Browser Runの失敗調査

Cloudflare Browser RunのSession RecordingにInspectパネルが加わり、完了後のログ、通信、最終DOMを確認できるようになりました。HAR ファイルで失敗原因を絞り込み、不要な再実行を減らす手順、料金への影響、録画では見えない領域まで、実務向けに分かりやすく解説します。2026年9月19日Explained
v0でnpm プライベートパッケージを活用する:社内コンポーネント再利用の実践ガイド

v0でnpm プライベートパッケージを活用する:社内コンポーネント再利用の実践ガイド

v0が共有環境変数経由でnpm プライベートパッケージに対応。NPM_TOKENとNPM_RCの選び方、認証情報をモデルやSandboxに渡さない仕組み、社内コンポーネントを試作から本番へ引き継ぐ設定手順、料金と実務上の注意点を整理し、差し替え工数を減らせるか判断する方法を解説します。2026年9月19日Explained
Claude Code 料金を見直す:auto modeの分類器課金が消える条件

Claude Code 料金を見直す:auto modeの分類器課金が消える条件

Claude Code 2.1.278では、auto modeの安全判定をサーバー側で処理できるセッションの分類器リクエスト課金がなくなります。API、Enterprise、クラウド、ゲートウェイ環境で適用条件を見極め、/statusで実際の課金経路を確認し、予算へ正しく反映する方法を解説します。2026年9月19日Explained
Vercel ビルド高速化:Turboを1回だけ使う方法と料金

Vercel ビルド高速化:Turboを1回だけ使う方法と料金

VercelのPro/Enterpriseで、プロジェクト設定を変えずに1回のデプロイだけTurboを指定する方法を解説します。GitHubのコミットマーカー、Vercel CLI、デプロイAPIという3つの経路と、1分あたり$0.105からの料金、権限不足時のフォールバック、通常ビルドとの比較手順まで整理しました。2026年9月18日Explained
ChatGPT Word連携の実力:できること・料金・導入手順

ChatGPT Word連携の実力:できること・料金・導入手順

ChatGPT Word連携を使えば、Wordのサイドバーで下書き、要約、選択範囲の修正、見出し調整まで完結します。利用条件、共有される使用量、料金の考え方、データ境界、導入手順を、提案書やSOPの具体例とともに解説。コピペ往復を減らしつつ、事実や約束を守るレビュー方法も紹介します。2026年9月18日Explained
Google Antigravity移行ガイド:10月5日までのローカルジョブ対応

Google Antigravity移行ガイド:10月5日までのローカルジョブ対応

Google Antigravityの5月版エージェントは2026年10月5日に停止予定です。出力のみのジョブはID変更で済みますが、ローカルツールやfunction_callを扱う環境には、新しいツール名、PascalCase引数、行範囲編集に対応するアダプター改修が必要です。安全な移行手順を解説します。2026年9月18日Explained
Cloudflare WorkersのRPCトレースで遅延箇所を特定する

Cloudflare WorkersのRPCトレースで遅延箇所を特定する

Cloudflare WorkersのRPCトレースで、遅い顧客リクエストを別のWorkerやDurable Objectまで追跡。担当サービスとメソッドを見つける手順、サンプリング率、保持期間、2026年10月1日以降のスパン単位の料金まで、チェックアウトの例で実践的に解説します。2026年9月17日Explained
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。