Edison Watch

セキュリティモデル

致死的な3要素(The Lethal Trifecta)保護の技術アーキテクチャ。

Edison Watchは、攻撃に必要な能力の組み合わせを検出し、ブロックすることで、データ持ち出しを防止します。

脅威:プロンプトインジェクション

AIエージェントは、プロンプトインジェクション(Webページやファイルなどの外部コンテンツに隠された悪意のある指示)に対して脆弱であり、AIを操作して機密データを持ち出させます。

致死的な3要素(The Lethal Trifecta)

持ち出しには3つの能力が必要です。Edison Watchは、セッションごとの単調増加フラグを介してこれらを追跡します:

能力セキュリティフラグアクション
プライベートデータアクセスread_private_dataAIが内部ファイル、DB、またはドキュメントを読み取ります。
信頼できないコンテンツread_untrusted_public_dataAIがインターネットからデータを取得します。
外部通信write_operationAIが外部にデータを送信します(Slack、メール、API)。

強制ロジック: セッションがプライベートデータ信頼できないコンテンツの両方にアクセスした場合、その後の外部通信は、人間の承認のために一時停止されます。

セッション状態

状態はEdisonサーバーで追跡され、単調増加です:フラグが設定されると(例:プライベートデータにアクセス)、そのセッションでは解除できません。これにより、「リセット」攻撃が防止されます。

アクセス制御レベル(ACL)

ACLは、3要素の状態に関係なく、機密データが機密度の低い宛先に流れるのを防ぎます。

レベルルール
PUBLICどこにでも流れることができます。
PRIVATEPUBLICには流れません。
SECRETPRIVATEまたはPUBLICには流れません。

: エージェントがSECRETとマークされたデータベースを読み取った場合、PUBLIC Slackチャンネルへの投稿はすぐにブロックされます。

データ追跡

データタイプログ保持期間(デフォルト)
ツール呼び出しメタデータとパラメータ90日
結果切り捨てられた出力90日
セキュリティイベントフラグ変更とブロック1年
承認ユーザーの決定1年

プライバシー: 生のファイルコンテンツと完全な会話履歴は、Edisonサーバーで追跡または保存されません

資格情報の暗号化

Edisonは、保存された資格情報にゼロ知識暗号化を使用します。暗号化キーはサーバーに保存されません。

資格情報タイプ暗号化に使用するものキー保存?
ユーザー資格情報ユーザーの個人キー決して保存されません -- ハッシュのみ
管理者資格情報ドメインキー(オプション)決して保存されません -- ハッシュのみ

ユーザーのキーは、タイプされたセグメントの複合体です:user:{personal_key}.admin:{domain_key}。各セグメントは、異なるプレフィックスを持つHKDFを介して暗号化キーを導出し、暗号化の分離を保証します。設定手順については、管理者ガイド:資格情報の暗号化を参照してください。

トランスポートと認証

  • 認証: HMAC署名付きAPIキーまたはSAML 2.0/OIDC。
  • トランスポート: TLS 1.2+ 必須。
  • 分離: クライアントはEdisonサーバーとのみ通信します。MCPバックエンドへの直接クライアントアクセスはありません。

依存関係の固定

Edison Watchは、初回実行時にMCPサーバーの依存関係を自動的に固定することで、サプライチェーン攻撃を防ぎます。

目的

パッケージランナー(npxuvx)を介してインストールされたMCPサーバーは、依存関係が悪意を持って更新された場合、サプライチェーン攻撃に対して脆弱になる可能性があります。固定により、以下が保証されます:

  • 再現可能な実行: 毎回まったく同じコードが実行されます
  • 改ざん防止: ロックファイルは安全に保存され、管理者のアクションなしに変更できません
  • バージョン管理: 正確なパッケージバージョンがロックされ、予期しない更新が防止されます

仕組み

  1. 初回実行時の解決: npxまたはuvxを使用するサーバーが最初にマウントされると、Edison Watchは以下を行います:

    • 完全な推移的依存関係グラフを解決します
    • ロックファイル(npm: package-lock.json、Python: uv.lock)を生成します
    • ロックファイルをローカルデータベースに安全に保存します
  2. 一時的なランタイム: 各マウント時に:

    • 一時的なランタイムディレクトリを作成します
    • (パッケージレジストリからではなく)保存されたロックファイルから依存関係をインストールします
    • 隔離されたランタイム環境からサーバーを実行します
  3. フェイルクローズ: 固定に失敗した場合(ネットワークの問題、破損したロックファイル)、サーバーは起動しません。これにより、固定されていないコードが実行されないことが保証されます。

管理者コントロール

すべての固定管理は、管理者ダッシュボードを通じて行われます:

  • ステータスの表示: サーバー概要で固定されたパッケージバージョンと日付を表示します
  • 固定のクリア: キャッシュされたロックファイルを削除して再固定を強制します(パッケージ更新後に役立ちます)
  • すべての固定をクリア: すべてのサーバーの固定をクリアする一括操作

コマンドラインまたは環境変数の設定は必要ありません。すべてのコントロールは、セキュリティと監査可能性のためにUI駆動です。

On this page