セキュリティ
Agent NAS は、プロンプトインジェクションを防ぎません。注入されたあとに起きることを限定します。範囲の狭いリースで実行が触れられるものを区切り、ブランチで間違いを元に戻せるようにし、Rule of Two で、信頼できない内容を読んだセッションが機微なデータと外向きの経路を同時に持てないようにし、追跡できる記録を残します。
範囲と信頼の前提
- 守るもの: NAS の中のデータと履歴、認可の境界、記録の完全性、記憶の追跡可能性。
- 守らないもの: NAS の外でエージェントが行うこと、計算そのものの隔離(それはサンドボックスの仕事です)、モデル提供者の側で起きること。
- 信頼の前提: 信頼できる計算基盤(TCB)は、NAS のゲートウェイ、ポリシーエンジン、記録サービスです。ホストは侵害されておらず、サンドボックスが計算を隔離しています。TCB が侵害されれば、このページの保証は成り立ちません。
Rule of Two:セッションの不変条件
3 つの性質:[A] セッションが信頼できない内容を読んだ、[B] リースが機微なデータの読み取りを許す、[C] リースが保護された状態の変更や外向きの通信を許す。1 つのセッションでこの 3 つがそろったとき、C を起動する呼び出しは、自動では通りません。
| シナリオ | A | B | C | 結果 |
|---|---|---|---|---|
| ウェブページを要約して、ブランチ上のノートにする | はい | はい | いいえ(ブランチのみ) | 自動:ブランチの中への書き込みは C に数えません。 |
ウェブページを読んだあと、main へのマージを提案する | はい | はい | はい | Human Gate。 |
| 公開データだけを読み、作業用の領域に書く | はい | いいえ | いいえ | 自動。 |
| 外部のメールを読んだあと、メールを送る(外向きの送出) | はい | はい | はい | ゲート。secret が関わるなら拒否。 |
これは Meta の Agents Rule of Two を ストレージの境界 に実装したものです。Meta 自身も、これはリスクを減らすための経験則であって終着点ではなく、最小権限の代わりにもならないと強調していて、私たちも同じように使います。仕組みは Trust Labels にあります。
脅威モデル
| 脅威 | NAS が強制できること | NAS にできないこと | 残るリスク |
|---|---|---|---|
| T1 間接プロンプトインジェクション(ファイル、ウェブページ、メール経由) | Rule of Two、リースによる限定、ブランチ、ゲート。 | インジェクションが起きること自体の阻止、起きたあとにリースの範囲内で行われる悪意ある動作の阻止。 | リースの範囲内での悪用。 |
| T2 認証情報の漏えい(エージェントが長期の鍵を読む) | 長期の認証情報は実行の手元に置かない。シークレットスキャナーが secret をマークする。短い TTL。 | エージェントが、リースの範囲内のデータを、承認された外向きの経路へ送ることの阻止。 | リースの範囲内のデータの流出。 |
| T3 広すぎる権限と操作ミス | 範囲の狭いリース、ブランチ、ソフト削除、どのリースの外にもあるスナップショット。 | NAS の外の副作用を元に戻すこと。 | NAS の外への影響。 |
| T4 記憶への毒入れ(ロールをまたぐ拡散を含む) | 出どころと汚染、隔離、レビュー済みのものだけ自動読み込み、ロールバック。 | もっともらしく見える誤った事実の見分け。 | レビュアーが通してしまった毒。 |
| T5 リースの盗難や再利用 | 短い TTL、失効できる、任意の保持者バインド(DPoP、mTLS)。 | TTL の間の悪用の阻止。 | TTL の窓。 |
| T6 承認疲れと、ろくに見ない承認 | まれなゲート、NAS が差分を描画、承認をダイジェストに束縛、承認率の監視。 | 人間に注意深く見させること。 | 人為的なミス。 |
| T7 ログの改ざん | ハッシュチェーン、任意の外部アンカー。 | アンカーがないとき、root がログを壊すのを防ぐこと。 | 悪意のある管理者。 |
| T8 データの持ち出し(外向きの送出、共有、検索結果) | 外向きの送出にはリースの操作とゲートが必要。secret は外へ出せない。導出物はラベルを引き継ぐ。 | 人間が承認したあとの漏えいの防止、隠れチャネル。 | 承認後の漏えい。 |
| T9 サプライチェーン(スキル、MCP サーバー、プラグイン、モデル) | スキルや外部 MCP サーバーの内容は external として扱う。スキルのディレクトリは特定のコミットに固定できる。ランタイムのマニフェストは記録に書く。 | サードパーティのコードが無害だと保証すること。 | 固定してしまった悪意あるバージョン。 |
| T10 リソースの枯渇(ブランチ爆弾、予算の枯渇、読み取りのループ) | クォータ、TTL、予算、ブレーカー。 | 正当な大きなタスクと暴走の区別。 | 局所的なサービス拒否。 |
対策
- ポリシーエンジン: 決定的(Cedar や Rego 形式)、既定は拒否、拒否するときは読める理由と該当したルールを返す。LLM は呼び出さない。
- 認証情報ブローカー: 長期の鍵はブローカーが持つ。承認された外向きの操作の中でだけ、実行のために短命の下流トークンを発行する。
- 隔離と鍵: ロールごとに 1 つの Home とパス空間を持つ。
sensitiveの保持クラスは別の鍵ドメインを使う。 - サプライチェーン: スキル、MCP サーバー、プラグインの内容は
externalとして扱う。実行の開始時に、使うスキルとバージョンを記録に書く。
正直な限界
- これはプロンプトインジェクションへの防御では ありません。被害を限定し、見えるようにします。
- リースの範囲内の正当な権限は、依然として悪用されうる。
- NAS の外の副作用には何もできない。すでに送ったメール、すでに呼び出した API など。
- 隠れチャネルとサイドチャネルは対象外。
- TCB が侵害されれば、保証は成り立たない。
- 人間は間違える。ゲートはそのリスクを下げるが、なくすことはできない。
- 汚染は保守的で、摩擦と誤検知を生む。調整が必要で、拒否の理由が見えることも必要。
- 暗号粉砕が守るのは、私たちが管理できるコピーだけ。
インシデント対応
- ブレーカー:
revoke_runとrevoke_roleが、リースをただちに失効させ、ブランチを凍結する。 - ロールバック: 影響を受けたツリーを、以前のコミットに戻す。
- 追跡: 読み取りマニフェストと記録チェーンで、実行が何を読み、何を書き、どのノートに触れたかを調べる。
- 後始末: Cascade Forget で、影響を受けた導出物を削除し、報告を出す。
可観測性と監査
- 3 種類のデータ: 記録(イベント)、読み取りマニフェスト(入力の集合)、メトリクスとトレース。
- **
explain(commit):** そのコミットを生んだ実行とリース、通過したゲート、読んだもの、依存する入力を返す。 - 既存の可観測性基盤との統合: 1 回の実行は 1 つの OpenTelemetry GenAI スパンに対応し、リースとゲートはイベントとして付く。記録は JSON Lines としてエクスポートするか、SIEM に流せる。
- メトリクス: リースの発行率と拒否率、ゲートのキューの長さ、承認率、承認にかかる時間、ブランチの数と年齢、索引の鮮度、予算の消費、記録チェーンの検証結果。
- プライバシーと保持: 既定ではメタデータだけを記録し、内容は記録しない。記録の保持と内容の削除は独立している。記録そのものを読むにもリースが必要。
このページを引用する
読者・検索エンジン・エージェントのための恒久的な URL と、推奨する引用形式です。
- Markdown 版
- https://agentnas.com/ja/security/index.md
- 推奨する引用形式
- Agent NAS project. “セキュリティ.” agentnas.com, 2026-11-11. https://agentnas.com/ja/security/