mistermorph Agent 安全架构设计经验

· 进步分子, 投稿

AI 总结 · 连续创业者视角(以下内容由 AI 提炼,观点归原作者;读完可不看原文)

作者开发 AI Agent mistermorph,核心洞察是将 Agent 视为权限系统工程而非提示词工程。构建了 OS/容器层(限制 sudo、rootfs 只读)、密钥管理层(auth_profile 隔离敏感信息)和应用层 Guard(redaction、allowlist、人工审批)三层防御体系,解决外泄、泄密、越权三大风险。

  • 不要试图在 Prompt 中实现沙箱功能…
  • 建立 auth_profile 机制…
  • 防御策略避免笛卡尔积爆炸,应用层 Guard 仅保留出站白名单、内容 Redaction、异步人工审批三件事
  • 配置优先于 Prompt 约束,将访问权限写成结构化的配置清单而非自然语言指令

Agent安全的核心:从“提示词工程”转向“权限系统工程”

结论先行:不要试图在 Prompt 中实现沙箱功能。Prompt 会被绕过、被投毒、被误解。真正的安全底线必须由操作系统、容器和代码配置层来硬执行。Agent 本质上是一个拥有读写文件、联网、跑 Shell 权限的程序,将其视为“权限系统工程”而非“提示词工程”,才能解决外泄、泄密、越权三大风险。

三层防御体系详解

第一层:OS/容器层——解决“能不能做”

这一层负责硬边界,不给 LLM 任何钻空子的机会。

  • 最小权限原则:服务进程只给普通用户权限,坚决不给 sudo。
  • 根文件系统只读:限制可写目录,而不是在 Prompt 里写 sensitive_path 或 denylist(黑名单必被绕过)。
  • 系统硬化:利用 systemd 的 ProtectSystem、ProtectHome、NoNewPrivileges、PrivateTmp 等选项收紧能力面。
  • 工具裁剪:直接把 curl 等高风险工具从系统里移除,只允许使用内置的 url_fetch 工具。
  • 网络下沉:如果是企业内网,将网络 egress 控制尽量下沉到容器层甚至网络层。

第二层:密钥管理层——解决“秘密接触”

核心思路:需要与外部交互时所需的密钥,永远不会出现在 Prompt 里,而是由 Agent 代持注入。

  • Auth Profile 机制:Skill(技能模块)本身不存储密钥,只声明需要的 auth_profile。Agent 作为桥接,负责在调用工具(如 url_fetch)时,将密钥注入到 Authorization Header 中。
  • 配置即权限清单:将访问权限写成结构化的配置清单(如 config.yaml),而非自然语言指令。例如,限定 Skill 只能访问特定的 url_prefixes,使用特定的 HTTP 方法,禁止代理,禁止访问私有 IP。
  • 副作用即优势:这种设计让配置更像“权限清单”,而非“模型输入”,天然隔离了敏感信息。

第三层:应用层 Guard——解决“内容越界”

Guard 是“擦屁股”的最后一道防线。为避免策略笛卡尔积爆炸导致系统不可维护,仅保留三件事:

  • 出站白名单(Allowlist):严格限制 allow_dirs 和 allow_url_prefixes。这是最强的应用层围栏。
  • 内容 Redaction:对所有输入输出进行规则匹配,抹掉已知高风险信息(如 Token、Key 片段)。
  • 异步人工审批(Async Approvals):高风险动作(如安装远程 Skill)挂起,返回 pending 状态,由人工预览源码并确认后才执行,同时保留完整审计日志。

可复现的实施步骤

  1. 部署环境隔离:使用 systemd + 普通用户 + rootfs 只读容器运行 Agent。
  2. 抽象密钥注入:设计 auth_profile 配置,让 Skill 仅声明依赖,由 Agent 核心在运行时注入凭证。
  3. 配置化权限:将所有工具的访问范围(URL前缀、HTTP方法、目录)写死在 YAML 配置中。
  4. 启用 Redaction 过滤器:在 Agent 的入出站流量中部署正则表达式过滤器,清除敏感数据。

一句话总结:在把钥匙交给 Agent 之前,先确定门有几道、哪些是铁门、哪些需要人点头、谁在门口记账。Prompt 只是门内的装饰,不是门锁。

原文 · 歌词经理:阅读原文 →

订阅《创造者日报》邮件版
每天精选可动手的搞钱机会、好用工具与稀缺观点,免费直达你的邮箱。
English reader? Subscribe the EN edition →
iMessage 邮件 联系我们
EN