セキュリティファーストの設計
Triggerfishは単一の前提に基づいて構築されています:LLMは権限ゼロです。アクションを 要求するだけで、ポリシーレイヤーが決定します。すべてのセキュリティ決定は、AIが回避、 上書き、または影響を与えることができない決定論的なコードによって行われます。
このページでは、Triggerfishがこのアプローチを取る理由、従来のAIエージェントプラット フォームとの違い、およびセキュリティモデルの各コンポーネントの詳細を見つける場所を 説明します。
セキュリティをLLMの下に置かなければならない理由
大規模言語モデルはプロンプトインジェクションを受ける可能性があります。悪意のある外部 メッセージ、汚染されたドキュメント、または侵害されたツールレスポンスからの慎重に 作られた入力は、LLMに指示を無視させ、やってはいけないと言われたアクションを取らせる 可能性があります。これは理論的なリスクではありません。AI业界での十分に文書化された、 未解決の問題です。
セキュリティモデルがLLMのルール遵守に依存している場合、単一の成功したインジェクションが 構築したすべての安全策をバイパスできます。
Triggerfishはすべてのセキュリティ強制をLLMの下に位置するコードレイヤーに移動することで これを解決します。AIはセキュリティ決定を見ることはありません。アクションを許可すべきか どうかを評価することはありません。単にアクションを要求し、ポリシー強制レイヤー — 純粋な決定論的コードとして実行 — がそれらのアクションが進むかどうかを決定します。
セキュリティ LLMレイヤーにはポリシー強制レイヤーを上書き、スキップ、または
影響させるメカニズムがありません。「LLM出力をバイパスコマンドとして解析する」ロジックは ありません。分離はアーキテクチャ的であり、動作的ではありません。 :::
コア不変条件
Triggerfishのすべての設計決定は1つの不変条件から流れています:
同じ入力は常に同じセキュリティ決定を生成します。ランダム性なし、LLM呼び出しなし、 裁量なし。
これはセキュリティの動作が以下であることを意味します:
- 監査可能 — どんな決定も再現して同じ結果を得られます
- テスト可能 — 決定論的なコードは自動化されたテストでカバーできます
- 検証可能 — ポリシーエンジンはオープンソース(Apache 2.0ライセンス)で、 誰でも検査できます
セキュリティ原則
| 原則 | 意味 | 詳細ページ |
|---|---|---|
| データ分類 | すべてのデータは感度レベル(RESTRICTED、CONFIDENTIAL、INTERNAL、PUBLIC)を持ちます。分類はデータがシステムに入るときにコードによって割り当てられます。 | アーキテクチャ: 分類 |
| ライトダウン禁止 | データは等しいか高い分類レベルのチャンネルと受信者にのみ流れることができます。CONFIDENTIALデータはPUBLICチャンネルに到達できません。例外なし。 | ライトダウン禁止ルール |
| セッションTaint | セッションが分類レベルのデータにアクセスすると、セッション全体がそのレベルにtaintされます。Taintはエスカレートのみ、低下しません。 | アーキテクチャ: Taint |
| 決定論的Hook | 8つの強制hookがすべてのデータフローの重要なポイントで実行されます。各hookは同期、ログ記録済み、偽造不可能です。 | アーキテクチャ: ポリシーエンジン |
| コード内のアイデンティティ | ユーザーアイデンティティはセッション確立時にコードによって決定され、LLMがメッセージコンテンツを解釈するのではありません。 | アイデンティティ & 認証 |
| エージェント委任 | エージェント間の呼び出しは暗号化された証明書、分類上限、深さ制限によって管理されます。 | エージェント委任 |
| シークレット分離 | 認証情報はOSキーチェーンまたはvaultに保存され、設定ファイルには決して保存されません。プラグインはシステム認証情報にアクセスできません。 | シークレット管理 |
| すべてを監査 | すべてのポリシー決定は完全なコンテキストでログ記録されます:タイムスタンプ、hookタイプ、セッションID、入力、結果、評価されたルール。 | 監査 & コンプライアンス |
従来のAIエージェントとTriggerfish
ほとんどのAIエージェントプラットフォームはLLMに安全性を強制することを依存しています。 システムプロンプトに「機密データを共有しないでください」と書き、エージェントが従うことを 信頼します。このアプローチには根本的な弱点があります。
| 側面 | 従来のAIエージェント | Triggerfish |
|---|---|---|
| セキュリティ強制 | LLMへのシステムプロンプト指示 | LLMの下の決定論的なコード |
| プロンプトインジェクション防御 | LLMが抵抗することを期待 | LLMはそもそも権限を持たない |
| データフロー制御 | LLMが共有しても安全なものを決定 | 分類ラベル + コード内のライトダウン禁止ルール |
| アイデンティティ確認 | LLMが「私は管理者です」を解釈 | コードが暗号化されたチャンネルアイデンティティをチェック |
| 監査証跡 | LLM会話ログ | 完全なコンテキストを持つ構造化されたポリシー決定ログ |
| 認証情報アクセス | すべてのユーザーへのシステムサービスアカウント | 委任されたユーザー認証情報;ソースシステムの権限を継承 |
| テスト可能性 | ファジー — プロンプトの文言に依存 | 決定論的 — 同じ入力、同じ決定、毎回 |
| 検証のためにオープン | 通常はプロプライエタリ | Apache 2.0ライセンス、完全に監査可能 |
Triggerfishは、LLMが信頼できないと主張しているのではありません。LLMはセキュリティ
強制のための間違ったレイヤーだと主張しています。よくプロンプトされたLLMはほとんどの場合 指示に従います。しかし「ほとんどの場合」はセキュリティの保証ではありません。Triggerfish は保証を提供します:ポリシーレイヤーはコードであり、コードは指示された通りのことを 毎回行います。 :::
多層防御
Triggerfishは13の防御レイヤーを実装しています。単独ではどのレイヤーも十分ではありません。 合わせて、セキュリティ境界を形成します:
- チャンネル認証 — セッション確立時のコード検証されたアイデンティティ
- 権限対応データアクセス — ソースシステムの権限、システム認証情報ではない
- セッションtaint追跡 — 自動、必須、エスカレートのみ
- データ系譜 — すべてのデータ要素の完全なプロベナンスチェーン
- ポリシー強制hook — 決定論的、回避不可能、ログ記録済み
- MCP Gateway — ツールごとの権限による安全な外部ツールアクセス
- プラグインサンドボックス — Deno + WASMダブル分離
- シークレット分離 — OSキーチェーンまたはvault、設定ファイルではない
- ファイルシステムツールサンドボックス — パスジェイル、パス分類、 taintスコープのOSレベルI/O権限
- エージェントアイデンティティ — 暗号化された委任チェーン
- 監査ログ — すべての決定が記録、例外なし
- SSRF防止 — IPデナイリスト + すべてのアウトバウンドHTTPのDNS解決チェック
- メモリ分類ゲーティング — セッションtaintレベルに強制される書き込み、
canFlowToでフィルタリングされる読み取り
次のステップ
| ページ | 説明 |
|---|---|
| 分類ガイド | チャンネル、MCPサーバー、統合に適切なレベルを選択するための実践的なガイド |
| ライトダウン禁止ルール | 基本的なデータフロールールとその強制方法 |
| アイデンティティ & 認証 | チャンネル認証とオーナーアイデンティティの確認 |
| エージェント委任 | エージェント間アイデンティティ、証明書、委任チェーン |
| シークレット管理 | Triggerfishがティア全体で認証情報を処理する方法 |
| 監査 & コンプライアンス | 監査証跡の構造、トレース、コンプライアンスエクスポート |
