当前位置:首页 > 文章列表 > 科技周边 > 业界新闻 > OpenAI Agents SDK 沙箱能力发布后开发者该如何划分执行权限

OpenAI Agents SDK 沙箱能力发布后开发者该如何划分执行权限

来源:17golang原创 2026-09-07 09:39:15 0浏览 收藏

OpenAI Agents SDK 最近把沙箱执行、文件工具、工作区生命周期和快照能力放进了更完整的运行框架。真正需要迁移的不是某个 API 名称,而是权限设计:模型能不能调用工具、工具以谁的身份执行、文件本身能不能被写入、宿主机目录是否被授权,以及运行结束后哪些内容可以恢复,应该分开回答。

最稳妥的做法是默认只给一个专用工作区和低权限执行身份;只有经过代码审核的配置,才增加只读的宿主机路径授权。快照只负责恢复工作区状态,不能替代审批、凭据管理或路径隔离。
要点速览
  • Permissions 管的是清单条目的文件权限,不是模型审批策略。
  • run_as 决定沙箱原生工具以哪个用户执行,extra_path_grants 解决工作区外的明确访问需求。
  • snapshot 保存工作区内容;挂载和额外路径授权属于运行时边界,不能当成持久化数据。

先把四种权限放到不同层

官方文档将沙箱定位为 Agent 的受控执行环境,并特别区分了几个容易混淆的概念。外层应用仍应掌握审批、追踪、密钥和业务系统访问;沙箱负责命令、文件变化和环境隔离。清单里的 Permissions 只描述被物化文件的 owner、group、other 权限,不能替代模型是否需要人工批准。

Agents SDK 沙箱的外层策略、工作区、文件权限、路径授权和执行身份关系图
图1:把执行身份、文件权限、主机路径授权和外层审批拆成独立边界。

因此,读写内部代码仓库时,至少要记录四个决定:工作区根目录是什么;文件由谁拥有;模型工具以哪个用户运行;是否存在工作区外的绝对路径授权。任何一项写成“全部可用”,后面都很难审计。

OpenAI Agents SDK 沙箱能力上线后,开发者可以按照任务可信度、资源访问边界、操作敏感等级三个维度逐层收拢权限,既避免给Agent开放过高权限带来的安全泄露风险,也不会因为限制过严让新特性的代码运行优势完全无法落地。

用 Manifest 和 run_as 收窄工作区内的写入范围

例如,应用可以把待分析资料复制到沙箱工作区,并建立一个只允许专用用户读写的条目。下面的片段展示的是权限分层思路,实际项目还要根据所用 sandbox client 补充客户端和 Runner 配置:

from agents.sandbox import FileMode, Manifest, Permissions, User
from agents.sandbox.entries import File

# 只把本次任务需要的资料放进工作区,避免把宿主机目录直接暴露给模型
manifest = Manifest(
    root="/workspace",
    users=(User(name="agent-worker"),),
    entries=(
        File(
            path="/workspace/input.txt",
            content=b"approved input",
            permissions=Permissions(
                owner=FileMode.READ | FileMode.WRITE,
                group=FileMode.NONE,
                other=FileMode.NONE,
            ),
        ),
    ),
)

# 让沙箱原生工具以专用身份执行,而不是沿用宿主进程身份
sandbox_agent = SandboxAgent(manifest=manifest, run_as="agent-worker")

关键点是“资料复制”和“路径挂载”不是一回事:复制适合少量、可审查的输入;挂载适合必须保留原路径语义的场景,但授权面更大。不要因为文件条目设置了只读,就误以为外层审批已经完成。

只为明确需求增加主机路径授权

当 Agent 必须读取工作区外的工具链或临时目录时,再考虑 SandboxPathGrant。路径应由可信代码写死或经过人工配置审核,不能直接从模型输出中读取。对只需读取的目录使用 read_only=True,并把授权原因写进部署配置。

from agents.sandbox import Manifest, SandboxPathGrant

# /opt/toolchain 仅作为只读运行时依赖;它不会随工作区快照保存
manifest = Manifest(
    extra_path_grants=(
        SandboxPathGrant(path="/opt/toolchain", read_only=True),
        SandboxPathGrant(path="/tmp/agent-output"),  # 临时产物目录,按任务清理
    ),
)

发布前可以用一张小表复核边界:

需求优先配置不要混淆
限制谁操作文件usersrun_as不是 API key 权限
限制文件读写Permissions不是人工审批
访问工作区外路径extra_path_grants不是持久化目录
恢复上次工作区snapshot不是安全边界

快照保存的是工作区,不是无限权限

snapshot 用于新沙箱会话的工作区恢复与持久化;如果要连接一个已经序列化的后端会话,使用的是 session_state。两者都不应被理解为“把上一次的所有授权永久带回来”。官方说明指出,额外授权是运行时访问,挂载和临时路径也不作为工作区内容写入快照。

Agents SDK 沙箱工作区、快照、运行时路径授权和临时挂载关系图
图2:快照负责恢复工作区内容,挂载和额外路径授权仍属于运行时边界。

这会影响恢复策略:工作区里的中间文件可以进入下一次任务,但密钥不应靠快照传递;每次新运行都应重新注入短期凭据,并重新计算路径授权。若应用使用开发者自持有的 session,还要明确由应用负责关闭、检查和清理会话。

采用前的迁移清单要落到代码审查

先在本地用最小工作区验证:Agent 能读输入、只能写输出目录,访问未授权绝对路径会失败;然后重启一个 fresh session,确认快照只恢复预期文件。最后检查日志中是否记录了执行用户、授权路径、快照标识和人工审批结果。

  • 是否把模型工具审批与沙箱文件权限分成两套策略?
  • 是否使用专用 run_as 用户,而不是继承宿主机高权限账号?
  • 每个 extra_path_grants 是否有具体路径、只读选择和业务理由?
  • 是否明确哪些输入能进 snapshot,哪些密钥只能运行时注入?

Agents SDK 的沙箱能力适合把执行环境标准化,但 Beta 能力仍可能变化。迁移时应锁定依赖版本,保留一组权限回归测试,并在升级后重新核对 Manifest、client 和 snapshot 的行为。更多边界以 Agents SDK 沙箱概念文档Sandbox Agents 快速入门OpenAI 官方能力说明为准。

常见问题

Permissions 能阻止模型调用危险命令吗?

不能。它描述清单文件的读写执行位;命令审批、工具暴露和业务授权仍应由外层应用与运行策略处理。

extra_path_grants 会随 snapshot 一起保存吗?

不会。它是运行时访问授权,快照只覆盖工作区根目录中的持久化内容。

什么时候使用 session_state 而不是 snapshot?

需要连接已经序列化的具体沙箱会话时使用 session_state;需要用保存的工作区内容创建新会话时使用 snapshot。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go time.Timer 怎么实现可重置的空闲超时Go time.Timer 怎么实现可重置的空闲超时
上一篇
Go time.Timer 怎么实现可重置的空闲超时
Go time.Time JSON 输出为什么带有时区和纳秒
下一篇
Go time.Time JSON 输出为什么带有时区和纳秒
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • SuperCLUE中文大模型评测基准:功能、能力维度与应用指南
    SuperCLUE
    SuperCLUE是权威的中文大语言模型综合评测基准,涵盖语言理解、知识应用、AI Agent智能体及安全性等12项核心能力。通过多轮对话与客观测试,定期发布榜单与技术报告,为模型研发、优化及行业选型提供科学依据。
    171次使用
  • C-Eval中文评测基准:大语言模型多学科能力评估指南
    C-Eval
    深入了解C-Eval中文评估套件,涵盖52个学科与4级难度。本文详解其功能特点、Zero-shot/Few-shot使用方法及代码示例,助您全面评测LLM中文理解与泛化能力。
    102次使用
  • AI Prompt Library:免费AI提示词库,助力ChatGPT高效创作与营销
    AI Prompt Library
    探索AI Prompt Library免费资源库,涵盖营销、写作及多场景AI提示词。兼容ChatGPT、Claude等工具,一键复制优化输出,提升工作效率。
    22次使用
  • LangGPT提示词框架:结构化Prompt设计方法与开源工具指南
    LangGPT
    LangGPT是一种受编程语言启发的结构化提示词设计工具,提供双层框架、模块化模板及变量功能,帮助用户高效编写高质量Prompt。该项目已在GitHub免费开源,适用于内容创作、编程辅助等多场景。
    32次使用
  • ClickPrompt:AI提示词生成与优化工具,支持Stable Diffusion、ChatGPT及代码辅助
    ClickPrompt
    ClickPrompt是一款专为AI提示词编写者设计的开源在线工具,支持Stable Diffusion绘图、ChatGPT对话及GitHub Copilot代码辅助。提供Prompt自动生成、一键运行、社区分享及可视化优化功能,帮助用户高效获取精准AI输出。
    72次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码