OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  credential-manager:OpenClaw 强制性的安全基础组件

credential-manager:OpenClaw 强制性的安全基础组件

 
  cd ·  2026-02-07 08:41:19 · 3 次点击  · 0 条评论  

名称: credential-manager
描述: OpenClaw 的强制安全基础。将分散的 API 密钥和凭据整合到具有适当权限的安全 .env 文件中。适用于设置 OpenClaw、迁移凭据、审计安全或强制执行 .env 标准时。此步骤非可选——集中式凭据管理是 OpenClaw 安全部署的核心要求。扫描常见位置的凭据文件,备份现有文件,创建权限为 600 的统一 .env 文件,验证安全性并强制执行最佳实践。


凭据管理器

状态:强制安全基础

将分散的 API 密钥和凭据整合到一个安全、集中的 .env 文件中。

⚠️ 此步骤非可选

集中式 .env 凭据管理是 OpenClaw 安全的核心要求。如果你的凭据分散在多个文件中,请立即停止并整合它们

规则: 所有凭据必须仅能位于 ~/.openclaw/.env 中。不允许在工作区、技能或脚本目录中存放。

参见:
- CORE-PRINCIPLE.md - 为何此规则不可协商
- CONSOLIDATION-RULE.md - 单一来源原则

基础要求

每个 OpenClaw 部署都必须具备:

~/.openclaw/.env (权限 600)

这是你所有凭据的唯一真实来源。没有例外。

为什么?
- 单一位置 = 更易于保护
- 文件权限 600 = 仅所有者可读
- Git 忽略 = 不会意外提交
- 格式验证 = 捕获错误
- 审计追踪 = 知晓变更内容

分散的凭据 = 分散的攻击面。此技能旨在解决此问题。

此技能的功能

  1. 扫描常见位置的凭据
  2. 备份现有凭据文件(带时间戳)
  3. 整合~/.openclaw/.env
  4. 保护,设置适当权限 (600)
  5. 验证安全性和格式
  6. 强制执行最佳实践
  7. 清理迁移后的旧文件

检测参数

此技能通过扫描以下内容自动检测凭据:

文件模式:
- 配置目录中的 credentials.json 文件
- .env 文件
- 名称中包含 -credscredentials 的记忆文件

敏感密钥模式:
- API 密钥、访问令牌、承载令牌
- 密钥、密码、口令
- OAuth 消费者密钥
- 私钥、签名密钥、钱包密钥
- 助记词和种子短语

