---
title: "セキュリティと可視性"
description: "MCPゲートウェイがデータを守る仕組み — 権限は呼び出しごとに検査され、他人のスペースは見えず、ツールは外に出られず、削除は取り消せる。"
---

# セキュリティと可視性

エージェントにストレージエンジンへの直接アクセスを与えるということは、「致命的な三点セット(lethal trifecta)」を組み上げることを意味します — プライベートなデータ × 信頼できないノートの内容 × 外向きのチャネル。どの軸も単独なら無害ですが、3つが揃うと、ノートに仕込まれたインジェクションがあなたのデータを外へ持ち出せてしまいます。Notarium の MCPゲートウェイは、この**すべて**の軸を設定ではなく構造そのもので断ち切ります。これは利便性のためのラッパーではなく、信頼の境界です。

## 構造で断ち切られた三点セット

- **外向きのチャネルがない。** すべてのツールに `openWorldHint:false` が付いており、ネットワークに出るツールは1つもありません。スペース間の移動やコピーも存在しないため、内部でのデータ漏洩の経路も塞がれています。データの持ち出し先がそもそもないのです。
- **信頼できない内容を無害化。** サーバーの指示は静的で、ノートの内容と**決して**混ざりません — ノートの中身がツールの説明やサーバーの `instructions` に織り込まれることはありません。こうして、ノート本文へのインジェクションがエージェントへの命令になることはありません。
- **破壊的な操作は常に取り消せる。** `delete_note` はノートをゴミ箱へ送るだけです。復元も完全な消去も、エージェントではなく**人間**が行います。これが「エージェントは取り返しのつかないことをしない」という一線です。

## 呼び出しのたびに権限を検査

権限は二重に検査されます。まず `tools/list` がトークンの権限上限でフィルタされ — `read` トークンには書き込み系ツールがそもそも見えません。次にすべての `tools/call` が、対象となる特定のスペースへのアクセスを追加で検査します(`can(principal, action, {space})`)。権限の式は `effective = scopes(token) ∩ grants(principal)` — トークンのスコープ(許された操作の上限)と、スペースへの生きたメンバーシップの積です。付与を取り消せば、トークンは即座に狭まります。

管理操作(トークンの発行、メンバーの管理)は `write` よりも**上**に位置します — 漏れた `write` レベルのトークンでは、新しいトークンの発行もアクセスの付与もできません。

## 拒否 = 404、403 ではない

アクセスの拒否は 403(「許可されていない」)ではなく **404**(「そんなものはない」)として返されます。こうすることで、応答コードを手がかりに、付与された権限の外にあるノートやスペースの存在を総当たりで割り出すことはできません。他人のスペースはそもそも到達不能で、存在しないものと見分けがつきません。

```mermaid
flowchart TD
  call[tools/call] --> listed{ツールはトークンの<br/>権限上限の内か?}
  listed -->|いいえ| gone[tools/list にツールが現れない]
  listed -->|はい| acl{can principal,<br/>action, space?}
  acl -->|いいえ| notfound[404 · 列挙対策]
  acl -->|はい| exec[実行 · 来歴をログへ]
```

## 信頼できない内容の無害化

エージェントへ渡るものはすべて — タイトル、スニペット、本文、フロントマター — 送信前にサニタイズされます。疑似コントロールタグ(`<system>`、`<instructions>` など)の山括弧は無害化されます。誰かが「システム指示」を書き込んだノートも、エージェントには命令ではなくただのテキストとして届きます。

## 編集履歴は見える

すべての編集は、それを行った主体 — 特定の人物かエージェントか — を[編集履歴](/docs/concepts/versioning/)に記録します。`get_note` と `recall` は、そのノートを誰が編集したか — 人間かエージェントか、そしてどれか — を返せます。エージェントを経由したインジェクションも、可視のまま追跡可能な状態で残ります。

> [!important] これが実際に意味すること
> プロンプトによって完全に乗っ取られたエージェントでさえ、そのトークンによって縛られています — ネットワークには出られず、他人のスペースには手が届かず、取り返しのつかない削除もできず、自分に権限を付与することもできません。できる最悪のことは、自分の権限の範囲内での取り消し可能な編集にとどまり、完全な来歴がログに残ります。

## 境界線 — E2EE ではない

Notarium は**意図的に**エンドツーエンド暗号化を行いません。賢いサーバー — 検索、セマンティクス、履歴、エージェント — は平文へのアクセスを必要とします。ここでのプライバシーは、E2EE ではなく、セルフホストと自分のファイルを所有することの上に築かれます。ゲートウェイの脅威モデルが守るのは、乗っ取られた**エージェント**からであって、乗っ取られたホストからではありません — あなたはそのホストに、もともと自分のファイルを預けて信頼しているのですから。

## 次へ

- [エージェントを接続する](/docs/agents/connect/) — トークン、権限、そして OAuth ファサード。
- [検索監査](/docs/agents/audit/) — エージェントが何を検索したかの可観測性。
- [インテントツール](/docs/agents/intent-tools/) — なぜツールセットがちょうどこの形なのか。
