首页 资讯 下载 教程 Skills 社群

OpenClaw Secrets 加密存储:Vault、Keychain 与云端方案

为什么需要加密 Secrets

风险分析

AI Agent 使用大量敏感凭证:

  • API Keys:每个 Provider 一个
  • OAuth Tokens:定期过期需更新
  • 数据库密码:访问核心数据
  • 服务账户:AWS/GCP 完整权限

明文存储的风险:

  • 配置文件可能提交到 Git
  • 日志文件可能被查看
  • 内存转储可能泄漏
  • 备份可能落入第三方

2026 的新威胁

ClawHavoc 事件(2026 年 1 月):

  • 341 个恶意 Skill
  • 专门窃取凭证
  • 造成实际损失

Prompt Injection

  • 恶意网页诱导 Agent 读取凭证
  • 通过工具调用外传
  • 难以检测

Secrets 管理层级

Level 1: 明文配置(最不安全)❌
Level 2: 环境变量 + .env
Level 3: 本地加密文件
Level 4: 操作系统 Keychain
Level 5: 1Password CLI / Bitwarden
Level 6: HashiCorp Vault
Level 7: 云厂商 Secrets Manager(最安全)

根据部署场景选择合适层级。

方案 1:环境变量(Level 2)

基础配置

# .env
OPENAI_API_KEY=sk-xxx
ANTHROPIC_API_KEY=sk-ant-xxx

OpenClaw 配置

providers:
  openai:
    apiKey: "$OPENAI_API_KEY"

安全建议

  • .env 加入 .gitignore
  • 不同环境不同 .env
  • 使用 .env.example 作为模板
  • 权限设置 600(只有所有者可读)
chmod 600 .env

方案 2:本地加密文件(Level 3)

初始化

openclaw secrets init
# 提示设置主密码

添加 Secret

openclaw secrets set OPENAI_API_KEY
# 粘贴 API Key
openclaw secrets set ANTHROPIC_API_KEY

使用

providers:
  openai:
    apiKey: "secret://OPENAI_API_KEY"

主密码管理

启动时提供主密码:

# 方式 1:交互式
openclaw gateway
# 提示输入主密码

# 方式 2:环境变量
export OPENCLAW_MASTER_PASSWORD=xxx
openclaw gateway

# 方式 3:命令行
openclaw gateway --master-password-file /path/to/password

生产环境:从 systemd 或 Vault 注入主密码。

方案 3:macOS Keychain(Level 4)

配置

secrets:
  backend: "macos-keychain"
  keychain: "openclaw"

添加凭证

openclaw secrets set OPENAI_API_KEY \
  --backend macos-keychain

使用

providers:
  openai:
    apiKey: "keychain://OPENAI_API_KEY"

macOS 首次访问提示用户授权(Touch ID / 密码)。

限制

  • 仅 macOS
  • 单用户
  • 无团队共享

方案 4:1Password CLI(Level 5)

前置要求

brew install 1password-cli
op signin

配置

secrets:
  backend: "1password"
  vault: "AI Agents"  # 使用专用 vault

引用凭证

providers:
  openai:
    apiKey: "op://AI Agents/OpenAI Production/credential"

优势

  • 跨平台(macOS、Windows、Linux)
  • 团队共享(通过 1Password 团队)
  • 多因素认证
  • 审计日志

团队协作

# 每个团队成员引用相同路径
providers:
  openai:
    apiKey: "op://Team/OpenAI Prod/credential"

离职时从 vault 移除即可。

方案 5:HashiCorp Vault(Level 6)

适用场景

企业级部署,需要:

  • 集中式 Secrets 管理
  • 动态凭证(短期 Token)
  • 精细化权限
  • 完整审计

部署 Vault

# 开发模式
vault server -dev

# 生产模式(集群)
vault operator init

OpenClaw 配置

secrets:
  backend: "vault"
  address: "https://vault.example.com:8200"
  auth:
    method: "approle"  # 或 kubernetes、aws、token
    roleId: "$VAULT_ROLE_ID"
    secretId: "$VAULT_SECRET_ID"
  path: "secret/data/openclaw"

引用凭证

providers:
  openai:
    apiKey: "vault://secret/data/openclaw/openai"

动态凭证

Vault 可以生成临时凭证:

providers:
  # 每次获取短期 Token
  aws:
    accessKey: "vault://aws/creds/openclaw-role"
    ttl: "1h"