安全检查:
- 文件权限(必须为 600
- Git 忽略保护
- 格式验证

快速开始

完整迁移(推荐)

# 扫描凭据
./scripts/scan.py

# 审查并整合
./scripts/consolidate.py

# 验证安全性
./scripts/validate.py

独立操作

# 仅扫描
./scripts/scan.py

# 整合特定服务
./scripts/consolidate.py --service x

# 仅备份,不删除
./scripts/consolidate.py --backup-only

# 清理旧文件
./scripts/cleanup.py --confirm

常见凭据位置

此技能扫描以下位置:

~/.config/*/credentials.json
~/.openclaw/workspace/memory/*-creds.json
~/.openclaw/workspace/memory/*credentials*.json
~/.env (如果存在,则合并)

安全特性

文件权限:.env 设置为权限 600(仅所有者)
Git 保护: 创建/更新 .gitignore
备份: 在更改前创建带时间戳的备份
验证: 检查格式、权限和重复项
模板: 创建 .env.example(可安全共享)

输出结构

迁移后:

~/.openclaw/
├── .env                     # 所有凭据(安全)
├── .env.example             # 模板(安全)
├── .gitignore               # 保护 .env
├── CREDENTIALS.md           # 文档
└── backups/
    └── credentials-old-YYYYMMDD/  # 旧文件备份

支持的服务

自动检测的常见服务:

  • X (Twitter): OAuth 1.0a 凭据
  • Molten: 代理意图匹配
  • Moltbook: 代理社交网络
  • Botchan/4claw: 网络协议
  • OpenAI, Anthropic, Google: AI 提供商
  • GitHub, GitLab: 代码托管
  • 通用: API_KEY*_TOKEN*_SECRET 模式

完整列表请参见 references/supported-services.md

安全最佳实践

详细安全指南请参见 references/security.md

快速检查清单:
- ✅ .env 具有 600 权限
- ✅ .env 被 Git 忽略
- ✅ 代码或日志中没有凭据
- ✅ 定期轮换密钥
- ✅ 为不同环境使用不同的密钥

脚本

所有脚本都支持 --help 查看详细用法。

scan.py

# 扫描并报告
./scripts/scan.py

# 包含自定义路径
./scripts/scan.py --paths ~/.myapp/config ~/.local/share/creds

# JSON 输出
./scripts/scan.py --format json

consolidate.py

# 交互模式(更改前提示)
./scripts/consolidate.py

# 自动确认(无提示)
./scripts/consolidate.py --yes

# 仅备份
./scripts/consolidate.py --backup-only

# 特定服务
./scripts/consolidate.py --service molten

validate.py

# 完整验证
./scripts/validate.py

# 仅检查权限
./scripts/validate.py --check permissions

# 自动修复问题
./scripts/validate.py --fix

cleanup.py

# 试运行(显示将被删除的内容)
./scripts/cleanup.py

# 实际删除旧文件
./scripts/cleanup.py --confirm

# 保留备份
./scripts/cleanup.py --confirm --keep-backups

迁移工作流

步骤 1:发现

./scripts/scan.py

审查输出以了解将迁移的内容。

步骤 2:备份与整合

./scripts/consolidate.py

创建备份,构建 .env,设置权限。

步骤 3:验证

./scripts/validate.py

确保所有内容安全且正确。

步骤 4:测试
使用新的 .env 文件测试你的应用程序/技能。

步骤 5:清理

./scripts/cleanup.py --confirm

删除旧的凭据文件(备份保留)。

给技能开发者:强制执行此标准

其他 OpenClaw 技能在使用凭据前必须验证其安全性:

Python 技能

#!/usr/bin/env python3
import sys
from pathlib import Path

# 将凭据管理器脚本添加到路径
sys.path.insert(0, str(Path.home() / '.openclaw/skills/credential-manager/scripts'))

# 强制执行安全的 .env(如果不合规则退出)
from enforce import require_secure_env, get_credential

require_secure_env()

# 现在可以安全地加载凭据
api_key = get_credential('SERVICE_API_KEY')

Bash 技能

#!/usr/bin/env bash
set -euo pipefail

# 验证 .env 存在且安全
if ! python3 ~/.openclaw/skills/credential-manager/scripts/enforce.py; then
    exit 1
fi

# 现在可以安全地加载
source ~/.openclaw/.env

这创建了一个快速失败系统: 如果凭据未得到妥善保护,技能将拒绝运行。用户被迫修复问题。

加载凭据

迁移后,从 .env 加载:

Python

import os
from pathlib import Path

# 加载 .env
env_file = Path.home() / '.openclaw' / '.env'
with open(env_file) as f:
    for line in f:
        if '=' in line and not line.strip().startswith('#'):
            key, val = line.strip().split('=', 1)
            os.environ[key] = val

# 使用凭据
api_key = os.getenv('SERVICE_API_KEY')

Bash

# 加载 .env
set -a
source ~/.openclaw/.env
set +a

# 使用凭据
echo "$SERVICE_API_KEY"

使用现有加载器

如果你使用 OpenClaw 脚本迁移:

from load_credentials import get_credentials
creds = get_credentials('x')

添加新凭据

编辑 ~/.openclaw/.env

# 添加新服务
NEW_SERVICE_API_KEY=your_key_here
NEW_SERVICE_SECRET=your_secret_here

同时更新模板:

# 编辑 .env.example
NEW_SERVICE_API_KEY=your_key_here
NEW_SERVICE_SECRET=your_secret_here

回滚

如果出现问题:

# 查找你的备份
ls -la ~/.openclaw/backups/

# 恢复特定文件
cp ~/.openclaw/backups/credentials-old-YYYYMMDD/x-credentials.json.bak \
   ~/.config/x/credentials.json

注意事项

  • 默认非破坏性: 删除前会备份原始文件
  • 幂等性: 可安全运行多次
  • 可扩展: 可在脚本中添加自定义凭据模式
  • 安全: 从不记录完整凭据,仅记录元数据
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor