跳转至

密钥

每个受支持的凭据字段都接受一个 SecretRef:env、file、exec(1Password、Vault、Bitwarden 和 sops 就是这样接入的),或共享存储。对于已映射且可隔离的归属方,可重试的解析失败允许 Gateway 以降级模式启动。具体归属方(一个提供商、一个渠道账户、一个插件路由)会被标记为不可用,发往它的请求会以类型化错误失败,不会回退到其他凭据,并且 doctor 和 status 会列出每个降级归属方,并给出脱敏后的原因。Gateway 入站身份验证失败、未知归属和无效的密钥配置仍会阻止启动。

模型提供商凭据在受支持的出站路径上使用哨兵:真实值会在出站边界处被替换,无法识别的哨兵形态值会被拒绝,而不是被转发。操作员可以通过在 Control UI 的 设置 → 密钥 下选择受保护的 secret 类型,提供凭据而无需将其值暴露给 Agent。受保护的值会从面向 Agent 的读取中省略;存在一个单独的管理员作用域解析供操作员使用。Agent 可读的环境变量条目是另一种类型。可选的 出站代理 仅针对其绑定的目标主机替换受保护哨兵。仅外泄加密哨兵本身不会在 Gateway 进程之外暴露底层凭据,但这并不能保护其他私有上下文,也不能防止已授权服务被滥用。被允许的服务也可能将凭据反射回 Agent,因此目标信任和主机隔离仍然重要。Agent 请求的密钥 提示使用相同的受保护存储,而不会将提交的值放入对话中。

mermaid actions={true} placement="top-right" flowchart LR OPR["Operator"] -->|"Settings: Secrets, protected secret kind"| STORE["Protected store"] AGT["Agent context"] -.->|"agent-requested secret: prompt"| OPR STORE -->|"protected handle, not submitted value"| AGT AGT -->|"sentinel on supported paths"| OUT["Outbound request"] OUT --> EG["Configured egress boundary"] STORE -->|"resolve"| EG EG -->|"credential substituted for its bound host"| API["Allowed destination"] EG -->|"unrecognized sentinel"| REF["Refused"]

Hermes 支持基于环境变量和保险库的凭据、用于多路复用配置文件的上下文本地密钥解析,以及可选的 iron-proxy 集成,后者为 Docker 工具提供不透明的提供商令牌,同时由主机端代理注入凭据。这些是真实的保护机制,具有不同的托管和绕过限制;任一项目的代理都不能替代进程隔离和网络隔离。在 OpenClaw 中,secrets audit 可发现静态明文,secrets configure --apply 会将受支持字段移到引用之后。工作区 .env 文件不能覆盖提供商密钥或 OPENCLAW_* 运行时控制。

OpenClaw 将 Agent 请求的凭据作为集成的 Gateway 流程提供:操作员通过受保护界面提交值,Agent 获得可复用句柄。这不是独特模式。MCP 支持 用于敏感数据的带外 URL 提示,包括由服务器存储以便日后使用的凭据;它禁止通过表单模式提示请求密钥。Hermes 也支持操作员配置的保险库解析。这些机制的差异在于集成方式和托管方式,而不在于凭据能否始终留在模型上下文之外。

存储本身是 0600 权限的 SQLite,不是 HSM,文档建议有更强托管要求的操作员使用外部保险库。SecretRef 会从引用配置中移除内联凭据;存储暴露取决于所选提供商。它不能阻止主机执行 Agent 读取文件。限制文件访问是沙箱的职责。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw