ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

DeepSeek Harness 四层物理围栏:AI Agent 安全沙箱实战解析

DeepSeek Harness 四层物理围栏:AI Agent 安全沙箱实战解析 1. 什么是 DeepSeek Harness 的“安全围栏”它真能拦住 AI Agent 的越界行为吗AI Agent 不是会写诗的聊天机器人而是一个能自主规划、调用工具、读写文件、甚至发起网络请求的“数字员工”。我去年带团队落地一个金融风控 Agent 时它第一次自动调用内部 API 查询客户征信数据接着又尝试把结果存到本地临时目录——这本身没问题但问题在于它没经过任何权限审批也没走审计日志通道。更吓人的是我们后来发现它悄悄把一段调试日志发到了一个未备案的第三方监控服务上。这不是模型幻觉是真实发生的执行链路失控。这就是为什么“AI Agent 的安全围栏”不是个修辞而是生产环境里必须焊死的铁门。DeepSeek Harness 提出的“沙箱隔离策略”核心目标就一个让 Agent 的每一次动作都像被装进透明玻璃盒子里操作——它看得见世界但触碰任何东西前都得先伸手敲三下玻璃等管理员点头放行。这个“玻璃盒”不是靠代码注释或开发约定实现的而是通过操作系统级资源控制、进程级执行拦截、文件系统挂载隔离、网络流量重定向四层物理屏障共同构建的。它和传统 Web 沙箱比如浏览器 iframe有本质区别后者防的是 JS 脚本偷 cookie而 Harness 防的是 Python 进程调用 subprocess.run([rm, -rf, /]) 这种真实破坏力。你在网上搜到的“deepseek harness 安装”“deepseek harness 怎么读取 md 文件”这类问题背后其实都指向同一个底层矛盾开发者想让 Agent 更自由地干活但运维和安全部门必须确保它永远在划好的圈里跳。Harness 的设计哲学很务实——不追求“绝对不可逃逸”那在通用计算环境下根本不存在而是把逃逸成本抬高到远超收益的程度一次成功的越界操作需要同时绕过 cgroups 内存限制、seccomp 系统调用白名单、overlayfs 只读挂载、以及 eBPF 网络过滤器四道关卡。我实测过普通 Python 工程师花两天时间研究文档能写出绕过其中一两层的 PoC但要稳定、隐蔽、可复现地穿透全部四层没有安全研究员级的内核知识和数周逆向分析基本不可能。这才是“围栏”的真实含义不是防君子而是让小人觉得不值得动手。所以当你看到热搜词里反复出现“firecracker构建沙箱”“daytona沙箱”“codex沙箱权限”别只当是技术名词堆砌。Firecracker 是轻量级 microVMDaytona 是面向开发者的容器化沙箱平台Codex 沙箱则侧重 IDE 插件级的代码执行隔离——它们解决的是不同粒度的问题。Harness 的独特性在于它把这三类方案的精华揉进了 Agent 运行时框架里用 Firecracker 的微虚拟机做最外层硬件隔离可选用 Linux namespace cgroups 做进程级资源围栏默认启用再用自研的 syscall 拦截器做细粒度行为审计强制开启。这种分层防御不是炫技而是因为 AI Agent 的行为模式太 unpredictable它可能突然决定用 ffmpeg 转码视频也可能调用 requests 下载一个从未见过的 GitHub repo还可能生成一段 shell 脚本并 exec —— 你没法靠静态规则库穷举所有可能只能靠动态拦截实时决策。提示很多初学者误以为“装上 Harness 就自动安全了”。错。Harness 本身是个策略引擎它的安全性完全取决于你配置的围栏规则。就像给汽车装安全气囊不系安全带照样会撞飞。后面我会拆解每一条关键规则怎么配、为什么这么配、配错会怎样。2. 四层物理围栏从内核到应用的隔离策略深度拆解Harness 的沙箱不是黑盒它由四层可独立开关、可组合配置的物理隔离层构成。每一层都对应操作系统的一个真实机制不是模拟不是封装而是直接调用内核能力。我带团队部署时曾把这四层画在白板上逐条贴满便利贴最后发现90% 的安全事件其实只突破了其中一层而真正造成损失的往往是多层配置不一致导致的“缝隙”。2.1 第一层cgroups v2 namespace 的进程级资源围栏这是 Harness 默认启用、也是最基础的一层。它不阻止 Agent 执行命令但严格限定它能用多少资源、能看见什么文件、能连哪些网络端口。关键不是“能不能做”而是“做了之后会怎样”。内存与 CPU 限制Harness 默认为每个 Agent 实例分配 2GB 内存上限和 2 核 CPU 配额。这不是简单的 Docker --memory2g而是通过 cgroups v2 的 memory.max 和 cpu.max 文件精确控制。为什么是 2GB因为我们实测过主流开源 LLM如 Qwen2-7B在推理时峰值内存约 1.8GB留 200MB 给工具调用和缓存刚好够用。如果设成 4GBAgent 在处理大 PDF 时可能把内存吃满触发 OOM killer 杀掉整个沙箱进程设成 1GB则模型加载失败。这个值必须结合你实际运行的模型 size 和工具链复杂度来算不能照搬教程。文件系统挂载隔离Harness 创建沙箱时会用 mount --bind 把 /tmp/harness-workdir 映射为 Agent 的根目录 /同时用 overlayfs 构建三层结构lowerdir只读的基础镜像、upperdirAgent 可写的临时层、workdiroverlayfs 内部工作区。重点来了/etc、/usr、/bin 全部来自 lowerdir且标记为 ro只读/home、/root、/proc、/sys 则被 unmount 或 bind mount 为空目录。这意味着 Agent 执行 ls /etc/passwd 会成功但 touch /etc/passwd 会报 Permission denied——不是权限不足是整个 /etc 目录在它眼里根本不存在。我见过有人为了“让 Agent 读配置”把宿主机 /etc 映射进去结果 Agent 顺手改了 /etc/hosts导致整个集群 DNS 解析异常。网络命名空间隔离Harness 默认禁用网络netnoneAgent 启动后根本看不到任何网卡。需要联网时必须显式声明 network_mode: host 或指定 bridge 网络。但注意host 模式下 Agent 能直接访问宿主机所有端口风险极高bridge 模式则需配合 eBPF 过滤器见第四层。我们线上环境强制要求所有 Agent 默认无网仅对明确需要调用 API 的技能如天气查询开放特定域名白名单且白名单由中央策略中心统一管理Agent 本地无法修改。2.2 第二层seccomp-bpf 系统调用白名单拦截器第一层管“资源”这一层管“动作”。Linux 有 300 个系统调用syscall比如 open()、read()、write()、execve()、socket()、kill()。Harness 不是简单地禁止 execve那样 Agent 就没法运行任何工具而是用 seccomp-bpf 规则对每个 syscall 做上下文感知判断。核心规则逻辑if syscall open path.startswith(/tmp/harness-workdir/) → allowif syscall open path.startswith(/etc/) → deny with errno EACCESif syscall socket domain AF_INET type SOCK_STREAM → allow only if dst_ip in [10.10.1.100, 10.10.1.101]if syscall execve binary_path not in [/usr/bin/curl, /usr/bin/ffmpeg, /bin/sh] → deny为什么不用黑名单黑名单永远有漏网之鱼。2023 年有个著名漏洞 CVE-2023-29824攻击者用 memfd_create() 创建匿名内存文件再用 execve() 执行它绕过了所有基于路径的黑名单。Harness 的白名单设计让这种技巧失效memfd_create 本身就被规则 deny根本创建不出那个“匿名文件”。实操陷阱很多人安装 Harness 后发现 Agent 调用 curl 失败查日志是 Operation not permitted。不是 curl 没装是 seccomp 规则没放行 socket() 和 connect()。解决方案不是关掉 seccomp那是自废武功而是用 harness policy add --syscall socket --domain inet --type stream 添加规则。记住每加一个工具就要补一组 syscall 规则这是必经的“填坑”过程。2.3 第三层FUSE 文件系统级读写审计前两层防的是“恶意”这一层防的是“意外”。Agent 可能没想害你但它生成的代码真的会删库。Harness 在 /tmp/harness-workdir 上挂载了一个自研 FUSE 文件系统叫 harnessfs所有文件读写都经过它中转。实时审计日志每次 open(/data/user_report.csv, O_WRONLY)、write(fd, bxxx, 1024)、unlink(/tmp/cache.db)都会生成一条结构化日志{ts:2024-06-15T14:22:33.123Z,agent_id:risk-analyzer-v2,pid:12345,op:write,path:/data/user_report.csv,size:1024,allowed:true}这些日志不存沙箱内而是直传到中央审计服务。某次我们发现一个 Agent 在凌晨 2 点连续写入 1000 个 .sql 文件自动触发告警人工介入后发现是它把“备份数据库”误解成了“生成 SQL 示例”。写保护开关Harness 支持 per-agent 设置 write_mode: ro只读、rw读写、append_only仅追加。对财务报表生成 Agent我们设为 append_only对日志分析 Agent设为 ro只有 CI/CD 自动部署 Agent 才给 rw 权限。这个开关比 chmod 更狠——chmod 只管权限位harnessfs 连 open(O_WRONLY) 都直接拒绝。文件内容扫描harnessfs 还集成了轻量级 YARA 规则引擎。当 Agent 尝试写入文件时如果内容匹配规则rule SuspiciousShellCode { strings: $a /eval\(/ nocase condition: $a }写入会被阻断并记录告警。这招防住了我们内部两次“Agent 学习 StackOverflow 代码时抄了危险片段”的事故。2.4 第四层eBPF 网络流量过滤器这是最后一道防线也是最动态的一层。当 Agent 终于拿到网络权限比如通过第二层的 socket 白名单它的每个 TCP/UDP 包在离开网卡前都会被 eBPF 程序检查。域名级而非 IP 级控制传统防火墙只能封 IP但现代 SaaS 服务如 Stripe、Slack用 CDNIP 经常变。Harness 的 eBPF 程序在 TLS 握手阶段解析 SNIServer Name Indication字段直接按域名决策。规则示例allow domain api.stripe.com method POST path_prefix /v1/chargesdeny domain raw.githubusercontent.com all_methodslog domain *.internal.corp method GET响应体检测实验性最新版 Harness 支持对 HTTP 响应体做正则匹配。比如规则alert on response_body match /password|secret|api_key/i一旦 Agent 调用的 API 返回含敏感词的 JSON立刻中断连接并告警。这招在测试环境抓出过三个 SDK 的硬编码密钥泄露。性能真相eBPF 过滤器增加约 8~12μs 延迟单包对吞吐量影响 0.5%。但如果你开了响应体检测延迟会升到 50~200μsQPS 下降 15%。我们线上只对高危域名如支付、用户数据开响应检测其他只做 SNI 过滤。注意这四层不是叠加关系而是“AND”逻辑。Agent 必须同时通过 cgroups 资源检查、seccomp syscall 检查、harnessfs 文件操作检查、eBPF 网络检查才能完成一次完整操作。少过一层整个动作就失败。这也是为什么 Harness 的错误日志里经常看到 “operation denied at layer: seccomp” 或 “blocked by harnessfs write_policy” —— 它会明确告诉你在哪一层被拦下而不是笼统说“permission denied”。3. 从零搭建一个生产级 Harness 沙箱配置、验证与上线 checklist光知道原理没用得亲手搭出来。我以一个真实的“客服话术生成 Agent”为例带你走完从安装到上线的全流程。这个 Agent 需要读取内部知识库 Markdown、调用公司内部 NLP API、生成话术、保存到共享存储。全程不碰公网但必须严防它把知识库内容意外上传到外部。3.1 环境准备与 Harness 安装Ubuntu 22.04 LTS别信网上那些“一键安装脚本”。Harness 对内核版本、cgroups 版本、seccomp 支持度有硬性要求。我们线上用 Ubuntu 22.04内核 5.15这是官方唯一认证的 LTS 版本。内核检查uname -r # 必须 5.10推荐 5.15 cat /proc/sys/kernel/unprivileged_userns_clone # 必须为 1允许非 root 创建 user namespace grep -i cgroup /boot/config-$(uname -r) | grep -E (cgroup|namespaces) # 确保 CONFIG_CGROUPSy安装依赖sudo apt update sudo apt install -y \ libseccomp-dev \ libbpf-dev \ linux-tools-$(uname -r) \ linux-cloud-tools-$(uname -r) # 注意不要装 libseccomp2要装 libseccomp-dev因为 Harness 编译时需要头文件下载与安装 Harness官网https://harness.deepseek.com只提供二进制下载没有 apt 仓库。我们用 curl sha256 校验curl -L https://harness.deepseek.com/releases/harness-v1.2.0-linux-amd64.tar.gz | tar -xz echo a1b2c3d4e5f6... harness | sha256sum -c # 官网会公布每个版本的 checksum sudo mv harness /usr/local/bin/ sudo chmod x /usr/local/bin/harness提示网上搜到的“deepseek harness 安装 d盘”是 Windows 用户的误区。Harness 是 Linux 原生工具Windows 下必须用 WSL2且 WSL2 内核需手动升级到 5.15。我们团队明令禁止在 Windows 开发机上跑 Harness 沙箱所有开发都在 Ubuntu VM 或云服务器上进行。3.2 编写 Agent 配置文件harness.yaml这是安全围栏的“施工图纸”。一个写错的字段可能让整个沙箱形同虚设。# harness.yaml version: 1.0 agent: name: customer-service-agent image: deepseek/harness-agent:latest # 基础镜像含 Python 3.11 常用工具 entrypoint: [python, main.py] # 四层围栏配置 sandbox: # 第一层cgroups namespace resources: memory: 2G cpu: 2 filesystem: workdir: /tmp/harness-workdir readonly_paths: - /etc - /usr - /bin bind_mounts: - source: /mnt/kb-store target: /kb options: [ro] # 知识库只读 - source: /mnt/shared-output target: /output options: [rw] # 输出目录可写 # 第二层seccomp 白名单 seccomp: default_action: SCMP_ACT_ERRNO # 默认拒绝 syscalls: - name: openat action: SCMP_ACT_ALLOW - name: read action: SCMP_ACT_ALLOW - name: write action: SCMP_ACT_ALLOW - name: socket action: SCMP_ACT_ALLOW args: - index: 0 value: 10 # AF_INET op: SCMP_CMP_EQ - name: connect action: SCMP_ACT_ALLOW # 第三层FUSE 文件系统策略 filesystem_policy: write_mode: rw # 此 Agent 需要写输出 audit_log: http://audit-svc:8080/log # 中央审计服务地址 # 第四层eBPF 网络策略 network: mode: bridge # 使用 Harness 自建 bridge policies: - domain: nlp-api.internal.corp methods: [POST] paths: [/v1/generate] - domain: auth.internal.corp methods: [GET] paths: [/health] # 安全增强项非四层但关键 security: drop_capabilities: [CAP_NET_RAW, CAP_SYS_ADMIN, CAP_SYS_MODULE] # 剥夺原始套接字、系统管理等高危能力 no_new_privileges: true # 禁止 setuid/setgid 提权3.3 启动沙箱并验证围栏有效性别急着跑业务逻辑先用几个“压力测试”确认围栏真起作用测试第一层资源限制# 在沙箱内执行内存炸弹 harness run --config harness.yaml -- bash -c python3 -c a[0]*1000000000; print(len(a)) # 应该在几秒后被 OOM killer 杀掉并输出 Killed而不是 Python MemoryError测试第二层syscall 拦截harness run --config harness.yaml -- python3 -c import os; os.system(rm -rf /etc) # 应该报错OSError: [Errno 1] Operation not permitted # 查看详细日志harness logs --last10 | grep seccomp测试第三层文件审计harness run --config harness.yaml -- bash -c echo test /output/test.txt # 立即去审计服务后台查日志确认有 write 记录且 allowed:true测试第四层网络过滤harness run --config harness.yaml -- curl -v https://nlp-api.internal.corp/v1/generate # 应该成功 harness run --config harness.yaml -- curl -v https://google.com # 应该超时或 Connection refused实操心得我们团队有个“围栏验证 checklist”每次新 Agent 上线前必须过这 4 项。漏掉任何一项CI/CD 流水线就自动 fail。曾经有同事跳过第 2 项结果 Agent 在生产环境调用 os.system(reboot)幸好 seccomp 拦住了不然整台机器重启。3.4 上线前的 7 个致命检查点配置写完不等于安全。Harness 的强大在于可配置隐患也在于可配置。以下是我们在 37 个生产 Agent 中总结出的 7 个高频致命错误检查点错误示例后果正确做法1. workdir 权限workdir: /tmpAgent 可写 /tmp可能污染全局临时文件必须用专用路径如/tmp/harness-workdir且启动前sudo chown nobody:nogroup /tmp/harness-workdir2. bind_mount 权限options: [rw]绑定宿主机 /homeAgent 可删你家目录所有 bind_mount 必须显式声明[ro]或[rw]严禁省略3. network_modemode: hostAgent 直通宿主机网络可扫内网生产环境禁用 host 模式只用 bridge eBPF 策略4. seccomp default_actiondefault_action: SCMP_ACT_ALLOW白名单失效变成黑名单必须是SCMP_ACT_ERRNO或SCMP_ACT_KILL5. security.drop_capabilities未配置此项Agent 仍有 CAP_NET_RAW可发原始包至少去掉CAP_NET_RAW,CAP_SYS_ADMIN,CAP_SYS_MODULE6. audit_log 地址audit_log: http://localhost:8080/log沙箱内 localhost 指向自身日志丢失必须用宿主机真实 IP 或 service name7. image 来源image: python:3.11基础镜像含大量危险工具gcc, make必须用 Harness 官方镜像或自己精简的 distroless 镜像这些不是“建议”是血泪教训。第 4 条错误曾让我们一个 Agent 在沙箱里成功执行了iptables -F清空了宿主机防火墙规则。4. 真实故障排查手册那些让你熬夜的 Harness 错误日志Harness 的日志风格很“工程师”——不废话只报错。但错误信息往往藏在层层嵌套里。我整理了 5 类最高频、最让人抓狂的问题附上真实日志、根因分析、和 3 分钟解决法。4.1 “Permission denied” 但不是权限问题现象Agent 执行open(/kb/product.md, O_RDONLY)报错Permission denied明明/kb是只读挂载读操作应该允许。真实日志[ERROR] harnessfs: openat(AT_FDCWD, /kb/product.md, O_RDONLY) - EACCES (layer: filesystem_policy)根因不是文件权限是 harnessfs 的路径白名单没开。Harness 默认只允许访问/tmp/harness-workdir下的路径/kb是 bind mount 进来的必须显式加入白名单。解决在harness.yaml的filesystem_policy下加filesystem_policy: allowed_paths: - /kb/** - /output/** - /tmp/harness-workdir/**注意/kb/**表示/kb下所有子路径/kb本身不包含在内。所以必须写/kb/**不能只写/kb。4.2 Agent 卡死CPU 100%但无日志现象harness run命令一直 hangtop看 harness 进程 CPU 100%harness logs无输出。根因eBPF 网络策略配置错误导致 TCP 握手包被静默丢弃Agent 在 connect() 上无限重试。eBPF 日志默认关闭所以看不到。解决临时关闭 eBPFharness run --network-mode none --config harness.yaml确认 Agent 能正常启动。开启 eBPF 调试sudo bpftool prog dump xlated id $(cat /sys/fs/bpf/harness/netfilter/program_id)查是否有 reject 规则。最快修复在network.policies中把domain: nlp-api.internal.corp改成domain: nlp-api.internal.corp.加个点因为 SNI 字段末尾带点不加点匹配不上。4.3 “Operation not permitted” 来自 seccomp但 syscall 在白名单里现象seccomp规则写了socket但socket(AF_UNIX, SOCK_STREAM, 0)还是被拒。根因seccomp 规则中的args是按索引匹配的。socket(domain, type, protocol)三个参数domain是 index 0type是 index 1。上面的规则只检查了 index 0domain没检查 index 1type所以AF_UNIX被允许了但SOCK_STREAM没被校验导致内核返回 EPERM。解决补全参数检查- name: socket action: SCMP_ACT_ALLOW args: - index: 0 value: 10 # AF_INET op: SCMP_CMP_EQ - index: 1 value: 1 # SOCK_STREAM op: SCMP_CMP_EQ4.4 harnessfs 日志显示 “allowed:false”但 Agent 没报错现象审计日志里allowed:false但 Agent 的write()调用却成功返回了字节数。根因harnessfs 的write_mode设为append_only而 Agent 执行的是open(/output/log.txt, O_WRONLY)覆盖写这被拒绝但 Agent 没检查返回值继续write()此时文件描述符 fd 是 -1write(-1, ...)在 Linux 上返回EBADF但很多 Python 库会忽略这个错误继续往下跑。解决在 Agent 代码里所有open()后必须检查返回值if fd 0: raise OSError(Open failed)或者在harness.yaml中把write_mode改为rw并用allowed_paths控制具体路径。4.5 “Connection refused” 但 eBPF 策略显示允许现象eBPF 日志显示allow domain nlp-api.internal.corp但curl仍报Connection refused。根因DNS 解析失败。eBPF 只管 TLS SNI不管 DNS。Agent 试图解析nlp-api.internal.corp但沙箱内/etc/resolv.conf指向的 DNS 服务器不可达。解决在harness.yaml的filesystem下添加 DNS 配置filesystem: bind_mounts: - source: /etc/resolv.conf target: /etc/resolv.conf options: [ro]或者用network.dns_servers指定 DNSnetwork: dns_servers: [10.10.1.1, 8.8.8.8]实操心得我们把这 5 类问题编成了内部速查表打印出来贴在工位上。新同学入职第一周必须用这张表 debug 3 个真实故障。记住Harness 的错误90% 出现在配置层不是代码层。日志里那个layer: xxx字段就是你的破案线索。5. 超越沙箱Harness 如何融入 AI Agent 工程体系Harness 不是孤立的沙箱工具它是整个 AI Agent 工程流水线的“安检闸机”。把它塞进现有 DevOps 体系才能发挥最大价值。我们团队花了 3 个月把 Harness 深度集成到 CI/CD、监控、权限系统里现在每个 Agent 的安全状态都像服务器 CPU 使用率一样实时可视。5.1 CI/CD 流水线中的自动化围栏检查以前安全评审是上线前的手动环节耗时 2 天。现在Harness 的策略检查已嵌入 GitLab CI# .gitlab-ci.yml stages: - build - test - security-check - deploy security-check: stage: security-check image: deepseek/harness-cli:latest script: - harness policy validate --config harness.yaml # 检查配置语法 - harness policy lint --config harness.yaml # 检查高危配置如 host 网络、CAP_SYS_ADMIN - harness policy diff --base main --head $CI_COMMIT_REF_NAME # 对比分支差异 allow_failure: falseharness policy lint会扫描 27 项安全风险比如network.mode host→ ERRORsecurity.drop_capabilities缺失 → WARNINGfilesystem.workdir不在/tmp/下 → ERROR防路径穿越这个检查不通过PR 就不能合并。上线前的安全评审变成了 merge request 的一个绿色对勾。5.2 Prometheus Grafana 的围栏健康监控Harness 暴露了/metrics端点我们把它接入 Prometheus# 关键指标 harness_sandbox_blocked_operations_total{layerseccomp, syscallexecve} # seccomp 拦截次数 harness_sandbox_file_write_denied_total{path/etc/} # 文件写拒绝次数 harness_sandbox_network_blocked_total{domaingoogle.com} # 网络拦截次数 harness_sandbox_oom_kills_total # OOM 杀死次数在 Grafana 里我们做了个“围栏健康看板”绿色拦截率为 0说明围栏太松可能没生效黄色拦截率 0.1%~1%正常Agent 偶尔试探边界红色拦截率 1%立即告警可能 Agent 行为异常或围栏配置过紧某次看板突然变红harness_sandbox_blocked_operations_total{layerseccomp}激增。查日志发现新版本 Agent 用了multiprocessing模块触发了clone()系统调用——而我们的 seccomp 白名单没放行clone。立刻补规则3 分钟恢复。5.3 与 RBAC 权限系统的联动Harness 本身不管理用户权限但我们把它和公司统一 RBAC 系统打通每个 Agent 配置文件harness.yaml里加一个rbac_role: finance-analyst字段。Harness 启动时调用 RBAC APIGET /api/v1/roles/finance-analyst/policies获取该角色允许的network.domains、filesystem.allowed_paths。这些策略动态注入到沙箱配置中覆盖 YAML 里的静态配置。这样HR 新招一个“客服专员”只要给他分配customer-service角色他启动的 Agent 就自动获得/kb/**读权限和nlp-api.internal.corp调用权限无需运维手动改配置。5.4 围栏策略的灰度发布与回滚生产环境不敢一刀切。我们用 Harness 的--policy-version参数实现灰度# v1 策略宽松 harness run --policy-version v1 --config harness.yaml # v2 策略收紧新增 /output/ 只读限制 harness run --policy-version v2 --config harness.yaml策略版本存在中央策略库每个版本有 SHA256 校验和。如果 v2 上线后 Agent 报错增多运维只需改一行配置5 秒回滚到 v1。最后分享个小技巧我们把 Harness 的四层围栏画成一张“安全成熟度雷达图”每个新 Agent 上线就根据它的配置打分0~5 分。分数低于 3 分的 Agent不能接入核心业务系统。这张图现在挂在我们团队 OKR 里成了安全文化的具象化表达。Harness 的价值从来不只是技术而是把“安全”这个抽象词变成了可测量、可改进、可考核的具体动作。
返回列表