first commit
This commit is contained in:
190
security/sensitive-info-handling/SKILL.md
Normal file
190
security/sensitive-info-handling/SKILL.md
Normal file
@@ -0,0 +1,190 @@
|
||||
---
|
||||
name: sensitive-info-handling
|
||||
description: "敏感信息处理规范 — API key、密码、token 等敏感数据的安全处理流程。Use when: (1) user asks to store/transmit sensitive info, (2) detecting sensitive data in messages, (3) handling credentials."
|
||||
version: 1.0.0
|
||||
author: Hermes Agent
|
||||
license: MIT
|
||||
metadata:
|
||||
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
|
||||
```
|
||||
|
||||
2. **密钥管理器**(生产环境)
|
||||
- AWS Secrets Manager
|
||||
- Google Secret Manager
|
||||
- HashiCorp Vault
|
||||
- Azure Key Vault
|
||||
|
||||
3. **本地密码管理器**
|
||||
- 1Password
|
||||
- Bitwarden
|
||||
- KeePass
|
||||
|
||||
4. **加密文件**(高级)
|
||||
```bash
|
||||
# 使用 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*
|
||||
Reference in New Issue
Block a user