Skip to content

[Feature] 增加 Agent Sandbox 出网域名策略和工具返回内容安全审查 #7345

Description

@Mrxia7757

例行检查

  • 我已确认目前没有类似 features
  • 我已确认我已升级到最新版本
  • 我已完整查看过项目 README,已确定现有版本无法满足需求
  • 我理解并愿意跟进此 features,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 features 可能会被无视或直接关闭

功能描述

希望 FastGPT 增加 Agent Sandbox 出网控制和工具返回内容安全审查能力。

当前 Agent 使用 Sandbox 联网搜索、访问网页、调用第三方 API 或检索公开代码仓库时,第三方返回数据可能包含政治、色情、暴力、煽动、违法及其他高风险内容。

这类内容并非用户主动输入,也不一定由大模型生成,而是来自不受信任的外部网站、搜索摘要、网页正文、仓库描述、评论或 API 数据。

当前可能出现以下情况:

  1. 用户提出正常的技术问题;
  2. Agent 通过 Sandbox 联网搜索;
  3. 第三方返回内容包含高风险文本;
  4. 大模型识别到风险后拒绝回答或直接中断;
  5. 但 Sandbox 的原始工具返回仍可能显示在工具卡片、运行详情或流式界面中;
  6. 原始内容还可能进入模型上下文、对话记录、Redis、MongoDB 或日志。

这意味着即使最终模型没有输出违规回答,用户仍可能直接看到工具原始返回。对于企业私有化部署,这是非常严重的内容安全风险。

希望 FastGPT 在 Sandbox 请求和响应边界提供以下能力。

1. Sandbox 出网控制

1.1 支持完全禁止 Sandbox 联网。

1.2 支持默认允许联网。

1.3 支持默认拒绝,仅允许白名单域名。

1.4 支持默认允许,但拒绝指定黑名单域名。

1.5 支持域名及通配符规则,例如:

  • example.com
  • *.example.com

1.6 支持 HTTP、HTTPS、端口及协议限制。

1.7 支持针对不同团队、应用、Agent、Skill 设置不同策略。

1.8 动态创建的 Sandbox 和对应 egress 容器应自动继承安全策略。

1.9 支持配置策略异常时的行为:

  • fail-open:审查异常时放行;
  • fail-closed:审查异常时阻断。

企业安全场景建议默认支持 fail-closed

1.10 域名策略应覆盖:

  • DNS 解析后的 IP 变化;
  • HTTP 重定向;
  • CDN 地址;
  • IPv4 和 IPv6;
  • 直接使用 IP 地址绕过域名规则的情况。

1.11 提供访问审计,但默认不保存完整请求正文和响应正文。

2. Sandbox 返回内容安全审查

希望所有外部工具返回在进入 FastGPT 之前统一审查,包括:

2.1 Sandbox stdout 和 stderr。

2.2 HTTP 响应正文。

2.3 搜索结果、网页正文和网页摘要。

2.4 JSON、HTML、XML 和 Markdown 内容。

2.5 下载文件解析后的文本。

2.6 Sandbox、Skill、MCP 和自定义工具返回。

建议处理链路为:

第三方网站或 API
→ Sandbox / egress
→ 返回内容标准化
→ 安全审查
→ 允许、脱敏或阻断
→ 模型上下文、前端及持久化

安全审查应发生在以下操作之前:

  1. SSE 流式展示;
  2. 工具卡片展示;
  3. 下一轮模型请求;
  4. assistantResponses 和 nodeResponse 生成;
  5. 运行详情保存;
  6. 对话记录保存;
  7. Redis、MongoDB 及普通日志持久化。

3. 命中后的处理方式

建议支持三种处理动作:

3.1 allow:正常放行。

3.2 redact:仅替换命中字段,保留其他安全内容。

3.3 block:阻断整段内容,仅返回统一提示。

例如:

{
  "isError": true,
  "content": [
    {
      "type": "text",
      "text": "该工具返回内容触发服务器安全策略,结果已拦截。"
    }
  ]
}

命中后,原始内容不应继续发送给模型,也不应出现在前端、运行详情和普通持久化记录中。

4. 流式返回安全

联网工具可能采用流式返回。如果先展示、后审查,敏感内容仍可能被用户看到。

建议支持:

4.1 先缓存工具返回,审查通过后再展示。

4.2 或按安全窗口分段缓存,审查通过后再输出。

4.3 支持识别被拆分在多个数据块中的命中内容。

4.4 命中后立即停止后续流式输出。

4.5 已命中内容不得进入下一轮模型上下文。

5. 自定义安全审查服务

希望复用现有百度敏感校验或自定义安全校验 URL,并增加工具输出审查阶段,例如:

  • sandbox_http_response
  • sandbox_stdout
  • sandbox_stderr
  • mcp_response
  • skill_response
  • tool_response

同时支持接入企业本地部署的安全审查服务,避免将内部数据发送给第三方云平台。

应用场景

企业允许 Agent 使用 Sandbox 查询公开技术资料,但外部搜索结果中可能混入与用户问题无关的高风险内容。

期望结果:

  1. Sandbox 仍可正常联网;
  2. 外部返回内容先经过安全审查;
  3. 命中内容被脱敏或阻断;
  4. 其他安全结果仍可继续使用;
  5. 用户不会看到原始高风险文本;
  6. 原始内容不会进入模型上下文、运行详情和普通持久化记录;
  7. 大模型即使拒答或中断,也不会导致工具原始返回直接暴露。

相关示例

建议增加类似配置:

sandboxSecurity:
  network:
    mode: allowlist
    allowedDomains:
      - "docs.example.com"
      - "*.example.com"
    deniedDomains: []
    allowRedirects: false
    failMode: closed

  outputCensor:
    enabled: true
    provider: custom
    stages:
      - sandbox_http_response
      - sandbox_stdout
      - sandbox_stderr
      - mcp_response
      - skill_response
      - tool_response
    actionOnHit: block
    replacementText: "该工具返回内容触发服务器安全策略,结果已拦截。"
    scanBeforeStreaming: true
    persistRawContentOnHit: false

该需求不应仅针对某个网站或某一类关键词,而应作为 Sandbox 和 Agent 工具系统的统一安全边界。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions