OpenFang 安全最佳實踐

14分鐘閱讀

自主 AI Agent 的安全不容忽視。OpenFang 從設計之初內建 16 層安全防護:4 層沙箱隔離、4 層網路安全、4 層資料安全和 4 層審計合規。本文提供三種預設配置模板和完整安全檢查清單。

OpenFang 安全最佳實踐:16 層安全防護詳解

Slug: openfang-security-best-practices 分類: usage-guides (使用指南) 目標關鍵字: OpenFang 安全, OpenFang 安全配置, Agent 安全最佳實踐 搜尋意圖: 資訊型(使用者想安全部署 OpenFang) 目標字數: ~2000 字 語言: tw


為什麼 Agent 安全至關重要?

自主 AI Agent 擁有執行指令、存取網路、讀寫檔案的能力——這些能力如果不加限制,就是安全災難的配方。一個沒有安全防護的 Agent 可能被 Prompt Injection 攻擊誘導執行危險指令、洩漏敏感資料,或被濫用為攻擊跳板。

OpenFang 從設計之初就將安全作為核心架構的一部分,提供了 16 層安全防護機制。本文將從淺入深地介紹每一層的配置方法和最佳實踐。

安全架構概覽

OpenFang 的 16 層安全防護分為四個大類:

類別層級防護目標
沙箱隔離1–4 層限制 Agent 的執行環境
網路安全5–8 層控制 Agent 的網路存取
資料安全9–12 層保護敏感資料不被洩漏
審計與合規13–16 層記錄和審計 Agent 行為

第一類:沙箱隔離

第 1 層:檔案系統沙箱

限制 Agent 可存取的檔案系統路徑:

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 模式下,Agent 無法存取任何 allowed_paths 未列出的路徑。建議始終為 Agent 建立專用的工作目錄。

第 2 層:行程沙箱

限制 Agent 可以執行的系統指令:

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 是生產環境必須開啟的配置。Agent 只能透過 allowed_commands 清單中的指令與系統互動。

第 3 層:記憶體限制

防止 Agent 因記憶體洩漏或惡意程式碼耗盡系統資源:

toml
[security.sandbox.memory]max_memory_mb = 512              # Agent 記憶體上限max_per_hand_mb = 128            # 每個 Hand 的記憶體上限oom_policy = "kill_hand"         # kill_hand / restart / notify

第 4 層:CPU 限制

toml
[security.sandbox.cpu]max_cores = 2                    # 最多使用 2 個 CPU 核心priority = "low"                 # low / normal / highcfs_period_us = 100000cfs_quota_us = 50000             # 50% CPU 配額

第二類:網路安全

第 5 層:網路隔離

控制 Agent 的出站網路存取:

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 層:速率限制

防止 Agent 被濫用發送大量請求:

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

第 8 層:代理與出口控制

所有 Agent 流量透過企業代理出口:

toml
[security.network.proxy]http_proxy = "${HTTP_PROXY}"https_proxy = "${HTTPS_PROXY}"no_proxy = ["localhost", "127.0.0.1"]enforce_proxy = true             # 強制所有流量經過代理

第三類:資料安全

第 9 層:輸入清理

防禦 Prompt Injection 攻擊:

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

輸入清理器會在 Agent 處理使用者輸入之前掃描潛在的注入攻擊,包括越獄提示詞、提示詞洩漏嘗試和程式碼注入。

第 10 層:輸出過濾

防止敏感資料透過 Agent 回覆洩漏:

toml
[security.data.output_guard]enabled = true[security.data.output_guard.patterns]credit_cards = trueapi_keys = true                  # 偵測並遮蔽 API key 格式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 Access Key]

第 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        # 不記錄 Agent 輸出retention_days = 7               # 日誌保留 7 天strip_pii = true                 # 自動移除 PII

第四類:審計與合規

第 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              # 偵測到異常自動隔離 Agentcontainment_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

三種預設的關鍵差異:

配置項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

常見問題

安全配置太嚴格導致 Agent 無法正常工作怎麼辦?
使用逐步放寬策略。先從 hardened 預設開始,觀察 Agent 的行為。對於被阻止的必要操作,使用審計日誌定位具體被攔截的項目,然後針對性地新增到允許清單。
Prompt Injection 真的能防禦嗎?
OpenFang 的輸入清理器提供了多層防禦,但沒有任何防禦是完美的。最佳實踐是結合多層防護:輸入清理 + 沙箱限制 + 網路隔離。即使 Injection 成功繞過了輸入清理,沙箱和網路限制也能最小化影響。
如何在容器化環境(Docker/K8s)中疊加安全層?
OpenFang 的安全層與應用層安全是互補關係,不是替代關係。Docker 的 seccomp/AppArmor profiles 可以作為第 0 層額外防護,但不應替代 OpenFang 內建的安全機制。
安全事件發生了怎麼辦?
1. 檢查審計日誌確定事件範圍
2. 如果配置了 auto_contain = true,Agent 已自動隔離
3. 下載取證快照:openfang security forensics download --run-id xxx
4. 分析根因,修補漏洞
5. 從快照恢復或重新初始化 Agent

下一步