← 返回博客

案例07:数据安全与卸载

📑 目录

  1. OpenClaw 数据存储位置
  2. 使用中的数据安全
  3. API Key 安全管理
  4. 网络隔离与离线运行
  5. 审计与日志
  6. 彻底卸载 OpenClaw
  7. 安全检查清单

第一部分:OpenClaw 数据存储位置

查看数据存储结构

# 查看 OpenClaw 主要数据目录

ls -la ~/.openclaw/

主要目录说明:

~/.openclaw/
├── openclaw.json          ← 配置文件(含模型配置、API Key 引用)
├── workspace/             ← 默认工作区(文件、记忆、技能)
│   ├── MEMORY.md          ← 长期记忆
│   ├── SOUL.md            ← 行为准则
│   ├── IDENTITY.md        ← 身份定义
│   ├── TOOLS.md           ← 工具备忘
│   ├── skills/            ← 技能文件
│   ├── memory/            ← 每日笔记
│   └── ...                ← 用户创建的文件
├── workspace-tardis/      ← tardis Agent 的工作区
├── workspace-clara/       ← clara Agent 的工作区(如有)
├── sessions/              ← 会话记录
├── skills/                ← 系统级技能
└── logs/                  ← 运行日志

# 查看各目录占用空间
du -sh ~/.openclaw/
du -sh ~/.openclaw/workspace/
du -sh ~/.openclaw/sessions/

自定义工作区位置

# 如果需要将数据存储到特定位置(如加密磁盘)

# 方法1:在 openclaw.json 中配置 workspace 路径
"workspace": "/path/to/encrypted/disk/workspace"

# 方法2:使用符号链接
ln -s /path/to/encrypted/disk/workspace ~/.openclaw/workspace

# 加密磁盘建议:
# - Linux: LUKS 加密分区
# - 或使用 encfs/cryptomator 加密目录
# - 确保 OpenClaw 运行前磁盘已挂载

📌 说明:了解数据存在哪里是保障安全的第一步。OpenClaw 的所有数据都在本地文件系统,不依赖云端存储。

第二部分:使用中的数据安全

哪些数据会发送到外部

# OpenClaw 只在以下情况使用外部网络:

1. web_search — 发送搜索关键词到搜索引擎提供商
   发送内容:搜索关键词
   不发送:对话内容、文件内容、个人信息

2. web_fetch — 发送 HTTP 请求到目标网站
   发送内容:URL 地址
   不发送:对话内容、文件内容

3. 大模型 API 调用 — 发送 prompt 到模型提供商
   发送内容:对话 prompt(包含你输入的内容和系统指令)
   不发送:本地文件(除非你在 prompt 中引用了文件内容)

4. 视频/图片生成 API
   发送内容:提示词文本,可能包含参考图片
   不发送:本地文件内容

# 安全建议:
# - 不要在对话中粘贴敏感信息(密码、身份证号、银行信息等)
# - 敏感数据存储在本地文件中,不要在对话中引用
# - 如需要处理敏感数据,使用本地模型(离线运行)

敏感数据处理规范

# 在 OpenClaw 中处理敏感数据时的操作规范

# ❌ 不要做:
- 在对话中粘贴密码、Token、身份证号
- 在 MEMORY.md 中明文存储 API Key
- 在 workspace 文件中存储未加密的敏感数据
- 让 AI 在 prompt 中包含敏感信息发送给外部 API

# ✅ 应该做:
- 敏感数据使用环境变量存储
- 在 openclaw.json 中引用环境变量而非明文
- 敏感文件存储在加密目录中
- 使用本地模型处理敏感数据(不经过外部 API)
- 在对话中使用脱敏数据做演示

# 环境变量方式:
export SENSITIVE_DATA="实际值"
# 在对话中:
"请读取环境变量 SENSITIVE_DATA 的值并处理"

# OpenClaw 支持在配置中引用环境变量:
"apiKey": "${DASHSCOPE_API_KEY}"

文件权限设置

# 确保 OpenClaw 数据目录的权限正确

# 检查当前权限
ls -la ~/.openclaw/

# 设置为仅所有者可读写
chmod -R 700 ~/.openclaw/

# 检查配置文件中的 API Key 是否明文存储
grep -n "apiKey\|token\|secret" ~/.openclaw/openclaw.json

# 如果是明文,改为环境变量引用:
# 原:
"apiKey": "sk-xxxxx"
# 改为:
"apiKey": "${DASHSCOPE_API_KEY}"

# 然后在 ~/.bashrc 或 ~/.zshrc 中设置环境变量:
export DASHSCOPE_API_KEY="sk-xxxxx"

会话数据安全

# OpenClaw 的会话记录存储在本地

# 查看会话记录
ls -la ~/.openclaw/sessions/

# 如需清除历史会话记录
rm -rf ~/.openclaw/sessions/*

# 如需定期自动清理,创建定时任务:
"请创建一个定时任务:
- 时间:每周一凌晨3点
- 任务:清除 ~/.openclaw/sessions/ 目录下超过30天的会话记录"

# 注意:清除会话记录后,AI 将不再能访问这些历史对话。
# 重要的对话内容应该提前保存到 MEMORY.md 或工作区文件中。

第三部分:API Key 安全管理

检查当前 API Key 存储方式

# 检查配置文件中 API Key 的存储方式

cat ~/.openclaw/openclaw.json | grep -A2 -B2 "apiKey\|api_key"

# 安全等级判断:
# ❌ 明文存储 — Key 直接写在配置文件中
# ⚠️ 环境变量引用 — 使用 ${ENV_VAR} 方式引用
# ✅ 外部密钥管理 — 使用 vault/密钥管理服务

# 如果是明文存储,立即修改:
# 1. 将 Key 值移到环境变量
# 2. 配置文件中改为环境变量引用
# 3. 重新配置环境变量:
export DASHSCOPE_API_KEY="sk-新的key"

# 4. 测试配置是否生效
openclaw status

API Key 轮换

# 定期更换 API Key 是最佳安全实践

# 轮换步骤:
# 1. 在模型提供商控制台生成新 Key
# 2. 更新环境变量:
export DASHSCOPE_API_KEY="sk-新key"

# 3. 删除旧 Key(在提供商控制台中禁用)

# 4. 重启 OpenClaw 使配置生效
openclaw gateway restart

# 建议:
# - 每 3-6 个月轮换一次 API Key
# - 设置 API Key 使用配额限制
# - 启用 Key 使用告警(异常用量通知)
# - 不同用途使用不同的 Key(隔离风险)

API Key 泄露应急处理

# 如果怀疑 API Key 泄露,立即执行:

# 1. 立即在提供商控制台禁用/删除泄露的 Key
# 2. 生成新的 Key
# 3. 更新环境变量
export DASHSCOPE_API_KEY="sk-新key"

# 4. 重启 OpenClaw
openclaw gateway restart

# 5. 检查是否有异常使用记录
# - 查看提供商控制台的使用量统计
# - 检查是否有未知 IP 的调用
# - 检查费用是否异常

# 6. 检查泄露途径
# - 是否在不安全的对话中粘贴过 Key
# - 是否在日志中明文输出过
# - 是否在不安全的文件中存储过
# 修复泄露途径,防止再次发生

第四部分:网络隔离与离线运行

配置本地模型实现完全离线

# 安装 Ollama 运行本地模型

# 安装
curl -fsSL https://ollama.com/install.sh | sh

# 拉取模型(选择一个适合的)
ollama pull qwen2.5:7b         # 7B 参数,8GB 内存即可运行
ollama pull qwen2.5:14b        # 14B 参数,需要 16GB 内存
ollama pull llama3.1:8b        # Llama 3.1,8B 参数

# 验证本地模型可用
ollama run qwen2.5:7b "你好"

# 在 openclaw.json 中配置本地模型:
{
  "model": {
    "provider": "ollama",
    "modelId": "qwen2.5:7b",
    "apiKey": "",
    "baseUrl": "http://localhost:11434"
  }
}

# 重启 OpenClaw
openclaw gateway restart

# 验证使用本地模型
openclaw status

断网运行功能限制

防火墙规则配置

# 如果需要限制 OpenClaw 的网络访问

# 仅允许必要的出站连接:
# 1. 本地模型:localhost:11434
# 2. 消息平台:钉钉/微信等服务的域名
# 3. 其他:全部禁止

# iptables 示例(仅允许本地 Ollama):
iptables -A OUTPUT -d 127.0.0.1 -p tcp --dport 11434 -j ACCEPT
iptables -A OUTPUT -j DROP

# firewalld 示例:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="127.0.0.1" port port="11434" protocol="tcp" accept'
firewall-cmd --reload

# 使用本地模型 + 防火墙限制后,
# OpenClaw 完全在本地运行,数据不会外传。

第五部分:审计与日志

查看运行日志

# 查看 OpenClaw 运行日志

ls -la ~/.openclaw/logs/

# 查看最近的日志
tail -100 ~/.openclaw/logs/openclaw.log

# 查看工具调用日志
tail -100 ~/.openclaw/logs/tools.log

# 搜索特定操作
grep "web_search\|web_fetch\|exec" ~/.openclaw/logs/tools.log

# 日志中会记录:
# - 每次工具调用的时间和参数
# - 文件读写操作
# - 命令执行记录
# - API 调用记录

定期审计

# 创建定期审计任务

请创建一个定时任务:
- 名称:安全审计-每周
- 时间:每周五下午5点
- 任务内容:
  1. 检查 ~/.openclaw/ 目录下是否有明文 API Key
  2. 检查文件权限是否正确
  3. 检查是否有异常的工具调用记录
  4. 检查 API 用量是否正常
  5. 检查会话记录是否需要清理
  6. 生成审计报告保存到 workspace/security-audit/

审计报告模板:

# 安全审计报告
日期:[日期]

## API Key 安全
- [ ] 配置文件中无明文 Key
- [ ] 环境变量已设置

## 文件权限
- [ ] ~/.openclaw/ 权限 700
- [ ] 无异常文件

## 工具调用
- 本周 web_search 调用次数:[N]
- 本周 web_fetch 调用次数:[N]
- 本周 exec 调用次数:[N]
- 异常调用:[有/无]

## API 用量
- 本周 Token 用量:[N]
- 费用:[金额]
- 异常:[有/无]

## 建议
[审计建议]

第六部分:彻底卸载 OpenClaw

备份数据(卸载前必须执行)

# 卸载前备份所有需要保留的数据

# 1. 备份工作区文件(对话记录、记忆、技能文件等)
cp -r ~/.openclaw/workspace/ ~/backup/openclaw-workspace/
cp -r ~/.openclaw/workspace-tardis/ ~/backup/openclaw-workspace-tardis/

# 2. 备份配置文件(模型配置等,注意去除 API Key)
cp ~/.openclaw/openclaw.json ~/backup/openclaw-config.json

# 3. 备份会话记录(如需保留)
cp -r ~/.openclaw/sessions/ ~/backup/openclaw-sessions/

# 4. 备份技能文件
cp -r ~/.openclaw/skills/ ~/backup/openclaw-skills/

# 5. 备份日志(如需审计保留)
cp -r ~/.openclaw/logs/ ~/backup/openclaw-logs/

# 6. 检查环境变量中的 API Key(记录下来以便重新设置)
echo $DASHSCOPE_API_KEY
echo $OPENAI_API_KEY

# 验证备份完整
ls -la ~/backup/
du -sh ~/backup/

停止服务

# 停止 OpenClaw Gateway 服务

# 方法1:使用 CLI 命令
openclaw gateway stop

# 方法2:如果作为 systemd 服务运行
systemctl stop openclaw
systemctl disable openclaw

# 方法3:如果是 PM2 管理
pm2 stop openclaw
pm2 delete openclaw

# 确认服务已停止
openclaw status
# 应该显示服务未运行

# 确认没有残留进程
ps aux | grep openclaw
ps aux | grep node | grep openclaw

删除 OpenClaw 本体

# 删除 OpenClaw 安装目录

# 查看安装位置
which openclaw
# 通常输出:/usr/local/bin/openclaw 或 ~/.nvm/.../bin/openclaw

# 如果是 npm 全局安装
npm uninstall -g openclaw

# 删除安装目录(npm 卸载可能不彻底,手动清理)
rm -rf ~/.openclaw/

# 如果是通过安装包安装
rm -rf /opt/openclaw/

# 删除 Node.js 依赖(如不再需要)
# 先确认没有其他 Node.js 项目在用
ls ~/.nvm/versions/node/

# 如果只用于 OpenClaw,可以删除
rm -rf ~/.nvm/

清理环境变量和配置

# 清理 shell 配置文件中的 OpenClaw 相关设置

# 检查 ~/.bashrc, ~/.zshrc, ~/.profile 等文件
grep -n "openclaw\|OPENCLAW\|DASHSCOPE\|OPENAI" ~/.bashrc ~/.zshrc ~/.profile

# 删除或注释掉相关行
# 使用编辑器打开文件,删除:
# export OPENCLAW_HOME=...
# export DASHSCOPE_API_KEY=...
# export OPENAI_API_KEY=...

# 使修改生效
source ~/.bashrc   # 或 source ~/.zshrc

# 验证环境变量已清除
echo $DASHSCOPE_API_KEY
# 应该输出空

# 清理 crontab 中的 OpenClaw 相关任务
crontab -l | grep openclaw
# 如果有,编辑 crontab 删除相关行
crontab -e

清理 systemd 服务(如有)

# 如果配置了 systemd 服务

# 停止并禁用服务
systemctl stop openclaw
systemctl disable openclaw

# 删除服务文件
rm /etc/systemd/system/openclaw.service
# 或
rm /usr/lib/systemd/system/openclaw.service

# 重新加载 systemd
systemctl daemon-reload

# 确认服务已移除
systemctl list-units | grep openclaw
# 应该没有输出

验证卸载完成

# 全面验证是否彻底卸载

# 1. 检查命令是否还存在
which openclaw
# 应该没有输出

# 2. 检查目录是否已删除
ls -la ~/.openclaw/
# 应该报错:No such file or directory

# 3. 检查进程是否还在运行
ps aux | grep openclaw
# 应该没有输出

# 4. 检查服务是否存在
systemctl status openclaw
# 应该报错:Unit openclaw.service not found

# 5. 检查 crontab
crontab -l | grep openclaw
# 应该没有输出

# 6. 检查端口是否还在监听
ss -tlnp | grep 3000
# 如果 3000 端口不再被 OpenClaw 占用,说明已停止

# 以上全部通过后,卸载完成。

清理模型和依赖(可选)

# 如果安装了本地模型(Ollama),可以选择保留或删除

# 保留模型(其他程序可能也在用):
ollama list
# 不删除,留给其他项目使用

# 删除模型(不再需要):
ollama rm qwen2.5:7b
ollama rm qwen2.5:14b

# 删除 Ollama 本身:
# 根据安装方式卸载
# 通常:rm -rf /usr/local/bin/ollama
#       rm -rf /usr/share/ollama/

# 检查磁盘空间释放
df -h
du -sh ~/.ollama/  # 确认已清理

⚠️ 警告:卸载将删除所有数据和配置。操作前请确认已备份需要保留的文件。

第七部分:安全检查清单

日常使用安全检查

# 将以下清单保存到 workspace/security-checklist.md
# 建议每周检查一次

# OpenClaw 安全检查清单

## API Key 安全
- [ ] 配置文件中无明文 API Key
- [ ] 环境变量正确设置
- [ ] API Key 未超过轮换周期(3-6个月)
- [ ] 未在不安全的对话中粘贴过 Key
- [ ] API 用量正常,无异常调用

## 文件安全
- [ ] ~/.openclaw/ 目录权限为 700
- [ ] 无敏感信息明文存储
- [ ] 敏感数据使用加密或环境变量
- [ ] 备份正常执行

## 网络安全
- [ ] 仅必要的出站连接被允许
- [ ] 防火墙规则正确配置
- [ ] 离线运行时完全断网

## 数据安全
- [ ] 不在对话中粘贴敏感信息
- [ ] 会话记录定期清理
- [ ] 日志定期审计
- [ ] 备份数据加密存储

## 卸载时
- [ ] 数据已备份
- [ ] 服务已停止
- [ ] 安装目录已删除
- [ ] 环境变量已清理
- [ ] systemd 服务已移除
- [ ] crontab 任务已清理
- [ ] 端口已释放
- [ ] 模型已清理(如不需要保留)