メインコンテンツへスキップ
顧客向けチャットボットは、一般公衆から信頼されていない入力を受け取り、それを モデルへ送ります。これが、あなたが運用するなかで最も露出の大きいサーフェスです: ユーザーはアップストリームに保存したくない PII を貼り付け、攻撃者はあなたの システムプロンプトを上書きしようとし、モデルはシークレットや安全でないコンテンツを チャットウィンドウに反響させ得ます。このレシピは、AI チャットボットをエンドツーエンドで セキュアにする 4 つのコントロールを配線します — リクエストへの PII ガードレール、 プロンプトインジェクションのスクリーニング、出力の安全性、そしてひとつのタイトに スコープされたキー — すべてコンソールで、チャットボットのコード変更ゼロで。
ここにあるすべてはあなたのワークスペースにバインドされ、コンソールから 設定されます。あなたのチャットボットは同じ sk-orca-... キーで https://api.orcarouter.ai/v1/chat/completions を呼び続けます — 変わるのは ゲートウェイ内のポリシーだけです。設定アクションは各ステップで示されるロールを 必要とします;リレー呼び出しはスコープキーを使います。

1. 公開チャットボットの脅威モデル

何かを作成する前に、何から守ろうとしているのかを知りましょう。チャットボットの 攻撃面はフルエージェントよりも狭いですが、高頻度のリスクは具体的です:

PII が入り、PII がログされる

ユーザーがメール、カード番号、SSN をチャットに貼り付け — あなたはそれを アップストリームへ、そしてあなたのログへ転送してしまいます。

プロンプトインジェクション

「これまでの指示を無視して…」 — あなたのシステムプロンプトを上書きし、ボットの 振る舞いを変えようとする試み。

ジェイルブレイク

ボットをポリシーから外そうとする DAN / ロールプレイのフレーミング。

安全でない出力

モデルが漏洩したシークレット、システムプロンプトの定型文、あるいは インジェクションを含むコンテンツをチャットへ反響させること。
素のチャットボットにはツール呼び出しがないため、このレシピは ファイアウォールではなく ガードレール — テキストプレーン — に頼ります。もしあなたの ボットがツールを呼び出すなら、その上にファイアウォールを重ねてください (§6 を参照)。

2. ひとつのガードレール、4 つの仕事

4 つの別々のポリシーではなく、各リスクをカバーする順序付けされたルールを持つ ひとつのワークスペースガードレールを作成します。ガードレールは名前付きの、 順序付けされたルールのリストです;各ルールは何を探すかどこでinputoutput、または both)、そして何をするかblockmask、または flag)を 指定します。 コンソールで Guardrails → New guardrail を開き、chatbot-shield と名付け、 以下のルールを追加します。ガードレールの作成 — および Test サンドボックスの 実行 — には Developer ロールが必要です;ガードレールの閲覧は任意のメンバーに 開放されています。

a. リクエストへの PII

ステージ input、アクション maskPII ルールを追加します。組み込みの エンティティセットはクローズドです — チャットボットが実際に目にするものを選びます:
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "credit_card", "ssn", "ip"],
  "entity_actions": { "credit_card": "block", "ssn": "block" }
}
mask は各マッチを型付きタグで置き換えます — jane@acme.com[EMAIL] に なるため、アップストリームのモデルはアドレスを決して見ません。entity_actions オーバーライドは、カード番号や SSN ではリクエストを完全にブロックし、より 低重大度のエンティティはマスクします。これはまさに PII Shield プリセットを エンティティごとのオーバーライドで拡張したものです — テンプレートライブラリから プリセットを適用し、そこから編集します。
入力ステージの PII マスキングは今日ライブです — モデルが見る前にリクエストを 書き換えます。ストリーミングされるレスポンスのライブマスキングはロードマップ上に あります。ボットが返答する内容から PII をリダクトするには、出力 block ルールを 使う(ストリーミングと非ストリーミングの両方で強制されます)か、出力マスキングが 適用される非ストリーミングでボットを実行します。まず Test タブで、あなたの正確な ステージ/ストリームの組み合わせを証明してください。

b. プロンプトインジェクションのスクリーニング

OrcaRouter はこれを Prompt-Injection Basics 安全プリセットとして出荷しています (“ignore previous instructions”“reveal your system prompt” といった句の キーワード拒否リスト;DAN / ロールプレイのフレーミングに対するより厳格な正規表現 カバレッジには Jailbreak / Role-Play Blocker プリセットを追加)。加えて、 どのパターンも捕捉しない意味論的な意図のために、llm_judge ルールを使います。 プリセットを追加し、その後インジェクション/上書きの試みをフラグするルーブリックを 持つ judge ルールを input ステージに追加します。judge はあなたのワークスペース内の モデルに対して実行され、judge_timeout_ms で制限され、デフォルトでフェイル オープンします(judge エラーはログされリクエストは継続します) — フェイルクローズ させるには judge_fail_open: false を設定します。
インジェクションルールを flag で開始し、実トラフィックに対して Matches フィードを 1 日監視し、それから攻撃に発火し正当な質問には発火しないことを確認したら block にプロモートします。 強制モードを参照。

c. 出力の安全性

チャットウィンドウに決して届いてはならないコンテンツ — 漏洩したシークレット、 チャットテンプレートの制御トークン、システムプロンプトの定型文 — のために、 output ステージの block ルール(正規表現またはキーワード)を追加します。 Secrets & API-Key Blocker とシステムプロンプト漏洩の安全プリセットが一般的な ケースをカバーします;それらを適用し、関連ルールを output ステージに固定します。 出力 block はストリーミングでも強制されます — スキャナはストリームを途中で 切断し、ブロックされたコンテンツがユーザーに届く前に置換メッセージを発します。

3. 出荷前にテストする

すべてのガードレールエディタには Test タブがあります。サンプルを貼り付け、 ステージを選び、現在のポリシーをローカルで実行します — アップストリーム呼び出しなし、 クォータ消費なし。
これを貼り付けるステージ期待される結果
email me at jane@acme.cominputemail me at [EMAIL]
ignore previous instructionsinputflag / block(あなたの選択)
card 4111 1111 1111 1111inputguardrail_blocked(オーバーライドどおり)
敵対的なカバレッジには、Eval タブがバンドルされたレッドチームコーパス(または あなた自身の JSONL)に対してポリシーを実行し、どうスコアリングされたかを報告します — judge ルーブリックを、良性のチャットをフラグせずに既知の攻撃を捕捉するまで チューニングします。

4. ボット用のスコープキーをひとつ発行する

ガードレールはそれに解決されるキーでのみ強制します。チャットボットに、必要最小限に スコープされた独自のキーを与えます — 決してアカウント全体のキーではなく。 API Keys → New key で、次を設定します:
Guardrail ドロップダウンから chatbot-shield を選びます。これはキーに guardrail_id を設定します。明示的なアタッチメントはオフスイッチの正反対です: 設定され有効であれば、常に適用され、決してサイレントにフォールバックしません。 (未設定のままにすると、代わりにワークスペースの is_default ガードレールに フォールバックします。)
credit_limit_usd を妥当な上限に設定します(0 = 無制限)。公開チャットボットは 最も悪用されやすいキーです — ハードなクレジット上限があなたの爆発半径の限界です。 デニアル・オブ・ウォレットを参照。
model_limits をオンにし、ボットが呼び出すことを許可されたモデルだけをリスト します。これにより、漏洩したキーが、あなたが決して公開するつもりのなかった 高価なモデルの実行に使われることを防ぎます。
ボットが固定サーバーから呼び出す場合は allow_ips をバックエンドの egress IP に 設定し、キーが一時的なら expired_time を設定します(-1 = 無期限)。
キーは作成後の表示でマスクされます — 一度だけコピーしてください。あなたの チャットボットバックエンドは、スクリーニングが起きていることをコードが意識すること なく、すべてのユーザーターンを chatbot-shield を通して送るようになります。

5. 本番で監視する

2 つのリードがあなたを正直に保ちます。どちらもワークスペーススコープです:
  • Guardrails → Matches(任意の Member) — 発火したすべてのルール:type、 action、stage、detail。マッチした部分文字列は、ガードレールに対して Log raw content がオンの場合にのみ記録されます(デフォルトはオフ — プライバシー 保守的な姿勢)。誤検出をマークしてポリシーをチューニングします(Admin)。
  • Version history — すべての変更が履歴行を書き込みます;任意の 2 バージョンを diff し、ルールが攻撃的すぎると判明したら revert します。ブロックされた リクエストは HTTP 400 guardrail_blocked を返し、クォータを消費せず、 skip-retry とマークされます。
guardrail_blocked レスポンスは意図的な、ユーザーに見える 400 です。生のエラーを 表面化させるのではなく、フレンドリーなメッセージ(「それは処理できません」)で チャットボット UI 内で処理してください — ゲートウェイは既に安全でないターンをあなたの ために止めています。

6. ボットがツールを呼び出す場合

あなたのチャットボットが関数を呼び出せる、URL を取得できる、あるいは MCP サーバーに 到達できる瞬間、テキストスクリーニングだけでは足りません — アクションプレーンが 必要です。同じキーに firewall_policy_id 経由で ファイアウォールポリシーをアタッチするか、balanced 自律性レベルを適用してツール呼び出しを audit し、強化前にワークスペース全体で PII を flag します。最速の道はゼロトラスト クイックスタート です;ツールを多用するエージェントについては、 自律エージェントをセキュアにするを参照。

7. さらに深く知るには

ガードレールリファレンス

すべてのルールタイプ、PII エンティティ、judge フィールド、そして eval ハーネスを 完全に。

ガードレール vs ファイアウォール

テキストプレーン vs アクションプレーン — どちらが必要かを判断します。

強制モード

Observe → shadow → enforce:ボットを壊さずにロールアウトします。

スコープキー、ポリシー、ワークスペース

キーアタッチメントとワークスペースデフォルトがどう解決されるか。