mcpField
N
nemoclaw-user-manage-policy

nemoclaw-user-manage-policy

github.com/nvidia安全3.8k828 次安装今天更新
代码仓库

关于 nemoclaw-user-manage-policy

此技能指导 NemoClaw 操作者配置沙箱网络访问策略,可通过持久化基线或运行时更新控制允许访问的端点,并介绍内置与自定义预设。

主要功能

  1. 01编辑 YAML 基线策略
  2. 02为运行中的沙箱添加或移除预设
  3. 03创建自定义网络预设
  4. 04通过 OpenShell 更新实时策略
  5. 05使用策略层级配置集成访问
  6. 06检查策略并批准网络请求

适用场景

  1. 01允许沙箱访问内部 API
  2. 02为 GitHub 或 Slack 启用网络访问
  3. 03测试被拦截的目标后决定是否放行

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia/skills --skill nemoclaw-user-manage-policy

安装后在 Claude Code 中输入/nemoclaw-user-manage-policy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json
references/
approve-network-requests.md
customize-network-policy-details.md
integration-policy-examples.md

详细介绍

自定义沙箱网络策略

注意事项

  • 自定义预设主机会绕过 NemoClaw 的审核流程,并可能将沙箱的出站访问范围扩大到任意目标。

前提条件

  • 一个正在运行的 NemoClaw 沙箱(用于动态更改),或 NemoClaw 源代码仓库(用于静态更改)。
  • PATH 中包含 OpenShell CLI。

添加、移除或修改沙箱获准访问的端点。

沙箱策略定义在 NemoClaw 仓库中的声明式 YAML 文件里,并由 NVIDIA OpenShell 在运行时强制执行。 NemoClaw 同时支持重启后仍生效的静态策略更改,以及通过 OpenShell CLI 对正在运行的沙箱应用动态更新。

注意:

如果沙箱需要访问主机上运行的 HTTP 服务,请将该服务暴露在 OpenShell 网关可以访问的主机 IP 上。 使用自定义 NemoClaw 预设,运行 nemoclaw <sandbox> policy-add --from-file。 不要将 host.docker.internal 作为通用的主机服务访问路径,因为它会绕过 OpenShell 策略路径,并且在某些沙箱运行时中可能无法访问。 请参阅 Agent 无法访问主机侧 HTTP 服务(使用 nemoclaw-user-reference 技能)。

静态更改

静态更改会修改基线策略文件,并在下次创建沙箱后生效。

编辑策略文件

打开 nemoclaw-blueprint/policies/openclaw-sandbox.yaml,添加或修改端点条目。

如果希望将内置预设纳入基线策略,请将其 network_policies 条目合并到此文件中,然后重新运行 nemoclaw onboard。

如果只需要将预设应用到正在运行的沙箱,请使用动态更改中的 nemoclaw <name> policy-add。 这会更新实时策略,不会编辑 openclaw-sandbox.yaml。

如果需要允许预设未涵盖的自定义主机(例如内部 API 或天气服务),请手动编辑 YAML。

network 部分中的每个条目都定义了一个端点组,包含以下字段:

endpoints : 沙箱可以访问的主机和端口对。

binaries : 获准使用此端点的可执行文件。

rules : 允许的 HTTP 方法和路径。

重新运行 Onboard

重新运行 onboard 向导以应用更新后的策略:

$ nemoclaw onboard

向导会读取修改后的策略文件,并将其应用到沙箱。

验证策略

检查沙箱是否正在使用更新后的策略运行:

$ nemoclaw <name> status
添加 Blueprint 策略补充项

如果你维护自定义 blueprint,可以在 nemoclaw-blueprint/blueprint.yaml 的 components.policy.additions 下添加额外的策略条目。 NemoClaw 会使用与预设文件相同的策略架构验证这些条目,在创建沙箱期间获取实时策略,将补充项合并到 network_policies 中,并通过 OpenShell 应用合并后的策略。 应用的补充项会记录在运行元数据中,方便你审计该沙箱运行期间启用的 blueprint 级策略条目。

动态更改

动态更改会将策略更新应用到正在运行的沙箱,无需重启。

警告

openshell policy set 会用你提供的文件内容替换沙箱的实时策略,不会进行合并。 正在运行的沙箱的实时策略由 openclaw-sandbox.yaml 中的基线策略,以及入门设置期间叠加的所有预设组成。 如果应用的文件只包含基线策略(或只包含单个预设),所有其他已生效的预设都会被静默移除。

选项 1:添加预设文件并使用 policy-add(推荐)

这是非破坏性方式,也是 NemoClaw 开箱即用支持的唯一一种向运行中的策略合并新条目的流程。

  1. 在 nemoclaw-blueprint/policies/presets/ 下创建一个预设格式的 YAML 文件,例如 nemoclaw-blueprint/policies/presets/influxdb.yaml:

    preset:
      name: influxdb
      description: "InfluxDB time-series database"
    network_policies:
      influxdb:
        name: influxdb
        endpoints:
          - host: influxdb.internal.example.com
            port: 8086
            protocol: rest
            enforcement: enforce
            rules:
              - allow: { method: GET, path: "/**" }
              - allow: { method: POST, path: "/api/v2/write" }
        binaries:
          - { path: /usr/bin/curl }
    
  2. 将其应用到正在运行的沙盒:

    $ nemoclaw my-assistant policy-add
    

    NemoClaw 会通过 openshell policy get --full 读取实时策略,以结构化方式将预设中的 network_policies 合并到该策略中,然后写回合并后的结果。 现有预设和基线都会保留。 presets/ 下的预设文件也会在沙盒重建后继续保留。

选项 2:通过 OpenShell 快照、编辑并设置

仅当你无法在 NemoClaw 源代码树下添加文件时,才使用此方式。 必须从实时策略开始,而不是从 openclaw-sandbox.yaml 开始,这样在引导流程中叠加的预设才能保留在你应用的文件中。

$ openshell policy get --full my-assistant > live-policy.yaml

编辑 live-policy.yaml,在 network_policies: 下添加条目,同时保留现有的 version 字段,然后应用:

$ openshell policy set --policy live-policy.yaml my-assistant
动态更改的范围

动态更改仅适用于当前会话。 沙盒停止后,运行中的策略会重置为由 openclaw-sandbox.yaml 和沙盒记录的预设共同组成的基线。 要让自定义策略在沙盒重建后继续生效,请将预设文件纳入代码库(上面的选项 1——presets/ 下的文件会持续保留),或编辑 openclaw-sandbox.yaml 并重新运行 nemoclaw onboard。

交互式批准请求

对于一次性访问,你可以在 OpenShell TUI 中批准被阻止的请求,而不是编辑基线策略:

$ openshell term

如果你想先测试某个目标地址,再决定是否将其加入永久预设或自定义策略文件,这种方式就很有用。

策略预设

NemoClaw 在 nemoclaw-blueprint/policies/presets/ 中提供常见集成的预设策略文件。 可直接应用预设,也可将其用作自定义策略的起始模板。 如需了解安装后的引导示例,请参阅常见集成策略示例。

在引导过程中,你选择的策略层级(使用 nemoclaw-user-reference 技能)决定默认启用哪些预设。 选择层级后,你可以在交互式预设界面中添加或移除单个预设。

可用预设:

预设端点
braveBrave Search API
brewHomebrew(Linuxbrew)包管理器
discordDiscord API、网关和 CDN 访问
githubGitHub 和 GitHub REST API
huggingfaceHugging Face Hub(仅下载)和推理路由器
jiraAtlassian Jira API
local-inference通过主机网关访问本地 Ollama 和 vLLM
npmnpm 和 Yarn 注册表
openclaw-pricingOpenClaw 模型定价参考获取(LiteLLM 和 OpenRouter)
outlookMicrosoft 365 和 Outlook
pypiPython Package Index
slackSlack API 和 webhook
telegramTelegram Bot API
wechatWeChat(个人版)iLink Bot API(实验性)
whatsappWhatsApp Web 消息(实验性)

