ClawSkills logoClawSkills

Credential Manager

OpenClaw 的强制性安全基础。将分散的 API 密钥和凭据整合到具有适当权限的安全 .env 文件中。在设置

介绍

# Credential Manager

**状态:强制性安全基础**

将分散的 API 密钥和凭证整合到一个安全的、中心化的 `.env` 文件中。

## ⚠️ 这不是可选项

中心化的 `.env` 凭证管理是 OpenClaw 安全性的**核心要求**。如果您的凭证分散在多个文件中,**请立即停止并进行整合**。

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

请参阅: - [CORE-PRINCIPLE.md](CORE-PRINCIPLE.md) - 为什么这是不可妥协的 - [CONSOLIDATION-RULE.md](CONSOLIDATION-RULE.md) - 单一事实来源原则

## 基础

**每个 OpenClaw 部署必须具备:** ``` ~/.openclaw/.env (mode 600) ```

这是您所有凭证的唯一真实来源。无一例外。

**为什么?** - 单一位置 = 更易于保护 - 文件模式 600 = 仅您可读 - Git 忽略 = 不会意外提交 - 验证格式 = 捕获错误 - 审计跟踪 = 了解变更内容

分散的凭证 = 分散的攻击面。此技能解决了这个问题。

## 此技能的功能

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

## 检测参数

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

**文件模式:** - 配置目录中的 `credentials.json` 文件 - `.env` 文件 - 名称中包含 `-creds` 或 `credentials` 的内存文件

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

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

## 快速开始

### 完整迁移(推荐)

```bash # Scan for credentials ./scripts/scan.py

# Review and consolidate ./scripts/consolidate.py

# Validate security ./scripts/validate.py ```

### 单独操作

```bash # Scan only ./scripts/scan.py

# Consolidate specific service ./scripts/consolidate.py --service x

# Backup without removing ./scripts/consolidate.py --backup-only

# Clean up old files ./scripts/cleanup.py --confirm ```

## 常见凭证位置

该技能扫描以下位置:

``` ~/.config/*/credentials.json ~/.openclaw/workspace/memory/*-creds.json ~/.openclaw/workspace/memory/*credentials*.json ~/.env (if exists, merges) ```

## 安全特性

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

## 输出结构

迁移后:

``` ~/.openclaw/ ├── .env # All credentials (secure) ├── .env.example # Template (safe) ├── .gitignore # Protects .env ├── CREDENTIALS.md # Documentation └── backups/ └── credentials-old-YYYYMMDD/ # Backup of old files ```

## 支持的服务

自动检测的常见服务:

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

有关完整列表,请参阅 [references/supported-services.md](references/supported-services.md)。

## 安全最佳实践

有关详细的安全指南,请参阅 [references/security.md](references/security.md)。

**快速检查清单:** - ✅ `.env` 具有 600 权限 - ✅ `.env` 被 git 忽略 - ✅ 代码或日志中没有凭证 - ✅ 定期轮换密钥 - ✅ 每个环境使用单独的密钥

## 脚本

所有脚本都支持 `--help` 以获取详细用法。

### scan.py ```bash # Scan and report ./scripts/scan.py

# Include custom paths ./scripts/scan.py --paths ~/.myapp/config ~/.local/share/creds

# JSON output ./scripts/scan.py --format json ```

### consolidate.py ```bash # Interactive mode (prompts before changes) ./scripts/consolidate.py

# Auto-confirm (no prompts) ./scripts/consolidate.py --yes

# Backup only ./scripts/consolidate.py --backup-only

# Specific service ./scripts/consolidate.py --service molten ```

### validate.py ```bash # Full validation ./scripts/validate.py

# Check permissions only ./scripts/validate.py --check permissions

# Fix issues automatically ./scripts/validate.py --fix ```

### cleanup.py ```bash # Dry run (shows what would be deleted) ./scripts/cleanup.py

# Actually delete old files ./scripts/cleanup.py --confirm

# Keep backups ./scripts/cleanup.py --confirm --keep-backups ```

## 迁移工作流

**步骤 1:发现** ```bash ./scripts/scan.py ``` 检查输出以查看将要迁移的内容。

**步骤 2:备份与整合** ```bash ./scripts/consolidate.py ``` 创建备份,构建 `.env`,设置权限。

**步骤 3:验证** ```bash ./scripts/validate.py ``` 确保一切安全且正确。

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

**步骤 5:清理** ```bash ./scripts/cleanup.py --confirm ``` 删除旧的凭证文件(备份保留)。

## 给技能开发者的提示:执行此标准

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

### Python 技能 ```python #!/usr/bin/env python3 import sys from pathlib import Path

# Add credential-manager scripts to path sys.path.insert(0, str(Path.home() / '.openclaw/skills/credential-manager/scripts'))

# Enforce secure .env (exits if not compliant) from enforce import require_secure_env, get_credential

require_secure_env()

# Now safe to load credentials api_key = get_credential('SERVICE_API_KEY') ```

### Bash 技能 ```bash #!/usr/bin/env bash set -euo pipefail

# Validate .env exists and is secure if ! python3 ~/.openclaw/skills/credential-manager/scripts/enforce.py; then exit 1 fi

# Now safe to load source ~/.openclaw/.env ```

**这创建了一个快速失败系统:** 如果凭证未得到适当保护,技能将拒绝运行。用户被迫修复它。

## 加载凭证

迁移后,从 `.env` 加载:

### Python ```python import os from pathlib import Path

# Load .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

# Use credentials api_key = os.getenv('SERVICE_API_KEY') ```

### Bash ```bash # Load .env set -a source ~/.openclaw/.env set +a

# Use credentials echo "$SERVICE_API_KEY" ```

### 使用现有的加载器 如果您使用 OpenClaw 脚本进行了迁移: ```python from load_credentials import get_credentials creds = get_credentials('x') ```

## 添加新凭证

编辑 `~/.openclaw/.env`: ```bash # Add new service NEW_SERVICE_API_KEY=your_key_here NEW_SERVICE_SECRET=your_secret_here ```

同时更新模板: ```bash # Edit .env.example NEW_SERVICE_API_KEY=your_key_here NEW_SERVICE_SECRET=your_secret_here ```

## 回滚

如果出现问题:

```bash # Find your backup ls -la ~/.openclaw/backups/

# Restore specific file cp ~/.openclaw/backups/credentials-old-YYYYMMDD/x-credentials.json.bak \ ~/.config/x/credentials.json ```

## 注意事项

- **默认非破坏性:** 删除前备份原始文件 - **幂等性:** 可以安全地多次运行 - **可扩展:** 在脚本中添加自定义凭证模式 - **安全:** 永不记录完整的凭证,仅记录元数据

更多产品