セキュリティ設定
Elftia は多層のセキュリティ保護メカニズムを提供し、Agent のツール呼び出しや外部メッセージインジェクションによる潜在的なリスクからシステムを保護します。このページでは、セキュリティ関連のすべての設定オプションを詳しく説明します。
セキュリティアーキテクチャの概要
Elftia のセキュリティシステムには、以下の主要コンポーネントが含まれます。
| コンポーネント | 場所 | 機能 |
|---|---|---|
| GuardianAgent | Agent 実行レイヤー | AI を使用してツール呼び出しのセキュリティをレビューします |
| PromptGuardian | Channel メッセージレイヤー | 外部メッセージ内のプロンプトインジェクション攻撃を検出します |
| Permission Mode | Agent インタラクションレイヤー | ツール実行時にユーザー確認が必要かどうかを制御します |
| InputSanitizer | Channel メッセージレイヤー | ルールベースの入力フィルタリング(正規表現マッチング) |
| AuditLogger | グローバル | すべてのセキュリティイベントの監査ログを記録します |
GuardianAgent
GuardianAgent は AI ベースのセキュリティレビューモジュールです。Agent がツール呼び出しを実行するとき、GuardianAgent はまず独立した LLM を使用して操作のリスクレベルを評価し、設定に基づいて実行を許可するかどうかを決定します。
4 つのモード
| モード | 動作 | 推奨シナリオ |
|---|---|---|
| Off | 完全に無効化され、パフォーマンスオーバーヘッドはありません | 個人利用、Agent の動作を信頼している場合 |
| Monitor | 機密性の高いツール呼び出しをレビューし、ブロックせずログのみを記録します | Agent の動作を把握したいが、中断は避けたい場合 |
| Guard | 機密性の高いツール呼び出しをレビューし、高リスクおよび重大な操作をブロックします | 日常利用、セキュリティと利便性のバランスを取りたい場合 |
| Strict | すべてのツール呼び出しをレビューし、中リスク以上の操作をブロックします | 共有環境、最大限のセキュリティが必要な場合 |
リスクレベル
GuardianAgent はツール呼び出しを 5 つのリスクレベルに分類します。
| リスクレベル | 意味 | 例 |
|---|---|---|
| None | 完全に安全 | プロジェクト内のファイル読み取り、ディレクトリ一覧の取得 |
| Low | 軽微なリスク | ワークスペース内のプロジェクトファイルへの書き込み |
| Medium | 中程度のリスク | システム状態を変更する Shell コマンドの実行、npm パッケージのインストール |
| High | 大きなリスク | 機密パスへのアクセス、ワークスペース外のファイル操作、ネットワーク操作 |
| Critical | 差し迫った危険 | 再帰的な削除コマンド、データ窃取、権限昇格 |
モード別のブロック動作
| リスクレベル | Off | Monitor | Guard | Strict |
|---|---|---|---|---|
| none | 許可 | 許可 | 許可 | 許可 |
| low | 許可 | ログ + 許可 | 許可 | 許可 |
| medium | 許可 | ログ + 許可 | 許可 | ブロック |
| high | 許可 | ログ + 許可 | ブロック | ブロック |
| critical | 許可 | ログ + 許可 | ブロック | ブロック |
機密性の高いツール
monitor モードと guard モードでは、以下の「機密性の高いツール」のみがセキュリティレビューをトリガーします。
- Bash: Shell コマンドの実行
- Write: ファイル書き込み
- Edit: ファイル編集
- Agent: Sub-Agent の生成
strict モードでは、すべてのツール呼び出し(ファイル読み取りを含む)がレビューをトリガーします。
フォールトトレランス設計
| モード | タイムアウト/エラー時の動作 |
|---|---|
| Monitor / Guard | 許可(fail-open) — レビューが利用できない場合でも通常操作をブロックしません |
| Strict | ブロック(fail-closed) — レビューが利用できない場合はデフォルトで拒否します |
レビューのタイムアウトは 15 秒です。LLM が 15 秒以内にレビュー結果を返さない場合、上記のルールが適用されます。
設定場所
Settings → Clawia → GuardianAgent Mode
目的のモードを選択します。変更は再起動なしで即座に反映されます。
監査ログ
すべてのレビュー結果(ブロックされたかどうかにかかわらず)は監査ログに記録されます。Settings → Clawia → Audit Log で過去のレビュー記録を確認できます。内容は以下のとおりです。
- タイムスタンプ
- ツール名とパラメータ
- レビュー結果(リスクレベル、理由)
- ブロックされたかどうか
PromptGuardian
PromptGuardian は Channel(マルチプラットフォームチャンネル)メッセージ向けのセキュリティ保護です。Elftia が Discord や Telegram などのチャンネルを通じて外部ユーザーからメッセージを受信すると、PromptGuardian は AI を使用して、メッセージにプロンプトインジェクション攻撃が含まれているかどうかを検出します。
3 つのモード
| モード | 動作 | 推奨シナリオ |
|---|---|---|
| Off | インジェクション検出を行いません | Channel を自分だけで使用し、すべてのメッセージ送信元を信頼している場合 |
| Monitor | インジェクションを検出し、ログに記録しますがブロックしません | 不審なメッセージがあるかを観察したい場合 |
| Block | インジェクションを検出し、不審なメッセージを遮断して友好的な拒否応答を返します | Channel を公開しており、悪意のあるユーザーから防御する必要がある場合 |
検出内容
PromptGuardian は以下の種類の攻撃を検出できます。
- Instruction Override: システム指示を上書きまたは回避しようとする試み(例: "Ignore all instructions above")
- Role Manipulation: 別の身元になりすます試み(例: "You are now DAN")
- Prompt Marker Injection: システム/指示マーカーの挿入(例:
[INST],<|im_start|>) - Prompt Extraction: システムプロンプトの内容を取得しようとする試み
- XML/Tag Injection: ツール呼び出しマーカーの注入(例:
<tool_use>,<function_calls>) - Encoding Bypass: base64 エンコード、不可視文字、その他の手法の使用
- Social Engineering: 「教育目的」や「仮定のシナリオ」を使ってセキュリティルールを回避する試み
- Multi-step Attacks: 複数のメッセージにわたって段階的に攻撃を構築する手法
ブロック時の動作
メッセージがブロックされた場合、PromptGuardian はセキュリティ検出の存在をユーザーに明かしません。代わりに、ランダムな友好的な拒否メッセージ(例: "The signal dropped~let's change the topic")を返し、攻撃者がそれに応じて戦略を調整できないようにします。
フォールトトレランス設計
PromptGuardian は fail-open 設計を採用しています。レビューがタイムアウト(10 秒)または失敗した場合、メッセージは通常どおり通過し、セキュリティ検出の失敗によってメッセージフローが中断されることはありません。
設定場所
PromptGuardian の設定は Channel のセキュリティ設定にあります。まず、セキュリティレビュー用の LLM プロバイダーとモデルを設定する必要があります。
Permission Mode
Permission Mode は、Agent がツール呼び出しを実行するときにユーザー確認を必要とするかどうかを制御します。
| モード | 動作 | 用途 |
|---|---|---|
| Default | 機密性の高い操作にはユーザー確認が必要です | 日常利用、推奨 |
| AcceptEdits | ファイル編集は自動的に許可され、その他の操作は引き続き確認が必要です | Agent のコード編集能力を信頼している場合 |
| BypassPermissions | すべての操作が自動的に許可されます | Agent を強く信頼しており、最大限の効率を求める場合 |
| Plan | Agent は計画のみを作成し、操作は実行しません | Agent の行動計画をレビューする場合 |
"BypassPermissions" モードでは、Agent がすべての操作(Shell コマンドやファイル削除を含む)を直接実行できます。Agent の動作を完全に信頼し、安全な環境にいる場合にのみ使用してください。GuardianAgent の "Guard" または "Strict" モードと併用することを推奨します。
Channel セキュリティ設定
Channel を通じて外部プラットフォームに接続する場合、以下のセキュリティオプションを設定できます。
レート制限
| 設定 | 説明 |
|---|---|
| Message Rate Limit | 特定の時間枠内でユーザーごとの最大メッセージ数を制限します |
| Global Rate Limit | Channel 全体のメッセージ処理レートを制限します |
入力フィルタリング
InputSanitizer は正規表現ベースの入力フィルタリングを提供します(PromptGuardian の前に実行されます)。
- 既知の悪意あるパターンをフィルタリングします
- 潜在的なインジェクションマーカーをクリーンアップします
- 警告ログのみを生成し、メッセージはブロックしません
ユーザーロール
Channels では、アクセス権限を制御するために、異なるユーザーにロールを割り当てることができます。
セキュリティ設定の推奨事項
個人利用
Elftia を個人利用のみに使用し、外部にサービスを提供しない場合:
| 設定 | 推奨値 |
|---|---|
| GuardianAgent | Off または Monitor |
| PromptGuardian | Off |
| Permission Mode | Default |
共有 Channel
Channel が外部ユーザーに公開され、メッセージを送信できる場合:
| 設定 | 推奨値 |
|---|---|
| GuardianAgent | Guard または Strict |
| PromptGuardian | Block |
| Permission Mode | Default |
| Rate Limiting | Enabled |
開発とデバッグ
開発およびテストのシナリオでは:
| 設定 | 推奨値 |
|---|---|
| GuardianAgent | Monitor |
| PromptGuardian | Monitor |
| Permission Mode | AcceptEdits |
これにより、開発効率に影響を与えずに、監査ログでセキュリティイベントを観察できます。
監査ログ
すべてのセキュリティイベントは監査ログに記録され、Settings → Clawia → Audit Log で確認できます。
ログには以下の情報が記録されます。
| フィールド | 説明 |
|---|---|
| Time | イベントが発生した時刻 |
| Type | GuardianAgent / PromptGuardian / Permission |
| Operation | 具体的なツール名またはメッセージ送信元 |
| Result | Allow / Block |
| Details | リスクレベル、理由の説明など |
監査ログを定期的に確認すると、Agent の行動パターンや潜在的なセキュリティ脅威を把握し、それに応じてセキュリティポリシーを調整するのに役立ちます。
その他の設定オプションについては、Settings Reference を参照してください。使用中にセキュリティ関連の問題が発生した場合は、Common Issues を確認してください。