对正在运行的沙盒应用预设:

$ nemoclaw <name> policy-add

注意:

省略预设名称时,预设选择过程为交互式。 在脚本化工作流中,使用 --yes 并传入预设名称。

例如,以交互方式为正在运行的沙盒添加 PyPI 访问权限:

$ nemoclaw my-assistant policy-add

查看沙盒已应用的预设:

$ nemoclaw <name> policy-list

要将预设纳入基线,请将其条目合并到 openclaw-sandbox.yaml 中,然后重新运行 nemoclaw onboard。

注意:

openshell policy set --policy <file> <sandbox-name> 命令用于原始策略文件,不接受预设 YAML 文件中使用的 preset: 元数据块。对于预设,请使用 nemoclaw <name> policy-add。

在脚本化工作流中,policy-add 和 policy-remove 将预设名称作为位置参数:

$ nemoclaw my-assistant policy-add pypi --yes
$ nemoclaw my-assistant policy-remove pypi --yes

设置 NEMOCLAW_NON_INTERACTIVE=1,而不是使用 --yes,即可通过环境变量驱动相同的流程。 完整的标志参考请参阅命令(使用 nemoclaw-user-reference 技能)。

nemoclaw <name> rebuild 会将每个策略预设重新应用到重建的沙盒,因此升级 Agent 版本后无需手动重新应用预设。

自定义预设文件

将用户编写的预设 YAML 应用到正在运行的沙盒,无需编辑基线,也无需使用 openshell policy set。

编写

自定义预设的结构与 nemoclaw-blueprint/policies/presets/ 下的内置预设相同:

preset:
  name: my-internal-api
  description: "Internal service"
network_policies:
  my-internal-api:
    name: my-internal-api
    endpoints:
      - host: api.example.internal
        port: 443
        protocol: rest
        enforcement: enforce
        rules:
          - allow: { method: GET, path: "/**" }
    binaries:
      - { path: /usr/local/bin/node }

顶层的 preset.name 必须是小写 RFC 1123 标签(字母、数字、连字符),且不得与 slack 或 pypi 等内置预设名称冲突。 如果 NemoClaw 因名称冲突而拒绝应用该文件,请重命名 preset.name。

应用单个文件
$ nemoclaw my-assistant policy-add --from-file ./presets/my-internal-api.yaml

使用 --dry-run 预览端点而不应用;使用 --yes 或导出 NEMOCLAW_NON_INTERACTIVE=1 可跳过确认提示。

应用目录中的所有文件
$ nemoclaw my-assistant policy-add --from-dir ./presets/ --yes

文件按字典序处理。 遇到第一个失败时,处理即停止;已应用的预设不会回滚。 修复失败的文件后,重新运行命令以继续。

警告:

自定义预设主机会绕过 NemoClaw 的审查流程,可能会将沙盒的外发访问范围扩大到任意目标。 应用前请检查自定义预设中的每个主机,尤其是文件来自团队外部时。

如需了解移除自定义预设的详细步骤,请参阅references/customize-network-policy-details.md。

参考资料

相关技能

  • 批准或拒绝 Agent 网络请求,用于实时操作员审批。
  • 常见集成策略示例,包含受维护的预设示例,例如 Outlook、消息、GitHub、Jira、Brave Search、包管理器、Hugging Face 和本地推理。
  • nemoclaw-user-reference — 网络策略(使用 nemoclaw-user-reference 技能)以查阅完整的基线策略参考
  • OpenShell 策略架构,用于查阅完整的 YAML 策略架构参考。
  • OpenShell 沙箱策略,用于在 OpenShell 层应用、迭代和调试策略。

评论

支持 Markdown