本文档说明如何安全地管理AI助教RAG系统的API密钥和敏感信息。
- 硬编码API密钥: 在代码中直接写入真实的API密钥
- 提交密钥到Git: 将包含真实密钥的文件提交到版本控制系统
- 使用默认值: 使用示例代码中的"dummy"或"placeholder"值
- 公开分享配置: 在论坛、社交媒体等地方分享配置文件
- 使用环境变量: 所有敏感信息通过环境变量加载
- Git忽略规则: 确保
.env等敏感文件被.gitignore排除 - 分离配置: 使用模板文件,实际配置文件本地保存
- 定期轮换: 定期更换API密钥
# 复制模板文件
cp .env.example .env
# 编辑.env文件,设置真实API密钥
nano .env # 或使用其他编辑器# 在终端中设置
export SILICONFLOW_API_KEY='your-actual-api-key'
export OPENAI_LIKE_API_KEY='your-actual-openai-like-key'
# 或在启动脚本中设置
SILICONFLOW_API_KEY='your-key' python web_app.py检查.gitignore文件包含以下条目:
# 环境变量文件
.env
.env.local
.env.production
.env.development
# 配置文件
config.local.py
local_config.py
secrets.*
# 其他敏感文件
*.key
*.pem
*.p12
# Dockerfile
ENV SILICONFLOW_API_KEY=""
ENV OPENAI_LIKE_API_KEY=""
# 运行时传入
docker run -e SILICONFLOW_API_KEY="your-key" your-app- AWS: AWS Secrets Manager / Parameter Store
- Azure: Azure Key Vault
- GCP: Secret Manager
- 阿里云: KMS 密钥管理服务
在提交代码前,确认以下检查项:
-
.env文件在.gitignore中 - 代码中没有硬编码的API密钥
- 配置文件中只有环境变量引用
- 示例密钥已替换为占位符
- 敏感日志信息已移除
- 临时文件不包含密钥
如果怀疑API密钥已泄露:
- 立即禁用: 登录API提供商控制台,禁用泄露的密钥
- 生成新密钥: 创建新的API密钥
- 更新配置: 更新所有使用该密钥的配置
- 检查日志: 检查是否有异常访问
- 通知团队: 通知可能受影响的团队成员
在.vscode/settings.json中添加:
{
"secrets.ignore": [
"**/.env",
"**/config.local.py"
]
}创建pre-commit hook检查密钥泄露:
#!/bin/sh
# .git/hooks/pre-commit
if git diff --cached --name-only | xargs grep -l "sk-\|AIza\|your-.*-key" 2>/dev/null; then
echo "❌ 检测到可能的API密钥泄露!"
echo "请移除代码中的硬编码密钥后再提交。"
exit 1
fiQ: 我不小心提交了API密钥怎么办?
A: 立即使用git filter-branch或git-filter-repo从历史记录中移除,然后在API提供商处重新生成密钥。
Q: 如何在团队中安全共享配置? A: 使用环境特定的配置文件模板,通过安全渠道分享实际的密钥值。
Q: 生产环境如何管理密钥? A: 使用云服务商的密钥管理服务,或Kubernetes Secrets等容器编排工具的密钥管理功能。