登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  科技周边 >  业界新闻

OpenShell安全运行AI代理的设计方向

来源:17golang原创

时间:2026-11-15 13:20:06 327浏览 收藏

AI 代理真正难管的地方,不是它能不能生成一段代码,而是它开始替人读文件、装依赖、调用 API、使用凭据之后,权限边界仍然能不能被系统强制执行。CNCF 在 2026 年 11 月 10 日的公告中把 OpenShell 列为新的 Sandbox 项目,这说明行业关注点正在从“让代理听懂提示词”转向“让运行时限制代理能做什么”。

官方文档:https://docs.nvidia.com/openshell/home

OpenShell 的设计方向可以概括为一句话:把代理放进隔离的运行时,让文件、网络、进程、凭据和推理入口都经过策略控制。它不是另一个 Agent 框架,也不保证代理永远正确;它提供的是一层位于代理之外的执行边界。

这次进入 CNCF Sandbox,技术上意味着什么

CNCF Sandbox 是项目进入社区治理和生态协作的阶段,不等于项目已经成为成熟标准,也不等于所有企业都应该立即替换现有容器平台。对开发者更有价值的信号是:OpenShell 被放进了云原生社区讨论 AI 生产化的语境里,讨论重点从模型能力延伸到了代理的执行、隔离和审计。

官方文档当前把 OpenShell 描述为面向自治代理集群的安全运行时,并以声明式策略限制未经授权的文件访问、数据外传和不受控网络活动。这个定位和传统“启动一个容器”有明显区别:容器主要解决进程和资源的运行载体问题,OpenShell 还要回答代理访问什么、凭据何时出现、请求发往哪里、谁能修改策略以及这些决策如何留下记录。

OpenShell中AI代理、沙箱、监督器和网关的运行时边界说明图
图1:OpenShell 运行时边界说明图,展示代理与沙箱、监督器、网关的职责关系;这不是截图或运行证据。

OpenShell不是另一个Agent框架

OpenShell 可以位于 Claude Code、Codex、GitHub Copilot CLI、OpenCode 或自定义代理栈的下面。代理仍负责规划和调用工具,运行时则负责把这些动作放进一个受限制的环境。这样做的关键不是把模型换成“更听话”的模型,而是让模型即使判断错误,也不能直接越过系统边界。

可以把它拆成四个职责:

  • 沙箱:承载代理进程,限制可见文件和可用权限,默认不让代理直接拥有宿主机能力。
  • 监督器:在代理之外观察运行时请求,对网络、凭据和系统调用做策略判断。
  • 网关:负责身份、沙箱生命周期、策略和凭据分发,适合成为平台团队的控制面。
  • 策略与审计:用可评审的规则表达允许范围,并记录允许或拒绝的决策。

这也是它和单纯容器的分界:Docker 或 Kubernetes 可以提供底层运行载体,但代理需要的是面向“动作”的治理,例如只允许访问某个代码目录、只允许连接指定模型端点、禁止读取宿主机密钥,并且在策略发生变化时仍能追溯是谁做了决定。

用最小权限思路设计代理边界

如果团队准备评估 OpenShell,第一步不是把所有工具都塞进沙箱,而是先把代理任务拆成“必须读什么、必须写什么、必须访问什么、绝对不能碰什么”。下面这份 YAML 是评审草案,用来展示应该讨论的权限维度;具体字段和版本能力仍应以当前 OpenShell 文档中的策略模式为准。

# 这是一份权限评审草案,不是可直接部署的完整策略文件
agent: code-reviewer
filesystem:
  # 只把待审查代码目录授予只读能力
  read_only:
    - /workspace/repository
  # 把报告目录单独划为可写区域
  writable:
    - /workspace/report
network:
  # 只列出完成任务所需的目的地
  allow:
    - api.model.example
  # 其他出站连接默认拒绝并记录原因
  default: deny
process:
  # 不给代理提升权限的路径
  privileged: false
audit:
  # 允许与拒绝都要保留决策记录
  decisions: record

