今天抽空狠下心,把 OpenClaw 的密钥信息从明文迁移到了 SecretRef,记录下迁移过程:
1. 审计现有明文密钥
运行审计命令,检查当前配置中是否存在明文密钥:openclaw secrets audit --check
输出示例:Secrets audit: findings. plaintext=0, unresolved=0, shadowed=0, legacy=1.
检查指标:重点关注 plaintext 字段。若值 > 0,则说明存在明文密钥,建议迁移。
2. 配置独立的凭证文件
SecretRef 提供环境变量 (env)、文件 (file) 及 Exec 三种模式。这里采用文件模式以兼顾安全与可维护性。
使用 cat ~/.openclaw/openclaw.json 查看当前配置的密钥。
随后新建凭证文件(如 ~/.openclaw/secrets.json),并将提取出的密钥录入,格式如下:
{
"GROK_API_KEY": "xai-asdadsfasdfasdf",
"TELEGRAM_BOT_TOKEN": "234234:asdfasdfsafasdf",
"GATEWAY_AUTH_TOKEN": "asdfadsfasfasf"
}
3. 调整文件权限(关键步骤)
为防止安全策略拦截(提示文件权限过大),必须限制凭证文件的读取权限:
chmod 600 ~/.openclaw/secrets.json
4. 执行配置向导
运行配置命令,进入交互式配置流程:openclaw secrets configure
根据终端提示逐步完成映射,具体交互可参考以下示例:
◇ Configure secret providers
│ Add provider
◇ Provider source ➔ file
◇ Provider alias ➔ secrets
◇ File path (absolute) ➔ /Users/versun/.openclaw/secrets.json
◇ File mode ➔ json
...
◇ Configure secret providers ➔ Continue
◇ Select credential field ➔ channels.telegram.botToken
◇ Secret source ➔ file
◇ Provider alias ➔ secrets
◇ Secret id ➔ /TELEGRAM_BOT_TOKEN
5. 注意事项
- 别名一致性:Provider alias 建议与凭证文件名一致,且在定义 Provider 和后续引用时必须保持统一
- 路径寻址规范:Secret id 支持 JSON 路径寻址。若变量定义在 JSON 的根节点,需带上前缀斜杠(例如 /TELEGRAM_BOT_TOKEN)
- 持久化配置:在交互向导的最后,务必选中 Done 或 Apply this plan now,否则更改不会写入配置文件