OpenClaw配置加密:GLM-4.7-Flash模型凭证的安全存储方案

1. 为什么需要保护模型凭证?

上周我在调试OpenClaw对接GLM-4-7-Flash模型时,不小心把包含API Key的配置文件上传到了GitHub。虽然及时发现并撤销,但这个教训让我意识到:在自动化工具中,模型凭证的安全存储不是可选项,而是必选项。

OpenClaw作为本地自动化助手,需要频繁调用大模型API。以GLM-4-7-Flash为例,每次鼠标操作、文件处理都可能触发模型调用。如果凭证泄露,不仅会产生意外费用,更可能被恶意利用。经过实践,我总结出三种可靠的安全方案,下面分享具体实施方法。

2. 环境变量方案:告别明文配置

2.1 基础环境变量配置

我最先尝试的是环境变量方案。相比直接在openclaw.json写死API Key,这种方法有两个优势:

  1. 配置文件可以安全地纳入版本控制
  2. 不同环境(开发/生产)可以灵活切换凭证

具体操作步骤:

# 在shell配置文件中添加(如~/.zshrc或~/.bashrc)
export GLM_API_KEY="your_actual_key_here"
export GLM_BASE_URL="http://localhost:11434"  # ollama默认地址

# 使配置生效
source ~/.zshrc

然后在~/.openclaw/openclaw.json中引用这些变量:

{
  "models": {
    "providers": {
      "glm-local": {
        "baseUrl": "$GLM_BASE_URL",
        "apiKey": "$GLM_API_KEY",
        "api": "openai-completions"
      }
    }
  }
}

2.2 进阶技巧:使用.env文件

对于需要管理多组凭证的情况,我推荐使用.env文件配合dotenv包:

npm install dotenv --save

创建.env文件:

# OpenClaw专用环境变量
GLM_API_KEY=sk-xxxxxx
GLM_BASE_URL=http://localhost:11434

在启动脚本中加载:

require('dotenv').config()
// 后续启动逻辑...

注意:务必在.gitignore中添加.env

3. 系统密钥环集成方案

环境变量方案仍有不足:重启终端后需要重新设置,且多用户环境下仍可能暴露。于是我又尝试了系统密钥环方案。

3.1 macOS钥匙串接入

在Mac上可以使用keytar包:

npm install keytar

存储凭证的示例代码:

const keytar = require('keytar')
await keytar.setPassword('OpenClaw', 'glm-api-key', 'actual_key_value')

读取时这样调用:

const apiKey = await keytar.getPassword('OpenClaw', 'glm-api-key')

3.2 Windows凭据管理器

Windows用户可以使用wincred模块:

npm install wincred

存储示例:

const wincred = require('wincred')
const cred = new wincred.Credential()
cred.setAttribute('target', 'OpenClaw_GLM_KEY')
cred.setAttribute('username', 'api-user')
cred.setAttribute('password', 'actual_key_value')
cred.save()

4. 文件权限控制方案

4.1 配置文件权限设置

即使采用加密方案,openclaw.json文件本身也需要保护:

# 设置仅当前用户可读写
chmod 600 ~/.openclaw/openclaw.json

# 对于Linux/macOS,防止其他用户访问目录
chmod 700 ~/.openclaw

4.2 配置文件加密存储

对于更高安全需求,可以使用openssl加密配置文件:

# 加密
openssl enc -aes-256-cbc -salt -in openclaw.json -out openclaw.enc

# 解密(使用时)
openssl enc -d -aes-256-cbc -in openclaw.enc -out openclaw.json

建议将解密命令封装成脚本,运行时输入密码解密,使用后立即删除明文文件。

5. 综合方案实践建议

经过多次验证,我现在的安全策略是分层组合:

  1. 日常开发:使用.env文件+项目级gitignore
  2. 生产环境:系统密钥环+配置文件权限控制
  3. 敏感项目:额外增加配置文件加密

对于GLM-4-7-Flash这类需要频繁调用的模型,特别提醒注意:

  • ollama本地部署时,baseUrl通常不需要认证
  • 但如果是远程API,一定要启用HTTPS
  • 定期轮换API Key(建议每月一次)

最后分享一个检查凭证是否泄露的小技巧:

# 检查文件中是否包含疑似API Key的字符串
grep -r --include="*.json" "sk-" ~/projects

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