这份草案的重点有三个。第一,读权限和写权限分开,避免“为了生成报告”就开放整个工作区。第二,网络规则写的是目的地和用途,而不是一句“允许联网”。第三,拒绝也是一种结果,需要被记录,否则发生异常时只能看到代理最后说了什么,却不知道运行时拦下了什么。

凭据和推理入口要单独治理

代理能调用模型,并不意味着它应该直接看到 API 密钥。OpenShell 的官方设计把凭据处理放在网关、配置和策略边界内:代理提出请求,运行时根据已授权的 provider profile 决定是否向允许的端点提供凭据。这样可以把“能调用模型”和“知道密钥内容”拆成两个权限。

同样的原则适用于工具 API。一个只负责代码审查的代理,通常需要访问模型端点和代码仓库,但不应同时拥有云账单、生产数据库或任意外部 Web 请求权限。策略评审时可以使用下面的顺序:

  1. 先列出任务必需的模型和工具,再列出资源名称。
  2. 把每个资源映射到独立的 provider、网络目的地或工作区路径。
  3. 确认凭据只在被授权的请求链路中出现,不能通过普通环境变量暴露给代理。
  4. 为允许、拒绝、凭据轮换和策略修改保留审计字段。
OpenShell策略控制文件网络进程凭据和推理路由的关系说明图
图2:策略与凭据边界说明图,展示权限来源、模型端点和审计决策之间的关系;这不是截图或运行证据。

最小试用路径应该先验证边界

官方开发者文档给出了安装和创建第一个沙箱的最小入口。正式接入前,建议把它当成边界实验,而不是直接接入生产凭据:

# 安装官方脚本,实际使用前先按组织流程审阅来源和权限
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh

# 创建一个默认沙箱,先观察代理的工作目录和可用能力
openshell sandbox create

# 生产接入前应替换为经过审查的镜像、provider 和策略
# 不要把生产密钥、宿主机目录或默认全网访问直接带入实验

试用时重点看四类结果:代理能否完成目标任务、超出工作区的访问是否被拒绝、未经允许的网络目的地是否被拦截、审计记录能否解释每次允许或拒绝。若只看到“代理任务成功”,却没有检查拒绝边界,实验结论是不完整的。

它解决了什么,又不能替代什么

OpenShell 适合解决的是自治代理“有能力但不能无限制行动”的运行时问题,尤其适合代码代理、私有企业开发、需要受控模型端点的内部工具,以及希望把策略纳入版本评审的团队。它把安全控制放到了代理进程之外,降低了单靠提示词约束的风险。

但它不能替代身份提供商、密钥管理、日志平台、漏洞管理、合规流程或应用自身的授权检查。官方资料也强调,OpenShell 是企业安全体系中的运行时边界,而不是完整的身份、观测和治理平台。底层隔离仍可能受到镜像来源、宿主机、内核、运行时配置和策略误配影响,策略越宽,代理能做的事越多,风险也越难解释。

因此,当前更稳妥的采用方向是:先选一个权限可枚举、数据可脱敏、失败可回滚的代理任务;再把文件、网络、进程、凭据和审计五项控制分别写进评审清单。等团队能回答“为什么允许、如何拒绝、拒绝后如何恢复、谁能修改规则”之后,再考虑扩展到多代理和生产工作流。

常见问题

OpenShell 是 Agent 框架吗?

不是。它位于 Agent 框架或执行 harness 之下,主要负责沙箱、策略、凭据、网络和运行时治理。

OpenShell 会自动让代理变得安全可靠吗?

不会。它能把许多权限控制移到模型之外,但仍需要团队正确配置策略、审阅镜像和凭据,并保留周边身份与审计能力。

它和 Docker 或 Kubernetes 是竞争关系吗?

更准确的理解是互补关系。Docker、Podman、Kubernetes 或虚拟机可以作为底层运行载体,OpenShell 在此之上增加面向代理动作的网关、监督、策略和凭据控制。

评估时最先看什么?

先看最小权限是否可表达、拒绝是否可观测、凭据是否与代理进程隔离,以及策略修改是否可审计;不要只看代理能否完成一次演示任务。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>