AI教程

AI 编程智能体怎样保护密钥?沙箱、最小权限与命令审批清单

用独立身份、一次性沙箱、凭据代理、受限网络、模型外命令审批和撤销演练,保护AI编程智能体使用的密钥。

AI 编程智能体通过独立身份、隔离工作区、受限网络、凭据代理、命令审批和撤销销毁保护密钥
本页目录
  1. 直接答案:不要让智能体看见它不需要的秘密
  2. 为什么重写 124997 而不新建另一个安全清单
  3. 先区分秘密、权限与能力
  4. 建立资产清单:真正需要保护的是什么
  5. 为每个任务写权限预算
  6. 第一层边界:独立身份而不是共享个人账户
  7. 第二层边界:工作区隔离与文件白名单
  8. 第三层边界:网络出口默认关闭
  9. 第四层边界:把秘密留在可信代理外侧
  10. 第五层边界:命令审批发生在模型之外
  11. 沙箱解决什么,又不解决什么
  12. 敏感文件不应依赖文件名猜测
  13. 仓库规则文件本身也是输入
  14. MCP 与扩展不能继承无限信任
  15. 短期凭据必须真的短期且可撤销
  16. Git 权限应拆成读取、推送、合并和发布
  17. 云权限按资源、动作与时间三维缩小
  18. 数据库访问优先使用合成或脱敏数据
  19. 软件包安装是代码执行,不只是下载
  20. 浏览器与网页登录会话同样是凭据
  21. 审批策略按副作用分级
  22. 避免审批疲劳
  23. 为常用动作提供窄工具,不给任意 Shell
  24. 日志应证明动作,而不是复制秘密
  25. 检测秘密要覆盖历史与产物
  26. 用金丝雀凭据验证边界
  27. 准备正常路径、越权路径与失败路径
  28. 不同操作系统需要分别验证
  29. 符号链接、挂载与套接字是常见逃逸面
  30. 缓存与临时文件也会跨任务泄露
  31. 控制成本和资源也是权限治理
  32. 异常时优先停止能力,而不是继续问模型
  33. 事故响应从撤销开始
  34. 轮换后验证旧凭据真正失效
  35. 任务结束要执行销毁清单
  36. 团队级策略与个人实验应分层
  37. 如何判断可以扩大自治
  38. 一页上线判定
  39. 远程云端智能体先核对数据落点
  40. 本地智能体先清点继承的用户权限
  41. CI 中的智能体要防止秘密跨事件泄露
  42. Webhook 与回调地址必须当作出口
  43. 临时下载链接也属于秘密
  44. OAuth 授权要检查范围与刷新能力
  45. 模型提供商密钥与业务密钥分开
  46. 多智能体协作不能隐式扩大权限
  47. 记忆与长期上下文要设置数据边界
  48. 提示和工具输出都要做数据最小化
  49. 截图、录像和终端回放要单独治理
  50. 测试数据生成器不能回填真实秘密
  51. 代码解释器和 Notebook 需要相同边界
  52. 构建系统和编译器也可能执行任意代码
  53. 容器镜像要验证来源与运行参数
  54. 策略文件必须版本化并受保护
  55. 对策略做差异审查而不是只看最终结果
  56. 用影子模式评估新阻断规则
  57. 红队用例要来自真实控制面
  58. 恢复测试要覆盖中途终止
  59. 密钥轮换方案要避免同时失效
  60. 第三方故障不能触发自动放宽
  61. 合规映射不能替代技术验证
  62. 采购智能体产品时索取可验证证据
  63. 把权限复查纳入版本升级
  64. 小团队的最低可行落地顺序
  65. 大型组织应明确控制所有者
  66. 每月复核哪些指标
  67. 把安全结论写成可失效声明
  68. 证据边界:本文没有证明什么
  69. 权限预算的最小记录表
  70. 官方证据图与使用边界
  71. 当前一手来源
  72. 继续完成相邻任务
  73. 核验日期与时效边界

直接答案:AI 编程智能体不应直接持有长期密钥。把任务放入一次性沙箱,用独立身份、最小文件与网络权限、短期凭据代理和模型外命令审批控制能力;结束后立即撤销并做负向验证。提示词里的“不要泄露”不是安全边界,沙箱也不能替代凭据隔离、审查和事故响应。

AI 编程智能体通过独立身份、隔离工作区、受限网络、凭据代理、命令审批和撤销销毁保护密钥
兰塞 AI 原创:密钥保护不是单个开关,而是身份、数据、执行、网络和撤销组成的边界。

