给Agent加安全边界,用白名单限制文件、命令和网络

给 Agent 配置安全边界,重点不是告诉它“不要乱来”,而是让它即使想乱来也碰不到关键文件、执行不了危险命令、连不上不该连的地址。
下面按最小可用方案讲清楚准备条件、具体配置和验证方式,环境以 Linux 服务器上运行一个具备文件读写和命令执行能力的 Agent 为例。

先明确边界落在哪几层

Agent 的“越权”通常来自三个入口:读写文件、执行命令、访问网络。
配置边界时按这三层分别设限,不要把希望寄托在提示词上。

  • 文件层:只允许访问指定工作目录,其他路径拒绝。
  • 命令层:只允许执行白名单内的命令,禁止 rm -rf、curl 上传、修改系统配置等操作。
  • 网络层:默认不允许主动出网,需要调用外部接口时单独放行域名或 IP。

前提条件:Agent 以独立低权限用户运行,不要用 root;
工作目录提前建好并设好属主。
下面以用户 agent、工作目录 /srv/agent/work 为例。

sudo useradd -r -s /usr/sbin/nologin agent
sudo mkdir -p /srv/agent/work
sudo chown -R agent:agent /srv/agent

用白名单限制文件与命令

如果 Agent 的配置支持声明式策略,优先在策略文件里写死允许范围。
一个最小策略可以这样表达:

filesystem:
  allow:
    - /srv/agent/work
  deny:
    - /etc
    - /root
    - /home
commands:
  allow:
    - ls
    - cat
    - grep
    - python3
  deny:
    - rm
    - curl
    - wget
    - chmod
    - chown
network:
  outbound: false

如果 Agent 本身没有内置策略引擎,可以用系统层兜底:用 chroot 或容器挂载只读目录,把可写范围限制在工作目录内。
命令层则通过在 Agent 调用 shell 前加一层包装脚本来校验,只放行白名单命令。

#!/bin/bash
# /usr/local/bin/agent-exec.sh
ALLOWED="ls cat grep python3"
CMD="$1"
for c in $ALLOWED; do
  if [ "$c" = "$CMD" ]; then
    exec "$@"
  fi
done
echo "command denied: $CMD" >&2
exit 126

把 Agent 的执行入口指向这个包装脚本,并确保 agent-exec.sh 属主为 root、权限 755,普通用户无法修改。

验证边界是否真的生效

配置完成后至少做三类越界测试,确认拦截发生在执行前而不是执行后:

  1. 让 Agent 读取 /etc/passwd,预期返回拒绝访问或空结果,不应输出文件内容。
  2. 让 Agent 执行 rm -rf /srv/agent/work/test,预期返回 command denied 并退出码非 0。
  3. 让 Agent 尝试访问外部地址,预期连接超时或被防火墙拒绝。

检查命令是否被拦截,可以手动调用包装脚本:

sudo -u agent /usr/local/bin/agent-exec.sh rm -rf /srv/agent/work/test
echo $?

如果返回 command denied 且退出码为 126,说明命令层生效。
文件层验证时,直接用 agent 用户尝试读取越界路径,确认返回 Permission denied。

容易踩坑的地方

  • 只改提示词不改执行层:模型仍可能输出危险命令,必须在真正执行前拦截。
  • 白名单漏掉参数:python3 放行后仍可能通过 -c 执行任意代码,需要评估是否允许解释器,或进一步限制参数。
  • 工作目录权限过宽:如果 /srv/agent/work 对 agent 用户可写,Agent 可以写入脚本再执行,需要配合 noexec 挂载或禁止执行权限。
  • 忘记出网限制:默认拒绝出网,需要外部接口时单独放行域名,不要整机放开。

配置完成后,建议每次变更策略都重新跑一遍越界测试,并记录在变更单中。
安全边界配置不是一次性的,后续新增工具或接口时,要同步更新白名单和验证用例。

分享到:
上一篇
Agent治理框架配置从策略文件到拦截验证的落地方法
下一篇
Agent成本控制配置:给模型调用加上预算与限流
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意