OpenFang セキュリティベストプラクティス

約16分で読めます

自律型AIエージェントのセキュリティは軽視できません。OpenFangは設計段階から16層のセキュリティ保護を組み込んでいます:4層のサンドボックス分離、4層のネットワークセキュリティ、4層のデータセキュリティ、そして4層の監査コンプライアンスです。本稿では、3つのプリセット構成テンプレートと完全なセキュリティチェックリストを提供します。

OpenFang セキュリティベストプラクティス:16層セキュリティ保護の詳細解説

Slug: openfang-security-best-practices 分類: usage-guides (使用ガイド) ターゲットキーワード: OpenFang セキュリティ, OpenFang セキュリティ設定, エージェントセキュリティベストプラクティス 検索意図: 情報収集(OpenFangを安全にデプロイしたいユーザー) 目標文字数: 約2000文字 言語: ja


なぜエージェントのセキュリティが重要なのか?

自律型AIエージェントは、コマンドの実行、ネットワークへのアクセス、ファイルの読み書きといった強力な能力を持っています。これらを制限なく放置することは、セキュリティ上の大惨事を招く要因となります。保護されていないエージェントは、プロンプトインジェクション攻撃によって危険なコマンドを実行させられたり、機密データを漏洩させられたり、あるいは攻撃の踏み台として悪用される可能性があります。

OpenFangは設計当初からセキュリティをコアアーキテクチャの一部として捉え、16層のセキュリティ保護メカニズムを提供しています。本稿では、各層の設定方法とベストプラクティスを基礎から応用まで解説します。

セキュリティアーキテクチャの概要

OpenFangの16層セキュリティ保護は、4つの大きなカテゴリに分類されます:

カテゴリレイヤー保護目標
サンドボックス分離1–4層エージェントの実行環境を制限
ネットワークセキュリティ5–8層エージェントのネットワークアクセスを制御
データセキュリティ9–12層機密データの漏洩を防止
監査とコンプライアンス13–16層エージェントの行動を記録・監査

第1カテゴリ:サンドボックス分離

第1層:ファイルシステムサンドボックス

エージェントがアクセス可能なファイルシステムパスを制限します:

toml
[security.sandbox.filesystem]mode = "strict"                  # off / basic / strictallowed_paths = [    "./workspace/",    "/tmp/openfang/",]denied_paths = [    "/etc/",    "~/.ssh/",    "~/.aws/",]read_only_paths = [    "./config/",    "/usr/share/openfang/",]

strictモードでは、allowed_pathsにリストされていないパスには一切アクセスできません。エージェント専用の作業ディレクトリを作成することを常に推奨します。

第2層:プロセスサンドボックス

エージェントが実行可能なシステムコマンドを制限します:

toml
[security.sandbox.process]allow_shell = false              # 直接的なShellアクセスを禁止allowed_commands = [    "git",    "curl",    "python3",    "node",]denied_commands = [    "rm",    "sudo",    "chmod",    "wget",]command_timeout = 30             # コマンドの最大実行時間(秒)

allow_shell = falseは本番環境で必須の設定です。エージェントはallowed_commandsリストに含まれるコマンドを通じてのみシステムと対話できます。

第3層:メモリ制限

メモリリークや悪意のあるコードによるシステムリソースの枯渇を防ぎます:

toml
[security.sandbox.memory]max_memory_mb = 512              # エージェントのメモリ上限max_per_hand_mb = 128            # 各Handのメモリ上限oom_policy = "kill_hand"         # kill_hand / restart / notify

第4層:CPU制限

toml
[security.sandbox.cpu]max_cores = 2                    # 最大2コアまで使用可能priority = "low"                 # low / normal / highcfs_period_us = 100000cfs_quota_us = 50000             # 50% CPUクォータ

第2カテゴリ:ネットワークセキュリティ

第5層:ネットワーク分離

エージェントの送信ネットワークアクセスを制御します:

toml
[security.network]mode = "allowlist"               # allowlist / blocklist / unrestrictedallowed_domains = [    "api.anthropic.com",    "api.openai.com",    "github.com",]allowed_ports = [443, 80]block_ip_ranges = [    "10.0.0.0/8",                # 内部ネットワークへのアクセスをブロック    "172.16.0.0/12",    "192.168.0.0/16",]dns_over_https = true            # 暗号化DNSを使用

第6層:トラフィック暗号化

toml
[security.network.tls]min_version = "1.2"verify_certificates = truecertificate_pinning = [    { domain = "api.anthropic.com", pin = "sha256/..." },]

第7層:レート制限

エージェントが悪用され、大量のリクエストを送信するのを防ぎます:

toml
[security.network.rate_limit]requests_per_minute = 60tokens_per_minute = 100000burst_multiplier = 2cooldown_after_exceeded = "5m"

第8層:プロキシと出口制御

すべてのエージェントトラフィックを企業プロキシ経由で送信します:

toml
[security.network.proxy]http_proxy = "${HTTP_PROXY}"https_proxy = "${HTTPS_PROXY}"no_proxy = ["localhost", "127.0.0.1"]enforce_proxy = true             # すべてのトラフィックをプロキシ経由に強制

第3カテゴリ:データセキュリティ

第9層:入力サニタイズ

プロンプトインジェクション攻撃を防御します:

toml
[security.data.input_guard]enabled = truemode = "strict"[security.data.input_guard.rules]detect_jailbreak = truedetect_prompt_leak = truedetect_code_injection = truemax_input_length = 8000sanitize_markdown = true

入力ガードは、エージェントがユーザー入力を処理する前に、脱獄プロンプト、プロンプト漏洩の試み、コードインジェクションなどの潜在的な攻撃をスキャンします。

第10層:出力フィルタリング

エージェントの回答を通じた機密データの漏洩を防ぎます:

toml
[security.data.output_guard]enabled = true[security.data.output_guard.patterns]credit_cards = trueapi_keys = true                  # APIキー形式を検知してブロックemails = "mask"                  # mask / block / allowphone_numbers = "mask"custom_patterns = [    "\\b(?:sk|pk)_[a-zA-Z0-9]{32,}\\b",    "\\bAKIA[A-Z0-9]{16}\\b",   # AWSアクセスキー]

第11層:機密データの暗号化

toml
[security.data.encryption]encrypt_workspace = trueencrypt_logs = truekey_derivation = "argon2id"rotation_days = 30

第12層:データ最小化

toml
[security.data.minimization]log_user_inputs = false          # ユーザー入力を記録しないlog_agent_outputs = false        # エージェント出力を記録しないretention_days = 7               # ログ保持期間7日strip_pii = true                 # PII(個人情報)を自動削除

第4カテゴリ:監査とコンプライアンス

第13層:操作監査

toml
[security.audit]enabled = truelog_level = "info"[security.audit.events]command_execution = truefile_access = truenetwork_request = trueconfig_change = truehand_start_stop = true

監査ログはJSON形式で、タイムスタンプ、操作タイプ、実行者、操作詳細、結果が含まれます:

json
{  "timestamp": "2026-07-10T08:30:15.123Z",  "event": "command_execution",  "hand": "researcher",  "command": "git clone https://github.com/...",  "sandbox": "strict",  "result": "allowed",  "duration_ms": 1240}

第14層:異常検知

toml
[security.audit.anomaly_detection]enabled = truebaseline_days = 7sensitivity = "medium"           # low / medium / highalert_on = ["unusual_command", "off_hours_activity", "unusual_destination"]

第15層:コンプライアンスレポート

toml
[security.compliance]generate_reports = trueschedule = "0 0 1 * *"           # 毎月生成frameworks = ["SOC2", "ISO27001"]export_format = "pdf"

第16層:セキュリティインシデント対応

toml
[security.incident_response]auto_contain = true              # 異常検知時に自動でエージェントを隔離containment_action = "pause_all_hands"notify_channels = ["slack:#security", "email:[email protected]"]forensic_snapshot = true         # 発生時に現場のスナップショットを保存

クイックセキュリティ構成テンプレート

デプロイ環境に合わせて、適切なプリセットを選択してください:

開発環境(低セキュリティ要件)

bash
openfang security preset development

本番環境(標準セキュリティ要件)

bash
openfang security preset production

高セキュリティ環境(金融/医療/政府)

bash
openfang security preset hardened

3つのプリセットの主な違い:

設定項目DevelopmentProductionHardened
ファイルシステムbasicstrictstrict
Shellアクセス許可禁止禁止
ネットワークモードblocklistallowlistallowlist
出力フィルタリング無効有効有効
監査ログ無効有効有効
データ暗号化無効有効有効
異常検知無効mediumhigh
自動隔離無効無効有効

セキュリティチェックリスト

本番環境へのデプロイ前に、openfang security auditコマンドを使用して各項目を検証してください:

bash
openfang security audit# 出力例:# ✅ [1/16] Filesystem sandbox: strict# ✅ [2/16] Process sandbox: no shell access# ✅ [3/16] Memory limit: 512 MB# ✅ [4/16] CPU limit: 2 cores# ✅ [5/16] Network: allowlist mode# ⚠️ [6/16] TLS cert pinning: not configured# ✅ [7/16] Rate limiting: enabled# ...# Score: 14/16 — 2 recommendations pending

よくある質問

セキュリティ設定が厳しすぎてエージェントが正常に動作しない場合は?
段階的な緩和戦略をとってください。まずはhardenedプリセットから開始し、エージェントの動作を観察します。ブロックされた必要な操作については、監査ログを使用して具体的にどの項目が遮断されたかを特定し、許可リストに個別に追加してください。
プロンプトインジェクションは本当に防御できますか?
OpenFangの入力ガードは多層防御を提供しますが、完璧な防御は存在しません。ベストプラクティスは、入力サニタイズ、サンドボックス制限、ネットワーク分離といった複数の保護を組み合わせることです。インジェクションが入力ガードをすり抜けたとしても、サンドボックスとネットワーク制限によって影響を最小限に抑えることができます。
コンテナ環境(Docker/K8s)でセキュリティ層を重ねるには?
OpenFangのセキュリティ層は、アプリケーション層のセキュリティを補完するものであり、代替するものではありません。Dockerのseccomp/AppArmorプロファイルは第0層の追加保護として機能しますが、OpenFangの内蔵セキュリティメカニズムを置き換えるべきではありません。
セキュリティインシデントが発生した場合はどうすればよいですか?
1. 監査ログを確認し、インシデントの範囲を特定します。
2. auto_contain = trueが設定されていれば、エージェントは自動的に隔離されています。
3. フォレンジック用スナップショットをダウンロードします:openfang security forensics download --run-id xxx
4. 根本原因を分析し、脆弱性を修正します。
5. スナップショットから復元するか、エージェントを再初期化します。

次のステップ