ARTICLE DETAIL

资讯详情

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

OpenShell 实战指南:为自主 AI Agent 构建安全、私有且受策略治理的沙箱运行时

OpenShell 实战指南:为自主 AI Agent 构建安全、私有且受策略治理的沙箱运行时 【免费下载链接】OpenShellOpenShell is the safe, private runtime for autonomous AI agents.项目地址https://gitcode.com/gh_mirrors/op/OpenShell点击查看免费下载OpenShell 是为自主 AI Agent 打造的安全、私有运行时它以容器/MicroVM 为边界隔离每个沙箱通过声明式 YAML 策略控制 Agent 的文件系统、网络与进程行为默认拒绝一切外发流量并对模型 API 等凭据做端点级绑定注入。读完本文你将掌握 OpenShell 的本地与 Kubernetes 安装、沙箱创建与网络策略热更新含 GitHub API 只读策略完整演示、Provider 凭据管理、GPU 透传、四语言 SDK 接入以及遥测与预发布构建的运维细节。OpenShell 是什么OpenShell 的定位是面向 Agent 的安全运行时它为自主 AI Agent 提供沙箱化的执行环境保护你的数据、凭据与基础设施并以声明式 YAML 策略阻止未授权的文件访问、数据外泄与不受控的网络活动。项目采用 agent-first 的开发模式——仓库本身就附带用于使用和运维 OpenShell的公开 Agent 技能skills以及面向贡献者与维护者的独立仓库级工作流。其核心运行模型是每个沙箱独立隔离在自己的容器中并带有策略强制的出口egress路由一个轻量级Gateway协调沙箱生命周期每一条出站连接都被策略引擎拦截引擎只做三件事放行Allows——目的地与调用二进制匹配某条策略块凭据绑定端点Binds credentials to endpoints——只有当策略放行了对某个 profile 授权端点的请求后才注入 Provider 凭据拒绝Denies——拦截请求并记录日志。安装 OpenShell前置条件受支持的主机Linux、macOSApple Silicon或 Windows WSL 2实验性。本地运行时Docker、Podman或已启用主机虚拟化的 MicroVM 沙箱后端。本地安装curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh安装器默认安装最新的稳定版发布。安装脚本本身位于仓库根目录 install.sh其行为由若干环境变量控制最常用的是OPENSHELL_VERSION缺省时解析最新 tagged releaseOPENSHELL_VERSIONpre安装最新预发布候选需要已认证的 GitHub CLI 会话OPENSHELL_VERSIONdev安装滚动开发构建。从脚本源码install.sh可以看到平台适配细节Linux 上按主机的包管理器选择 Debianamd64/arm64或 RPMx86_64/aarch64包并校验glibc 2.28Apple Silicon macOS 则生成 Homebrew formula由 Homebrew 接管二进制布局与 launchd 服务生命周期安装完成后会自动启动并注册本地网关监听https://localhost:17670/https://127.0.0.1:17670。下载物都会通过发布随附的openshell-checksums-sha256.txt做 SHA-256 校验。Kubernetes 安装实验性注意Kubernetes 部署路径仍在积极开发中可能存在粗糙边缘与破坏性变更。从 GHCR 发布的 OCI chart 部署网关helm install openshell oci://ghcr.io/nvidia/openshell/helm-chart \ --set supervisor.sandboxRuntime.networkPolicyEnforcedtrue可用版本、dev tag 约定与配置项见 deploy/helm/openshell/README.mdOpenShift 部署见同文件的#install-on-openshift小节。创建第一个沙箱openshell sandbox create --name demo网关默认使用nvcr.io/nvidia/base/ubuntu:24.04精简的 Ubuntu Noble 工作负载镜像。要运行 Agent需要构建或选择一个包含该 Agent 的 OCI 镜像并显式传入其引用openshell sandbox create --from registry.example.com/agents/my-agent:1.0 -- my-agent随后按工作负载需要挂载 Provider 与策略下文详述。五分钟看懂网络策略默认拒绝 L7 热更新OpenShell 每个沙箱启动时都只有最小出站访问权限。你可以用一份简短 YAML 策略打开额外访问由代理在 HTTP 方法与路径层面强制执行且无需重启任何组件。仓库提供了完整的可运行演示 examples/sandbox-policy-quickstart/可直接执行bash examples/sandbox-policy-quickstart/demo.sh1. 创建沙箱默认最小出站openshell sandbox create2. 沙箱内请求被拦截sandbox$ curl -sS https://api.github.com/zen curl: (56) Received HTTP code 403 from proxy after CONNECT3. 主机上应用只读 GitHub API 策略sandbox$ exit openshell policy set demo --policy examples/sandbox-policy-quickstart/policy.yaml --wait4. 重连验证GET 放行、POST 被 L7 拦截openshell sandbox connect demo sandbox$ curl -sS https://api.github.com/zen Anything added dilutes everything else. sandbox$ curl -sS -X POST https://api.github.com/repos/octocat/hello-world/issues -d {title:oops} {error:policy_denied,detail:POST /repos/octocat/hello-world/issues not permitted by policy}策略文件逐字段剖析演示使用的 examples/sandbox-policy-quickstart/policy.yaml 内容如下version: 1 # Default sandbox filesystem and Landlock settings. Process identity is omitted # so the active compute driver can select it. These fields are required when # using openshell policy set because it replaces the entire policy. filesystem_policy: include_workdir: true read_only: [/usr, /lib, /proc, /dev/urandom, /app, /etc, /var/log] read_write: [/sandbox, /tmp, /dev/null] landlock: compatibility: best_effort network_policies: github_api: name: github-api-readonly endpoints: - host: api.github.com port: 443 protocol: rest enforcement: enforce access: read-only binaries: - { path: /usr/bin/curl }要点顶部filesystem_policy段保留默认沙箱文件系统与 Landlock 设置同时省略 process identity让活动计算驱动自行选择。这些字段在使用openshell policy set时必须存在因为该命令会替换整个策略而不是合并。network_policies段是核心curl仅可对api.github.com通过 HTTPS 发起 GET/HEAD/OPTIONS 请求其余一律拒绝。代理会自动探测并终止 TLS检查每个 HTTP 请求并在方法层面执行read-only访问预设。--wait会阻塞直到沙箱确认新策略已加载——策略是热加载的无需重启。日志审计每一条拒绝都被记录连接级拒绝日志openshell logs demo --since 5mactiondeny dst_hostapi.github.com dst_port443 binary/usr/bin/curl deny_reasonno matching network policyL7 级拒绝日志openshell logs demo --level warn --since 5ml7_decisiondeny dst_hostapi.github.com l7_actionPOST l7_target/repos/octocat/hello-world/issues l7_deny_reasonPOST /repos/octocat/hello-world/issues not permitted by policy日志精确捕获 HTTP 方法、路径与拒绝原因生产环境可接入 SIEM 形成 Agent 每次请求的完整审计轨迹。从 examples/sandbox-policy-quickstart/demo.sh 的自动化脚本可见演示还会验证openshell sandbox ssh-config生成 SSH 配置、openshell logs输出中的actiondeny/allow、dst_host、binary、policy等字段。底层决策链与安全语义依据 architecture/security-policy.md普通网络流量按如下顺序裁决用命名空间与 seccomp 控制强制流量经过沙箱代理识别调用二进制并比对可信身份拒绝硬阻断目的地含未显式放行的不安全内网 IP 段将目的地与二进制与网络策略块匹配对开启协议检查的端点应用可选 HTTP/L7 规则按匹配策略执行 allow / deny / audit / log。显式拒绝与加固检查优先于放行规则没有任何规则匹配时请求一律被拒绝。策略引擎Policy Engine从应用层一直贯彻到内核层文件系统用 Landlock 约束读写路径、进程用非特权用户与削减能力启动、网络由代理按目的地端口调用二进制可选 L7 规则裁决。文件系统与进程策略在沙箱创建时锁定网络策略与 Provider 挂载则支持运行中热更新。架构组件一览组件职责Gateway控制面 API协调沙箱生命周期并充当认证边界。Sandbox隔离运行时含容器监管与策略强制的出口路由。Policy Engine从应用层到内核层执行文件系统、网络与进程约束。Provider AccessProfile 定义的端点、二进制策略与端点绑定的凭据注入服务模型 API 等服务。网关控制面通过配置的计算驱动管理沙箱生命周期支持的平台包括Docker、Podman、MicroVM 与 Kubernetes。网关本身不做请求级的出口裁决——那发生在沙箱内部由 supervisor 与代理就近观察进程身份完成见 architecture/gateway.md。四层纵深防护层保护内容生效时机文件系统阻止对允许路径之外区域的读写。沙箱创建时锁定。网络阻止未授权的出站连接。运行时可热加载。进程阻止提权与危险系统调用。沙箱创建时锁定。Providers授予端点绑定的凭据与网络访问。运行时可热加载。策略是声明式 YAML静态部分文件系统、进程在创建时锁定网络策略与 Provider 挂载可对运行中的沙箱更新。字段级 YAML 参考见 docs/reference/policy-schema.mdx。Providers端点绑定的凭据管理Agent 需要凭据——API 密钥、令牌、服务账号。OpenShell 将它们作为Providers具名凭据包管理在创建时注入沙箱。凭据永远不会落到沙箱文件系统只在运行时以环境变量方式注入。Provider 由provider profile创建profile 声明该 Provider 所需的凭据、端点与客户端二进制。Profile 只进不出import-only网关只提供你通过openshell provider profile import导入的 profile本身不内置任何 profile。仓库的 providers/ 目录存放着可审查、可复制改造的示例。profile 导入后CLI 可从 shell 环境自动发现对应 Provider 的凭据也可用openshell provider create显式创建。以 providers/openai.yaml 为例其核心结构id: openai display_name: OpenAI description: OpenAI inference API category: inference inference_capable: true credentials: - name: api_key description: OpenAI API key env_vars: [OPENAI_API_KEY] required: true auth_style: bearer header_name: authorization discovery: credentials: [api_key] endpoints: - host: api.openai.com port: 443 protocol: rest access: read-write enforcement: enforce binaries: [/usr/bin/curl, /usr/local/bin/curl]语义要点凭据OPENAI_API_KEY只作为 bearer authorization 头发送到api.openai.com不会发往任何其他主机binaries是最小权限控制决定哪些进程可达这些端点必须改成你镜像中的真实路径。文件头部注释还给出了导入方式openshell provider profile lint -f providers/openai.yaml、openshell provider profile import -f providers/openai.yaml --global以及冒烟测试命令openshell sandbox create --provider name -- curl -sS https://api.openai.com/v1/models。再看 providers/github.yaml 展示的按路径展开规则REST 与 GraphQL 端点默认只读而github.com的 git 传输需要为 clone/fetch 显式放行POST /**/git-upload-packpushgit-receive-pack保持拒绝- host: github.com port: 443 protocol: rest enforcement: enforce rules: - allow: { method: GET, path: ** } - allow: { method: HEAD, path: ** } - allow: { method: OPTIONS, path: ** } - allow: { method: POST, path: /**/git-upload-pack }推理访问也走同一套 Provider 工作流给沙箱挂载一个具备推理能力的 Provider调用其原生端点在客户端选择模型即可。Provider profile 贡献端点策略并把凭据占位符绑定到被授权目的地。运行 Agent、GPU 与自定义镜像运行 AgentOpenShell 可运行打包在 OCI 镜像中的 Linux Agent。默认 Ubuntu 工作负载不含 Agent CLI需要自行构建或选择包含 Agent 的镜像然后授权其二进制路径、服务端点与凭据。完整流程镜像、Provider、策略工作流参见 docs/about/run-an-agent.mdx。GPU 支持实验性实验性GPU 透传在受支持主机上可用但仍在积极开发中。创建沙箱时加--gpu即可把宿主机 GPU 传入沙箱用于本地推理、微调或其他 GPU 负载openshell sandbox create --gpu --from registry.example.com/your-org/gpu-agent:latest -- claudeDocker 后端的 GPU 沙箱在可用时自动选择 CDI否则回退到 Docker 的 NVIDIA GPU 请求路径--gpus all。前置要求宿主机需安装 NVIDIA 驱动与 NVIDIA Container Toolkit沙箱镜像本身须包含适合负载的 GPU 驱动与库默认 Ubuntu 镜像没有。自定义 GPU 沙箱镜像的构建示例见 examples/bring-your-own-container/。工作负载镜像与 BYOC用--from指定显式 OCI 镜像引用docker build -t my-sandbox:latest ./my-sandbox-dir openshell sandbox create --from my-sandbox:latest podman build -t localhost/my-sandbox:latest ./my-sandbox-dir openshell sandbox create --from localhost/my-sandbox:latest openshell sandbox create --from registry.example.com/agents/my-agent:1.0构建时使用本地网关所用的容器引擎对于远程网关需把镜像推送到网关可拉取的 registry。关键命令速查命令说明openshell sandbox create -- agent创建沙箱并启动 Agent。openshell sandbox connect [name]SSH 进入运行中的沙箱。openshell sandbox list列出所有沙箱。openshell provider create --type [type] --from-existing从环境变量创建凭据 Provider。openshell sandbox provider attach sandbox provider给运行中的沙箱挂载 Provider。openshell policy set name --policy file.yaml应用或更新运行中沙箱的策略。openshell policy get name显示当前生效策略。openshell logs [name] --tail流式查看沙箱日志。openshell term启动实时终端调试 UI。SDKPython / TypeScript / Go / RustOpenShell 提供四种语言的客户端 SDK。SDK 包用于把应用连接到 OpenShell 网关不安装openshellCLI。尽量让 SDK 与网关使用同一 OpenShell 发布版本。PythonSDK 位于 python/openshell/发布到 PyPIuv add openshellTypeScriptSDK 位于 sdk/typescript/README.md以nvidia/openshell-sdk发布到 GitHub Packages需要配置nvidianpm scope 指向https://npm.pkg.github.com并以含read:packages权限的令牌认证npm install nvidia/openshell-sdkGo加入 Go modulego get github.com/NVIDIA/OpenShell/sdk/golatest详见 sdk/go/README.mdRustSDK 位于 crates/openshell-sdk/README.md当前以源码方式消费需把 Git 依赖钉到与网关相同的发布 tagcargo add openshell-sdk \ --git https://github.com/NVIDIA/OpenShell \ --tag release-tag终端 UITUIOpenShell 内置实时终端仪表盘用于监控网关、沙箱与 Providersopenshell termTUI 提供键盘驱动的实时视图Tab切换面板、j/k在列表中移动、Enter选择、:进入命令模式。网关健康状态与沙箱状态每两秒自动刷新。其实现位于 crates/openshell-tui/。用 Agent Skills 使用 OpenShellOpenShell 为使用者和运维者提供四个可移植技能CLI 工作流openshell-cli、网关排障debug-openshell-cluster、推理排障debug-inference与策略生成generate-sandbox-policy。安装npx skills add NVIDIA/OpenShell这些公开、可安装的技能存放在 skills/以已安装 CLI 的帮助与已发布文档为事实来源不要求 OpenShell 源码检出。项目本身也用 agent 驱动工作流开发贡献者与维护者技能独立存放于 .agents/skills/不随公开技能分发完整工作流见 AGENTS.md。遥测与隐私OpenShell 收集匿名遥测以改进项目不用于追踪个人行为只关注沙箱、Provider 与策略工作流的聚合用量。运行时禁用给网关部署设置OPENSHELL_TELEMETRY_ENABLEDfalseHelm 安装设置server.telemetryEnabledfalse。该设置会传播进沙箱 supervisor 环境同时关闭沙箱侧遥测。也可以编译期彻底移除遥测遥测支持是默认开启的telemetryCargo feature各 crate 提供覆盖其余全部默认特性的defaults-without-telemetry别名。构建无遥测二进制cargo build --release -p openshell-gateway --no-default-features --features defaults-without-telemetry cargo build --release -p openshell-sandbox --no-default-features --features defaults-without-telemetry cargo build --release -p openshell-driver-vm --no-default-features --features defaults-without-telemetry产物不含遥测端点、遥测 HTTP 客户端与上报代码。注意Cargo 无法减去单个默认 feature所以defaults-without-telemetry必须与--no-default-features搭配使用。网关还提供独立的内置计算驱动 featurecompute-driver-kubernetes、compute-driver-docker、compute-driver-podman、compute-driver-vm、compute-driver-mxc可按需裁剪# Docker only, with telemetry support. cargo build --release -p openshell-gateway --no-default-features --features telemetry,compute-driver-docker # Docker and VM only, with telemetry compiled out. cargo build --release -p openshell-gateway --no-default-features --features compute-driver-docker,compute-driver-vm # Windows MXC only, with telemetry support and bundled Z3. cargo build --release -p openshell-gateway --no-default-features --features telemetry,compute-driver-mxc,bundled-z3遥测事件限于匿名运维类别与计数沙箱生命周期结果、Provider profile 桶、策略决策数、聚合的网络拒绝类别不收集沙箱名称/ID、主机名、文件路径、二进制路径、提示词、凭据、Provider 名、模型名或用户内容。社区每两周发布聚合用量趋势见 telemetry/README.md。预发布与开发构建评估即将发布的候选版可用pre别名需要已认证的 GitHub CLI预发布产物作为 Actions artifact 保留 90 天安装器只下载当前平台的产物并拒绝过期候选安装的包保留精确版本号如0.1.0-pre.3gh auth login curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | \ OPENSHELL_VERSIONpre sh滚动开发构建无需 GitHub 认证curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | \ OPENSHELL_VERSIONdev shKubernetes 场景对应选择 Helm chart 版本chart 版本号去掉发布 tag 的v前缀# Pin an exact candidate helm upgrade --install openshell \ oci://ghcr.io/nvidia/openshell/helm-chart \ --version 0.1.0-pre.3 # Rolling development build helm upgrade --install openshell \ oci://ghcr.io/nvidia/openshell/helm-chart \ --version 0.0.0-dev开发 chart 也以不可变的0.0.0-dev.commit-sha版本发布便于钉到具体提交。版本与配置详情见 deploy/helm/openshell/README.md。升级注意0.1.0OpenShell 0.1.0 引入了稳定发布节奏、改进的安全模型、扩展的扩展面与新 API升级指南见 docs/upgrade/0-1-0.mdx。安装脚本会检测旧版低于 0.0.37 的破坏性网关模型边界并在升级前要求先备份并清理旧运行时openshell sandbox delete --all与openshell gateway destroygateway destroy在新版本中已不可用因此必须升级前执行确认清理后可加OPENSHELL_ACK_BREAKING_UPGRADE1继续。延伸阅读安全策略完整语义architecture/security-policy.md网关控制面设计architecture/gateway.md策略字段级 YAML 参考docs/reference/policy-schema.mdx独立策略证明器docs/reference/policy-prover.mdx贡献工作流CONTRIBUTING.md漏洞报告见 SECURITY.md许可Apache License 2.0LICENSE赞分享【免费下载链接】OpenShellOpenShell is the safe, private runtime for autonomous AI agents.项目地址https://gitcode.com/gh_mirrors/op/OpenShell点击查看免费下载相关推荐Agent Control Plane 实战指南用 Agent Governance Toolkit 为自主 AI Agent 构建策略驱动的治理层Agent Control Plane 实战指南用 Agent Governance Toolkit 为自主 AI Agent 构建策略驱动的治理层 Agen人工智能AI AgentAI 安全治理策略引擎Agent 沙箱认证鉴权Agent OS 内核架构实战为自主 AI Agent 构建确定性策略治理系统Agent OS 内核架构实战为自主 AI Agent 构建确定性策略治理系统 Agent OSAgent Operating System是 agent人工智能AI AgentAI 安全治理策略引擎Agent 沙箱认证鉴权NVIDIA NemoClaw 参考栈在 OpenShell 沙箱中安全运行 AI Agent 的安装、配置与贡献指南NVIDIA NemoClaw 参考栈在 OpenShell 沙箱中安全运行 AI Agent 的安装、配置与贡献指南 NemoClaw 是 NVIDIA 开上一篇终极WingetUI使用指南如何用图形界面轻松管理Windows软件包下一篇GetQzonehistory一键导出QQ空间历史说说创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表