Files
agent-skills/security/sensitive-info-handling/SKILL.md
Hermes Agent ccc63d1e70 first commit
2026-05-10 13:52:46 +08:00

4.6 KiB
Raw Blame History

name, description, version, author, license, metadata
name description version author license metadata
sensitive-info-handling 敏感信息处理规范 — API key、密码、token 等敏感数据的安全处理流程。Use when: (1) user asks to store/transmit sensitive info, (2) detecting sensitive data in messages, (3) handling credentials. 1.0.0 Hermes Agent MIT
hermes
tags
security
credentials
sensitive-data
best-practices

敏感信息处理规范

核心原则

  1. 永不询问确认 — 当检测到敏感信息请求时,直接拒绝,不问"你确定吗"
  2. 永不存储明文 — 敏感信息不应保存到记忆、日志、聊天记录中
  3. 永不传输明文 — 不通过不安全渠道(如普通消息)传输敏感信息
  4. 使用安全渠道 — 指导用户使用环境变量、密钥管理器等安全方式

检测模式

敏感信息关键词

  • API key / API Key / apikey
  • Token / token / access_token / secret
  • Password / 密码 / passwd
  • Credential / 凭证 / 凭据
  • Private key / 私钥

敏感信息格式

  • sk- 开头的字符串OpenAI 风格)
  • tp- 开头的字符串(通用 token
  • 长随机字符串30+ 字符)
  • Base64 编码的凭证

处理流程

场景 1: 用户发送敏感信息

用户: 我的 API key 是 sk-abc123xyz

响应模板:

⚠️ 检测到敏感信息。

出于安全考虑,我不会存储或处理这个 API key。

建议:
1. 将 API key 存储到环境变量:
   export API_KEY="your_key_here"

2. 或使用密钥管理器:
   - AWS Secrets Manager
   - HashiCorp Vault
   - 本地密码管理器(如 1Password

3. 如果需要我使用这个 key请先配置到环境变量中然后告诉我变量名。

场景 2: 用户请求发送敏感信息

用户: 帮我把密码发到我邮箱

响应模板:

❌ 无法执行此操作。

密码等敏感信息不应通过邮件/消息传输,原因:
1. 邮件可能被拦截
2. 消息可能被记录
3. 无法确保端到端加密

建议:
1. 使用安全的密码共享工具(如 1Password 共享 vault
2. 通过电话或当面告知
3. 使用加密的即时通讯工具(如 Signal

场景 3: 用户询问如何存储敏感信息

用户: 怎么安全地存储 API key

响应模板:

推荐的安全存储方案:

1. **环境变量**(开发环境)
   ```bash
   # 添加到 ~/.bashrc 或 ~/.zshrc
   export MY_API_KEY="your_key"
   
   # 或使用 .env 文件(确保 .gitignore 包含它)
   echo "MY_API_KEY=your_key" >> .env
  1. 密钥管理器(生产环境)

    • AWS Secrets Manager
    • Google Secret Manager
    • HashiCorp Vault
    • Azure Key Vault
  2. 本地密码管理器

    • 1Password
    • Bitwarden
    • KeePass
  3. 加密文件(高级)

    # 使用 gpg 加密
    gpg -c secrets.env
    # 解密使用
    gpg -d secrets.env.gpg > secrets.env
    

不推荐:

  • 代码中硬编码
  • 明文存储在文件中
  • 提交到版本控制
  • 通过不安全渠道传输

## 最佳实践

### 开发环境
1. 使用 `.env` 文件存储本地配置
2. 确保 `.gitignore` 包含 `.env`
3. 使用 `direnv` 自动加载环境变量

### 生产环境
1. 使用云提供商的密钥管理服务
2. 实施最小权限原则
3. 定期轮换密钥
4. 启用审计日志

### 团队协作
1. 使用共享的密钥管理器
2. 实施角色基础访问控制RBAC
3. 文档化密钥获取流程
4. 定期审查访问权限

## 常见错误

### ❌ 错误做法
- 询问"你确定要发送密码吗?"
- 将敏感信息保存到记忆中
- 在日志中记录敏感信息
- 通过普通邮件发送密码

### ✅ 正确做法
- 直接拒绝并解释原因
- 指导用户使用安全渠道
- 检测并警告敏感信息泄露
- 提供安全的替代方案

## 检测脚本

### 检测消息中的敏感信息
```python
import re

def detect_sensitive_info(text):
    patterns = [
        r'sk-[a-zA-Z0-9]{20,}',  # OpenAI 风格
        r'tp-[a-zA-Z0-9]{20,}',  # 通用 token
        r'[a-zA-Z0-9]{32,}',     # 长随机字符串
        r'(?i)(api[_-]?key|token|secret|password)\s*[:=]\s*\S+',
    ]
    
    for pattern in patterns:
        if re.search(pattern, text):
            return True
    return False

应急响应

如果敏感信息已泄露

  1. 立即撤销 — 轮换受影响的密钥
  2. 通知相关方 — 告知可能受影响的用户/系统
  3. 审查日志 — 检查是否有异常访问
  4. 更新凭证 — 生成新的密钥并分发
  5. 加强监控 — 启用额外的安全监控

规范版本: 1.0.0 最后更新: 2026-05-07