セキュリティとガバナンス
Asterel は信頼済みのローカル運用者を前提にします。しかし、すべてのメッセージ、webhook、ツール結果、モデルが提案した行動が信頼できるとは仮定しません。
したがってセキュリティモデルは「複数テナント SaaS の隔離」ではありません。外部エッジを持つ、単一運用者向けコンパニオン・ランタイムの封じ込めです。
封じ込め境界
Section titled “封じ込め境界”主な境界は次です。
| 境界 | 守るもの |
|---|---|
| ツール実行 | ファイルシステム、シェル、ネットワーク、その他のローカル能力 |
| 外部入力 | Webhook、A2A、チャネルイベント、信頼シグナル |
| 秘密情報 | プロバイダーキー、チャネルトークン、OAuth 情報 |
| 記憶の書き戻し | 持続する関係状態と訂正履歴 |
| 管理アクセス | ランタイム状態、ガバナンス操作、テナントスコープ付き運用者文脈 |
各境界が必要なのは、コンパニオンのループが状態を持つからです。悪い行動や悪い記憶は、それを起こしたターンを越えて残ります。
ツールガバナンス
Section titled “ツールガバナンス”ツール呼び出しは実行前にミドルウェアを通ります。
SecurityMiddleware -> HookMiddleware -> EntityRateLimitMiddleware -> AuditMiddleware -> SemanticCompactionMiddleware -> ToolOutputCompactionMiddleware -> OutputSizeLimitMiddleware -> ToolResultSanitizationMiddleware -> SecretScrubMiddleware -> TaintMiddlewareこれによりコマンド方針、hook、レート制限、監査、出力圧縮、sanitize、秘密情報 scrub、汚染追跡のチョークポイントができます。ツール利用は接地された行動のために許可されますが、コンパニオンの安全姿勢を迂回するためには使えません。
チャネル単位の自律性とツール許可リストは、表面ごとの能力を制限できます。チャネルを広く設定しても、全体方針は適用されます。
外部入力の信頼
Section titled “外部入力の信頼”外部コンテンツはソースごとにスコア化されます。組み込みプロファイルは Discord、Slack、webhook、A2A、ブラウザ・ツール由来コンテンツ、一般ゲートウェイ入力などを区別します。運用者はソース接頭辞ごとの上書きを追加できます。
署名検証のような信頼シグナルヘッダーが意味を持つのは、信頼済みエッジがそれを設定した場合だけです。任意のクライアントが X-Signature-Verified: true を送っても、信頼の証明にはなりません。
実用上のルールは単純です。ヘッダーの文面ではなく、検証器を信頼してください。
ペアリングと管理スコープ
Section titled “ペアリングと管理スコープ”ゲートウェイのペアリングは既定で必須です。管理ルートにはテナントスコープも必要です。
Authorization: Bearer <token>X-Asterel-Tenant: <tenant-id>テナント値は、ローカル管理 API の運用者 / ワークスペース文脈です。公開 SaaS のテナント隔離と説明すべきではありません。プロダクトは単一運用者向けですが、管理 API は読み書きする状態の明示的なスコープを必要とします。
Secrets
Section titled “Secrets”プロバイダーキー、チャネルトークン、OAuth 情報はローカル秘密情報として扱います。認証情報には環境変数またはランタイムの秘密情報管理経路を使い、トークンを含む生成済み設定をコミットしないでください。
外向きの表面ではスクラブが行われますが、スクラブは最後の防衛線です。より安全なのは、秘密情報を記憶、プロンプト、ログ、運用者に見えるノートへ入れないことです。
記憶ガバナンス
Section titled “記憶ガバナンス”記憶は将来の振る舞いを変えるため、セキュリティ境界です。訂正、忘却、書き戻しは、黙った変更を避けるだけの履歴を保つ必要があります。
良いガバナンスとは次です。
- 持続する事実は、古い証拠がなかったことにせず訂正できる。
- 削除 / 忘却は、方針が許す範囲で監査可能な結果を残す。
- 公開 / 私的文脈の露出は、想起がテキストになる前に強制される。
- アイデンティティと感情ランタイム状態は、モデル出力によって気軽に編集されない。
- 運用者レビュー画面は投影を見せるだけで、第二の書き込みモデルを作らない。
送信前検証は見た目を整える最後の一手ではなく、ガバナンスの一部です。ユーザーに見えるメッセージと、そのターン後に更新される可能性のある状態の両方を守ります。
検証器が応答を止めたり修正したりする場合、それは継続性を守る行動です。ランタイムは悪いターンが関係履歴の一部になるのを防いでいます。
通常のローカル配置では:
- 信頼済みエッジが設定されていない限り、ゲートウェイはローカルのままにする
- ペアリングを有効に保つ
- 公開部屋ではチャネルの拾い上げを控えめに保つ
- チャネルが広い能力を必要としない場合は、狭いツール許可リストを使う
- 記憶訂正は黙った上書きではなく、追記 / 訂正 / 無効化として扱う
- デスクトップ / 管理画面はレビューに使い、別のランタイム所有者にしない