直接答案:不要让智能体看见它不需要的秘密

保护 AI 编程智能体使用的密钥,关键不是在提示词里反复要求保密,而是让执行环境从技术上拿不到长期秘密。每个任务应使用独立身份、最小目录、受限网络和短期凭据;高风险命令在模型之外由确定性策略阻断或交给人工批准;任务结束立即撤销权限并销毁环境。沙箱只能限制影响面,不能替代凭据代理、代码审查、测试与事故响应。

为什么重写 124997 而不新建另一个安全清单

站内已经存在‘编程智能体怎样保护密钥’这一明确主意图,继续创建相似 URL 会让用户和搜索引擎难以判断主页面。旧稿篇幅短、来源核验停留在八月、没有官方证据图,也没有可执行的权限合同。本轮先在排期门禁冻结旧稿,再保留其主题与 URL 做完整重写;这样既避免内耗,也不会让旧批准状态绕过当前证据与实页验收。

先区分秘密、权限与能力

密钥是认证材料,权限是身份可执行的动作集合,能力则是文件、网络、命令和工具共同形成的实际效果。即使不把 API Key 写进提示词,智能体仍可能通过环境变量、配置文件、浏览器会话、云 CLI、SSH Agent 或日志读取到它;即使令牌是只读,开放任意网络仍可能把私有代码传出。验收必须同时覆盖数据、身份、执行和出口四个面,而不是只搜索源代码里的字符串。

建立资产清单:真正需要保护的是什么

在启动任务前列出代码仓库、客户数据、内部文档、模型提示、云资源、软件供应链、发布渠道和第三方账户。对每项资产记录所有者、敏感级别、允许用途、可接受暴露时间与恢复方式。不要把‘开发环境’笼统视为低风险:测试数据库可能含真实副本,构建日志可能含签名地址,锁文件和私有包名也可能泄露组织结构。资产不清楚,就无法定义最小权限。

为每个任务写权限预算

权限预算是一份可判定的任务合同:允许读取哪些路径、写哪些路径、运行哪些命令、访问哪些域名、调用哪些工具、使用哪种身份、持续多久、最大费用和什么动作必须停下来询问。预算应在智能体执行前由负责人批准,结束后与实际轨迹比较。若任务不断申请预算外能力,先拆分任务或补证据,不要把临时全开放变成默认配置。

第一层边界:独立身份而不是共享个人账户

能创建服务身份、工作负载身份或机器人账户时,不让智能体继承开发者的长期个人凭据。身份只加入目标仓库、测试环境和必要 API,不能管理组织、修改安全策略或访问账单。为读、写、发布分别使用不同身份;代码分析通常不需要推送,提交 PR 不等于有权合并,上线更不应与写仓库绑定。审计记录才能明确区分人和自动化动作。

第二层边界:工作区隔离与文件白名单

把任务放在一次性工作区、容器或虚拟机中,只挂载所需仓库。开发者主目录、下载目录、浏览器数据、SSH、云配置、密码管理器和其他项目默认不可见。依赖缓存若必须共享,应只读并检查内容;输出通过明确的产物通道带出,不允许智能体任意遍历宿主机。Git worktree 能隔离代码改动,却不自动隔离进程权限、网络和主目录,因此不能单独当沙箱。

第三层边界:网络出口默认关闭

若任务只做本地重构和测试,最安全的网络策略是无出口。需要下载依赖或查文档时,按域名、协议、端口和方法逐项开放,并经代理记录目的。只限制 DNS 名称还要考虑重定向、子域、IP 直连和软件包安装脚本。一个能读私有代码且可连接任意主机的智能体拥有直接外传通道;日志和告警应显示阻断事件,但不得再次记录完整秘密。

第四层边界:把秘密留在可信代理外侧

长期第三方凭据应保存在智能体不可读的密钥管理系统中。智能体只提交受约束的操作请求,可信代理校验目标、方法、参数、数据分类和配额后代为签名或注入一次性令牌,并只返回必要结果。OpenAI 官方沙箱安全文档也强调:把秘密注入环境变量仍会暴露给智能体生成的代码。凭据代理不是简单的环境变量重命名,而是执行边界。

AI 编程智能体权限预算连接任务资源动作时限阻断条件和验证证据
兰塞 AI 原创:先写权限预算,再允许执行;事后把实际轨迹与预算逐项对照。

第五层边界:命令审批发生在模型之外

命令审批器应解析工作目录、可执行文件、参数、重定向、管道、命令替换、通配符和子进程影响,再依据确定性规则允许、拒绝或要求人工确认。只做关键字黑名单很容易被解释器、别名或组合命令绕过。对删除、覆盖、改权限、修改 Git 历史、联网传输、安装依赖、部署、支付和账户管理等动作默认拒绝;人工看到的是完整命令与预期影响,而不是模糊摘要。

沙箱解决什么,又不解决什么

沙箱可以限制文件系统、网络、进程和系统调用,降低错误命令或恶意仓库的爆炸半径。它不能证明生成代码没有漏洞,不能阻止允许目录内的数据被破坏,也不能撤销已经发送的请求、发布的包或更改的云资源。还要检查沙箱外的内置文件工具、MCP 工具、IDE 扩展和浏览器能力是否受同一策略控制;某些产品只隔离终端子进程。

敏感文件不应依赖文件名猜测

除了常见的 `.env`、私钥和云配置,还要保护部署清单、签名脚本、生产域名、内部证书、备份、数据库转储、浏览器 Cookie、包管理器认证文件和包含临时链接的日志。策略最好按绝对路径和数据分类建立拒绝区,并对新文件继承保护。仅阻止读取不够:智能体也不应覆盖、删除、改名或把这些文件纳入 Git。敏感文件编辑应始终显式批准。

仓库规则文件本身也是输入

AGENTS.md、CLAUDE.md、README、问题描述、代码注释、测试快照和工具说明都可能携带恶意或过期指令。它们可以引导智能体读取凭据、访问外部地址或降低检查。把仓库内容标为不可信数据,不能让它修改系统级权限策略;权限申请必须经过独立控制面。近期 Aletheia 研究提出对规则文件做权限最小化测试,也说明‘补丁正确’不等于请求的权限合理。

MCP 与扩展不能继承无限信任

MCP 服务器和 IDE 扩展可能在宿主机上读取文件、执行代码并调用外部服务。启用前核对来源、维护者、版本、签名或摘要、更新渠道、工具清单、参数约束和数据出口。禁止自动发现后无审核接入,防止工具名称遮蔽与描述注入。给每个工具单独授予资源范围,不因为一个服务器中有低风险查询工具,就把同服务器的删除和管理工具一起开放。

短期凭据必须真的短期且可撤销

使用按任务生成、范围受限、有明确到期时间的令牌,并记录颁发者、使用者、资源、方法和撤销入口。到期时间不能代替主动撤销:任务提前完成、异常终止、日志出现疑似泄露或工作区丢失时要立即失效。测试撤销后现有连接、刷新令牌和缓存授权是否仍能工作。若供应商只能提供长期密钥,应通过代理缩小能力,而不是直接挂载。

Git 权限应拆成读取、推送、合并和发布

智能体完成日常编码通常只需要克隆目标仓库、推送自己的分支和创建 PR。它不应修改分支保护、批准自己的 PR、强推主分支、读取组织级秘密或触发生产部署。工作流令牌默认只读,单个作业按需提升;来自外部分支的代码不能在带写令牌和秘密的特权上下文执行。合并由受保护规则和独立审查决定,发布使用另一个身份。

云权限按资源、动作与时间三维缩小

不要给智能体通用管理员角色。为单个测试项目、命名空间或资源前缀授权,只开放任务所需 API 动作,并设置会话时限、预算和区域。基础设施变更先产生计划,在无生产写权限的环境审查;删除、公开访问、跨账户信任、IAM 与密钥变更必须人工批准。云审计日志保存调用身份和参数摘要,但对令牌、用户数据和请求体执行脱敏。

数据库访问优先使用合成或脱敏数据

代码生成和测试不应默认连接生产数据库。提供版本匹配的本地结构、合成数据或经审批的脱敏快照;账户只允许目标 schema 与必要操作,设置查询超时、行数和费用上限。只读账户仍可能泄露全部数据,故还需列级、行级和导出限制。迁移在隔离环境演练,生产执行由独立流水线完成,并保留回滚或前向修复路径。

软件包安装是代码执行,不只是下载

npm、pip、Cargo、Maven 和容器构建可能执行安装脚本、解析私有源并访问网络。锁定依赖和注册表,验证包名、版本、完整性与许可证;对新依赖要求人工审查。安装阶段使用不含生产秘密的环境和受限出口,避免依赖脚本读取凭据。缓存只读并定期重建。漏洞扫描能发现已知问题,但不能证明包来源可信或安装脚本没有越权行为。

浏览器与网页登录会话同样是凭据

