OpenClaw 密钥安全实践:将明文密钥平滑迁移至 SecretRef

今天抽空狠下心,把 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,否则更改不会写入配置文件