1 小时后自动失效,降低泄漏影响。

审计

vault audit enable file file_path=/var/log/vault.log

所有 Secrets 访问都记录。

方案 6:AWS Secrets Manager(Level 7)

适用场景

  • AWS 部署
  • 需要自动轮换
  • 合规要求高

配置

secrets:
  backend: "aws"
  region: "us-east-1"
  # 使用 IAM 角色认证,无需凭证

引用

providers:
  openai:
    apiKey: "aws-secret://openclaw/prod/openai"

自动轮换

aws secretsmanager rotate-secret \
  --secret-id openclaw/prod/openai \
  --rotation-lambda-arn arn:aws:lambda:... \
  --rotation-rules AutomaticallyAfterDays=30

每 30 天自动生成新 API Key 并更新应用。

方案 7:GCP Secret Manager(Level 7)

配置

secrets:
  backend: "gcp"
  project: "my-project"

使用

providers:
  google:
    apiKey: "gcp-secret://openclaw-google-key/latest"

版本管理

# 创建新版本
gcloud secrets versions add openclaw-google-key \
  --data-file=/path/to/new-key.txt

# 指定版本
apiKey: "gcp-secret://openclaw-google-key/3"

方案 8:Azure Key Vault(Level 7)

配置

secrets:
  backend: "azure"
  vaultUrl: "https://openclaw-vault.vault.azure.net"
  auth:
    method: "managed-identity"  # 或 service-principal

使用

providers:
  azure:
    apiKey: "azure-secret://openai-key"

多后端组合

实际部署可能多后端混用

secrets:
  primary:
    backend: "vault"
    address: "https://vault.example.com:8200"
  
  fallback:
    backend: "aws"
    region: "us-east-1"
  
  # 开发环境降级
  development:
    backend: "env"
providers:
  openai:
    # 尝试顺序:Vault → AWS → 环境变量
    apiKey: "$OPENAI_API_KEY"

Agent 层面保护

Secrets Masking

secrets:
  masking:
    enabled: true
    # Agent 永远看不到 Secret 明文
    # 工具代为使用

访问审计

secrets:
  audit:
    enabled: true
    logFile: "/var/log/openclaw-secrets.log"
    logLevel: "all"  # all | writes | suspicious

所有 Secret 访问都记录。

Agent 请求凭证

用户:查询数据库

Agent:[调用 database 工具]
      [工具内部使用 DB_PASSWORD]
      [Agent 不知道密码]
      查询完成:...

即使 Agent 被 prompt injection 攻击,也无法泄漏凭证。

轮换策略

定期轮换

secrets:
  rotation:
    schedule: "0 2 1 * *"  # 每月 1 号凌晨 2 点
    autoRotate: ["aws", "gcp"]  # 这些自动轮换

紧急轮换

凭证泄漏时:

# 撤销老凭证
openclaw secrets revoke OPENAI_API_KEY

# 生成新凭证
openclaw secrets rotate OPENAI_API_KEY

# Provider 控制台也作废老 Key

成本考虑

方案 成本 适合规模
环境变量 免费 个人
本地加密 免费 单机
Keychain 免费 Mac 个人
1Password $8/用户/月 小团队
Vault 开源 免费(自托管) 中大团队
Vault Enterprise 商业定价 大企业
AWS SM $0.40/secret/月 AWS 用户
GCP SM $0.06/版本/月 GCP 用户

选择建议

  • 个人开发:环境变量 / Keychain
  • 小团队:1Password / Vault 开源
  • 中企业:Vault / AWS SM
  • 合规要求:Vault Enterprise + 审计
  • 多云:Vault(跨云一致)

迁移步骤

从明文迁移

  1. 备份当前配置
  2. 选择目标后端
  3. 逐个迁移 Secrets
  4. 更新配置引用
  5. 验证功能
  6. 删除明文配置
# 自动迁移助手
openclaw secrets migrate --from env --to vault

注意事项

  • Secrets 管理是必须的,不要偷懒
  • 开发和生产用不同凭证
  • 定期轮换所有 Secrets
  • 审计日志保留至少 1 年
  • 备份Secrets 后端(Vault 快照等)
  • 灾难恢复演练定期执行
  • 团队离职立即撤销权限
  • 高权限 Secrets(根 Token)不要写入代码
  • 结合 Microsoft Agent Governance Toolkit 获得完整保障