浏览器 Cookie、Local Storage、已登录标签页和单点登录会话可能比 API Key 权限更大。让智能体操作网页时使用独立浏览器配置、专用测试账户和域名白名单,不复用个人浏览器。提交、购买、删除、发送消息与授权应用等副作用要求显式确认。截图和网络日志应裁掉个人信息与令牌;任务结束销毁浏览器配置并撤销会话。

审批策略按副作用分级

观察类动作可在批准目录中自动执行;可逆的本地编辑允许在沙箱中执行并保留差异;外部副作用如推送分支、创建工单或发送消息,需要受限身份和确认;不可逆或高影响动作如部署、删除数据、轮换密钥和变更权限应默认拒绝或由责任人批准。分级要结合组织环境,同一动作在测试与生产中的风险不同,不能照搬通用清单。

避免审批疲劳

如果每个低风险读取都弹窗,使用者会习惯无脑确认,高风险动作反而失去辨识度。先通过更窄的工作区、工具接口和网络策略减少申请,再把批准集中在数据跨边界、不可逆修改和权限提升上。审批界面显示目标资源、完整参数、来源输入、差异、可逆性和过期时间。会话级授权必须有清晰范围,禁止一个模糊的‘始终允许’覆盖所有未来仓库。

为常用动作提供窄工具,不给任意 Shell

能用 `run_targeted_tests`、`read_issue`、`create_draft_pr` 等用途明确的工具时,不开放通用命令执行。窄工具对参数做 schema 校验、固定工作目录、限制输出和副作用,并在服务端检查授权。确需 Shell 时只在隔离环境开放,限制解释器、子进程和资源。工具名称不是安全边界,仍需验证参数与调用者身份,防止通过看似安全的工具读取任意路径。

日志应证明动作,而不是复制秘密

审计记录至少包含任务 ID、身份、策略版本、工具或命令、目标资源、结果、审批人和时间。参数只保留排障必要字段,对密钥、Cookie、授权头、个人数据、完整提示和文件内容做结构化脱敏。日志存储与智能体执行环境分离,限制读取和修改权限。用金丝雀秘密或测试令牌验证日志链路是否泄露,而不是等真实事故后才发现。

检测秘密要覆盖历史与产物

上线前扫描当前差异、完整 Git 历史、构建产物、容器层、测试快照、日志、错误报告和发布包。发现秘密后不能只从最新提交删除,因为旧提交、缓存和镜像仍可访问;先撤销或轮换,再清理历史并通知受影响系统。扫描器有误报和漏报,需维护组织特有格式与允许清单。通过扫描只证明规则没有命中,不能证明绝对无泄露。

用金丝雀凭据验证边界

创建无生产权限、可唯一追踪的测试秘密,放在理论上不可读的位置,执行代表性的读取、构建、报错、网络和工具调用。任何访问或外传尝试都应被阻断并触发告警。金丝雀测试要覆盖重定向、子进程、压缩、编码和间接工具调用。它能证明特定路径在当前配置下的行为,不能替代对所有数据和未知攻击的评估。

准备正常路径、越权路径与失败路径

验收夹具至少包含:允许目录正常编辑;读取 SSH 或云配置被拒绝;访问未授权域名被拒绝;危险命令进入人工批准;短期令牌过期;代理遇到不允许的方法;任务取消后权限撤销;日志不出现测试秘密。每个用例保存策略版本、输入、预期、实际和回执。只运行成功路径会让策略配置错误长期隐藏。

不同操作系统需要分别验证

macOS、Linux、WSL2 和 Windows 使用的隔离原语、路径语义、符号链接与进程模型不同。不要在 Linux 通过后假设 Windows 等价;特别检查盘符、UNC 路径、WSL 挂载、容器套接字和宿主集成。官方文档中标为 Preview 或 Experimental 的能力应写明状态和限制。策略升级或系统补丁后重新运行越权夹具,不能只看配置文件未变。

符号链接、挂载与套接字是常见逃逸面

允许目录中的符号链接可能指向主目录或秘密文件;Docker 套接字、SSH Agent 套接字和云元数据端点可以绕过表面的文件限制获得更大权限。启动前解析实际路径,禁止越界链接和特权挂载,隔离命名空间并阻断元数据地址。容器内 root 配合宿主套接字不等于低权限。对所有继承到子进程的文件描述符和代理变量做清点。

缓存与临时文件也会跨任务泄露

共享依赖缓存、编译缓存、临时目录和终端历史可能把一个任务的路径、源码或令牌带给另一个任务。默认按任务隔离,必须共享时使用只读、内容寻址和清理策略。测试失败产生的 core dump、调试包和录像要按敏感数据处理。销毁工作区前列出带出的产物并校验哈希,不能把整个目录打包上传作为排障材料。

控制成本和资源也是权限治理

无限 CPU、内存、进程、磁盘、令牌、API 调用与云费用会让错误循环变成事故。为任务设置硬限额、软告警、总时限和自动停止条件;重试使用幂等、退避和最大次数。费用上限不能只靠模型自觉,应该由执行器和供应商配额强制。资源限制同时降低拒绝服务风险,但过低会造成假失败,所以需记录任务类型和合理基线。

异常时优先停止能力,而不是继续问模型

检测到未知域名、秘密扫描命中、权限预算外调用、重复危险命令、策略文件变化、异常费用或审计中断时,执行器应立即暂停,撤销短期凭据并保存证据。不要让同一个智能体决定自己是否可以继续。由独立控制面判断恢复、缩小范围或终止;恢复后使用新环境和新凭据,不复用可能受污染的会话。

AI 编程智能体疑似密钥泄露后的暂停撤销取证清理验证复盘流程
兰塞 AI 原创:疑似泄露先撤销,再调查;不要等待模型自行判断风险。

事故响应从撤销开始

疑似密钥泄露时先撤销或轮换,不等确认攻击者是否已经使用。随后检查访问日志、Git 历史、构建产物、代理、浏览器会话、云审计和第三方系统,确定暴露时间、权限和调用。保留任务输入、策略版本、工具轨迹和审批记录,避免在清理时破坏证据。通知资产所有者并修复导致泄露的边界,而不是只删除一条日志。

轮换后验证旧凭据真正失效

轮换完成要用安全的负向测试确认旧令牌无法读取、写入或刷新,并检查长期连接、缓存、镜像、CI 变量和备用环境是否仍持有副本。更新依赖系统后运行最小业务测试,防止因遗漏凭据导致服务中断。记录新旧版本、撤销时间、影响系统和负责人;不能把‘控制台显示已轮换’当作所有副本都失效的证明。

任务结束要执行销毁清单

合并或放弃任务后撤销临时身份、关闭代理授权、删除工作区与浏览器配置、停止计算资源、清除缓存、归档必要回执并核对没有残留 Cron 或队列任务。销毁脚本自身应确定性运行并报告失败。需要保留调试材料时,只保存批准的最小集合,脱敏后进入受控存储并设置到期时间,不能把整个沙箱永久保留。

团队级策略与个人实验应分层

个人本地实验可以更灵活,但只要接触公司代码、客户数据、共享账户或发布渠道,就需要团队基线。组织策略应禁止全局自动批准、生产凭据、无审核 MCP 和无法审计的扩展,同时提供经过批准的沙箱模板和窄工具,避免开发者为了完成工作自行绕过。例外必须绑定任务、负责人和过期时间,并在结束后复查。

如何判断可以扩大自治

只有当代表性任务在多个周期中保持越权阻断、功能通过、日志完整、撤销成功和人工抽检合格,才逐步减少低风险审批。扩大前先明确新增能力、失败半径与回退开关;一次只放开一个维度。自治程度不是模型品牌或基准分数决定的,而是特定任务、工具、数据和控制环境共同决定。出现新工具、新来源或策略更新时回到更保守级别。

一页上线判定

允许上线需要同时满足:资产与权限预算已批准;独立身份和短期凭据生效;宿主秘密不可见;文件与网络边界通过负向测试;危险命令外部审批;工具和依赖来源已核验;日志脱敏且不可由智能体修改;任务资产、回滚和撤销演练完整;负责人接受残余风险。任一证据缺失就保持试验或只读状态,不用‘模型表现很好’替代控制。

远程云端智能体先核对数据落点

远程执行减少了本机文件暴露,却把代码、提示、日志和构建产物交给新的运行环境。上线前确认租户隔离、处理地区、保留期限、训练使用、子处理者、导出删除、支持人员访问和事故通知;再核对实际仓库范围和安装脚本。云端隔离不自动等于秘密安全:若把生产令牌作为环境变量注入,生成代码仍可能读取并发送。

本地智能体先清点继承的用户权限

本地工具常以当前登录用户运行,因此天然能触达主目录、剪贴板、浏览器、网络盘、开发证书和已有 CLI 会话。启动前从干净账户或受限容器运行,显式挂载目标目录,移除代理和凭据环境变量,关闭不需要的宿主集成。不要因为数据没有离开电脑就忽略破坏风险;误删、加密、强推和内部横向移动都可能发生在本地。

CI 中的智能体要防止秘密跨事件泄露

CI 任务应区分可信分支、内部 PR 与外部 PR。来自不可信分支的代码不能在具有秘密或写令牌的上下文执行,也不能通过缓存、制品或日志间接读取前一步的秘密。工作流权限默认只读,每个作业按需提升;上传制品前扫描敏感信息。需要给 PR 评论时,由独立特权作业消费已经验证的结构化结果,不检出并运行贡献者代码。

Webhook 与回调地址必须当作出口

智能体或工具可能通过 Webhook、错误回调、遥测端点和通知集成发送数据,这些路径常被网络白名单遗漏。为每个回调固定目标、方法和负载 schema,禁止用户输入直接决定 URL;代理检查重定向、DNS 变化和私网地址。签名密钥保留在发送服务中,智能体只提交事件标识。接收端验证签名、防重放和时间窗,失败重试不得无限扩大外泄。

临时下载链接也属于秘密

对象存储签名 URL、包下载令牌、一次性上传地址和密码重置链接虽然会过期,仍能在有效期内授权访问。不要把完整链接写入提示、日志、截图、PR 或测试快照;由代理在真正使用时生成最短有效期,并限制方法、对象和来源。任务结束主动失效或更换对象版本,检查浏览器历史、Shell 历史和错误追踪是否保存了查询参数。

OAuth 授权要检查范围与刷新能力

授权第三方应用时不仅看当前访问令牌,还要看请求范围、离线访问、刷新令牌、组织资源和管理员同意。优先使用设备或服务身份的最小范围,禁止智能体自行扩展 scope。撤销测试要覆盖刷新令牌和已创建会话,确认应用不能静默换取新令牌。若供应商把多个高风险动作捆绑在一个范围内,应通过代理暴露窄操作,而不是接受整包授权。

模型提供商密钥与业务密钥分开

调用模型的 API Key 只用于模型服务,不应同时拥有代码仓库、数据库、云平台或客户系统权限。业务工具调用由应用后端独立鉴权,模型只产生参数建议。为模型项目设置费用、速率、允许模型和数据策略;为业务动作设置资源级授权和审计。两类密钥分离后,即使模型调用凭据泄露,也不会直接变成生产系统管理员权限。

多智能体协作不能隐式扩大权限

主智能体把任务交给子智能体时,子任务只继承完成该步骤所需的文件、工具和时间,不应自动复制主任务全部能力。记录委派链、每级身份、输入摘要和输出位置;禁止子智能体再无界委派。汇总者只能读取批准产物,不能因为需要整理结果就获得所有执行权限。一个子任务触发异常时,应能单独撤销而不影响其他安全任务。

记忆与长期上下文要设置数据边界

持久记忆可能保存路径、命令、内部主机名、错误输出甚至秘密片段,并在以后不相关任务中重新出现。只写入经过分类的必要结论,默认不保存凭据、原始日志、客户数据或完整代码;设置项目隔离、访问控制、保留期和删除机制。写入前脱敏,读取时仍视为不可信输入。关闭会话不等于清除服务端记忆,必须核对产品实际行为。

提示和工具输出都要做数据最小化

发给模型的上下文只包含完成当前决策所需片段。日志排障时截取相关行并移除授权头、Cookie、查询参数和个人信息;数据库结果只返回必要字段与有限行;仓库搜索先在本地筛选。数据最小化不仅减少泄露,还降低提示注入和错误推断。若模型需要更多上下文,让它提出理由和范围,再由控制面决定,而不是一次性上传整个仓库。

截图、录像和终端回放要单独治理

可视化证据容易包含浏览器账号、通知、文件路径、密钥、内部域名和客户信息。采集前使用专用账户和干净桌面,裁剪到支撑结论的最小区域;发布前做文字识别和人工复核。录像与终端回放按敏感产物存储,限制下载和保留时间。打码要覆盖原始文件和缩略图,不能只在网页上叠一层可移除遮罩。

测试数据生成器不能回填真实秘密

构造夹具时使用明显的无效占位符和本地测试证书,不从生产日志复制真实令牌、邮箱或客户记录。某些测试工具会自动读取环境变量或默认云凭据,应在空环境运行并显式传入假值。秘密扫描器允许的测试模式要足够独特且范围受限,避免全局忽略真实格式。测试成功后检查产物和快照,确保没有意外写入宿主信息。

代码解释器和 Notebook 需要相同边界

Python、Node、Shell、Notebook 和数据分析工具都能读取文件、启动子进程和访问网络。不要把‘仅用于计算’视为无副作用。解释器运行在与智能体相同的受限文件和网络策略下,内核按任务创建,完成即销毁;包安装、文件上传和导出单独批准。输出大小与类型受限,防止把大量敏感数据编码到图像、压缩包或富文本中带出。

构建系统和编译器也可能执行任意代码

Makefile、Gradle 插件、编译器宏、测试发现、文档生成器和代码格式化器都可能执行仓库代码。打开陌生项目时先以只读方式检查构建配置,不在带秘密环境直接运行‘标准构建命令’。用隔离容器、无网络和无长期凭据完成首次构建;发现下载脚本、二进制插件或动态配置时升级审查。工具名称熟悉不代表输入可信。

容器镜像要验证来源与运行参数

固定镜像摘要、核对维护者和签名,扫描基础层与软件清单;运行时去除特权模式、宿主 PID、设备、敏感挂载和容器管理套接字,设置只读根文件系统和非 root 用户。镜像内不烘焙密钥,构建秘密使用不会进入层历史的机制。退出后检查卷和构建缓存,因为删除容器并不自动删除所有持久数据。

策略文件必须版本化并受保护

文件与网络规则、批准矩阵、工具清单和凭据代理配置应进入独立受保护仓库,由安全与业务所有者审查。智能体可以建议变更,但不能在同一任务中修改策略并依据新策略批准自己。每次运行记录策略版本与哈希,升级先在负向测试集验证。紧急修改有到期时间和回滚提交,防止临时放宽永久残留。

对策略做差异审查而不是只看最终结果

权限配置从允许两个目录变成允许整个工作盘,可能只是一行通配符变化。审查时把旧、新策略规范化后比较新增资源、动作、网络和时限,突出权限扩张;缩小权限也要确认任务仍可完成。自动校验拒绝空白范围、根目录、任意域名和无限到期。最终测试通过不能证明权限合理,因为过宽策略通常更容易让测试通过。

用影子模式评估新阻断规则

直接启用新策略可能误伤正常工作,可先在不放行额外能力的前提下记录‘若启用将如何判定’,比较真实任务的允许、拒绝和需审批分布。影子日志同样脱敏且设保留期。完成样本复核后,小范围启用并保留快速回退。影子模式只能评估当前观察到的调用,不能证明未出现的攻击会被阻断,因此仍需专门负向夹具。

红队用例要来自真实控制面

测试不只问模型会不会听从恶意提示,而要尝试通过文件、工具描述、网页、依赖脚本、编码数据、重定向和子进程触发实际越权。目标是验证执行器是否拒绝秘密路径、未知出口和高风险副作用。每个用例固定输入和预期,失败时保存最小复现并修策略。不要把模型口头拒绝视为通过;只有控制面阻断或安全替代路径才算证据。

恢复测试要覆盖中途终止

在下载依赖、修改文件、取得短期凭据和发起外部请求等不同阶段强制终止任务,检查锁、临时文件、半成品、会话和权限是否清理。重启后不能自动继承旧的高权限状态或重复不可幂等副作用。为可恢复任务记录检查点,但检查点不得包含明文秘密。恢复流程需要人工确认当前任务和资产仍一致,避免把旧授权带入新上下文。

密钥轮换方案要避免同时失效

生产系统轮换常需要新旧凭据短暂重叠。先创建新凭据并部署到可信调用方,验证健康后撤销旧值;重叠窗口最短且有监控。智能体可以生成计划和检查清单,但不应同时拥有创建、分发和撤销三种权限。若系统不支持双密钥,准备维护窗、回退与负责人。任何示例都不在文章、工单或聊天中粘贴真实值。

第三方故障不能触发自动放宽

密钥管理、代理、包源或审批服务不可用时,安全默认值应是暂停或降级为只读,而不是把秘密直接注入环境、切换任意网络或全局自动批准。为关键服务设计缓存时,只缓存经过加密且仍受范围和时限约束的授权。记录降级原因、开始结束时间和受影响任务。恢复后复核期间是否存在旁路,并撤销为应急创建的临时权限。

合规映射不能替代技术验证

把控制映射到企业政策、ISO、NIST 或监管要求有助于分工和审计,但表格打勾不能证明沙箱真的阻断了路径,也不能证明日志没有秘密。每条制度要求连接到可执行配置、负向测试、负责人和回执。法律、行业和地区适用性由专业人员判断;本文提供的是工程控制方法,不给出合规结论。供应商声明也需结合自己的部署方式核验。

采购智能体产品时索取可验证证据

询问数据保留、训练使用、租户隔离、地域、密钥管理、短期身份、文件与网络控制、MCP 治理、审计导出、删除、事故通知和安全更新。要求演示拒绝路径、撤销和日志脱敏,而不是只看功能列表。试点使用非生产数据和专用账户,保存配置与结果。若关键控制仅写成路线图或销售承诺,就按当前不可用处理,不把未来能力写入上线结论。

把权限复查纳入版本升级

智能体、IDE、扩展、MCP、运行时或操作系统升级可能改变默认批准、沙箱覆盖和网络行为。升级前阅读官方变更,复制生产策略到隔离环境,重跑允许与拒绝夹具,并比较实际调用轨迹。只有功能和安全门禁同时通过才推广;自动更新高权限组件要受控。版本回退也需验证数据格式与策略兼容,不能假设旧版本立即恢复旧边界。

小团队的最低可行落地顺序

资源有限时先做四件事:把智能体移到独立账户和一次性工作区;从环境中移除长期秘密;关闭默认网络出口;让部署、删除和权限变更必须人工批准。随后补齐短期身份、凭据代理、结构化审计和负向夹具。不要等到采购完整平台才开始,也不要因为暂时无法覆盖全部场景就允许管理员权限。每一步都记录负责人和下一缺口。

大型组织应明确控制所有者

开发平台团队负责沙箱模板与执行器,安全团队维护阻断规则和红队用例,身份团队提供短期凭据,业务所有者定义任务数据和可接受副作用,审计团队验证回执完整性。所有者分开可以避免智能体平台既制定规则又自证合格。跨团队异常要有统一任务 ID 和升级路径;责任不清时,高风险能力保持关闭。

每月复核哪些指标

跟踪权限预算外请求、人工批准率与拒绝率、秘密扫描命中、未知出口、撤销耗时、销毁失败、策略例外、过期未回收身份和负向测试通过率。指标用于发现控制退化,不用来证明绝对安全;批准率低可能是工具设计差,批准率高也可能是审批疲劳。每个异常回到具体任务和策略版本,避免只报一个看似良好的总分。

把安全结论写成可失效声明

验收记录应写明日期、产品版本、操作系统、策略哈希、测试范围、已知缺口和下一复查条件。例如只能说‘在这些路径、域名和夹具下未取得测试秘密’,不能写‘智能体绝不会泄露密钥’。新增工具、变更网络、升级版本、接入生产数据或超过复查日期时,原结论自动失效。可失效声明比永久认证更符合快速变化的智能体生态。

证据边界:本文没有证明什么

本文整合当前官方文档、研究与编辑方法,并提供静态权限合同与校验器;没有连接用户公司的仓库、云账户或生产密钥,也没有对某个商业编码智能体做攻击评测。示例通过只证明字段与约束符合本文合同,不证明真实沙箱不存在逃逸。OpenAI、VS Code、OWASP 与论文中的能力说明属于各自来源,官方展示不等于本站实测。实施时仍需在自己的环境复现。

权限预算的最小记录表

字段 必须记录 阻断示例
身份 任务专用主体、所有者、到期时间 共享个人令牌、组织管理员
文件 可读、可写、拒绝路径与真实路径 主目录、SSH、云配置、越界链接
网络 域名、端口、方法、代理与配额 任意出口、IP 直连、未知重定向
命令 工作目录、可执行文件、参数与副作用 删除、强推、部署、权限变更
秘密 代理、短期令牌、撤销与负向测试 长期密钥进入环境变量或日志
结束 销毁、归档、残留检查与负责人 任务完成但会话和 Cron 继续存在

官方证据图与使用边界

OpenAI 官方沙箱安全文档说明隔离工作负载、限制网络和保护凭据
OpenAI 官方沙箱安全文档局部,访问于 2026 年 10 月 2 日。官方展示不等于本站实测;商标与页面内容归 OpenAI 所有。

当前一手来源

继续完成相邻任务

核验日期与时效边界

本文于 2026 年 10 月 2 日核验。OpenAI、VS Code、OWASP、NIST、操作系统沙箱和研究论文会更新,实施前应重新打开对应一手页面并核对平台、版本和适用范围。本文不构成针对特定组织的渗透测试或合规认证。Bing Webmaster、Search Console、排名、曝光、点击、CTR、访问、用户与转化均未取数;IndexNow、sitemap、爬虫请求和页面可访问性只能作为发现或技术证据。