API Key 安全管理最佳实践
API Key 是访问 AI 服务的凭证,一旦泄露可能导致巨额费用和数据安全问题。本文介绍 API Key 安全管理的最佳实践,包括安全存储、访问控制、密钥轮换和泄露应急处理。
API Key 泄露的风险
- 经济损失:被盗用产生大量 API 调用费用
- 数据泄露:攻击者可通过 API 访问你的数据
- 服务滥用:被用于生成违规内容,导致账户被封
- 声誉损害:客户数据通过泄露的 Key 被窃取
安全存储
环境变量(基础方案)
# .env 文件(必须加入 .gitignore)
OPENAI_API_KEY=sk-xxx
ANTHROPIC_API_KEY=sk-ant-xxx
# Python 中读取
import os
api_key = os.environ.get("OPENAI_API_KEY")
注意:绝对不要将 API Key 硬编码在源代码中!以下都是危险做法:
# 错误示范 - 永远不要这样做!
client = OpenAI(api_key="sk-xxxxxxxxxxxx") # 硬编码
API_KEY = "sk-xxxxxxxxxxxx" # 常量定义
密钥管理服务(推荐)
生产环境应使用专业的密钥管理服务:
- AWS Secrets Manager:与 AWS 生态集成
- Google Secret Manager:与 GCP 集成
- Azure Key Vault:与 Azure 集成
- HashiCorp Vault:开源自建方案
# AWS Secrets Manager 示例
import boto3
import json
def get_api_key(secret_name):
client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId=secret_name)
secret = json.loads(response['SecretString'])
return secret['api_key']
api_key = get_api_key("prod/openai-api-key")
.gitignore 配置
# .gitignore - 必须包含以下内容
.env
.env.local
.env.production
*.key
*.pem
config/secrets.*
credentials.json
访问控制
最小权限原则
- 每个应用/服务使用独立的 API Key
- 限制每个 Key 的可用模型和功能
- 设置每个 Key 的用量上限
- 记录每个 Key 的使用者和用途
API Key 权限管理
# API Key 管理表设计
"""
api_keys 表:
- id: 唯一标识
- key_hash: Key 的 SHA-256 哈希(不存明文!)
- name: Key 名称/用途
- owner: 所有者
- permissions: 允许的操作
- rate_limit: 速率限制
- monthly_budget: 月度预算上限
- expires_at: 过期时间
- created_at: 创建时间
- last_used_at: 最后使用时间
"""
提示:claude4u.com(轻舟 AI)中转服务内置了完善的 API Key 管理功能,包括用量限制、模型权限控制、使用统计等。你只需管理一个中转 Key,由平台统一管理上游 API Key,大幅降低密钥管理复杂度。
密钥轮换
定期轮换 API Key 是安全运营的基本要求:
- 生成新 Key:在平台上创建新的 API Key
- 灰度切换:逐步将流量切换到新 Key
- 验证新 Key:确认新 Key 工作正常
- 废弃旧 Key:删除/禁用旧 Key
#!/bin/bash
# 自动化密钥轮换脚本示例
echo "开始 API Key 轮换..."
# 1. 从密钥管理服务获取新 Key
NEW_KEY=$(aws secretsmanager get-secret-value \
--secret-id prod/openai-api-key-new \
--query SecretString --output text | jq -r '.api_key')
# 2. 更新应用配置
kubectl set env deployment/my-app OPENAI_API_KEY="$NEW_KEY"
# 3. 等待滚动更新完成
kubectl rollout status deployment/my-app
# 4. 验证新 Key 可用
curl -s https://claude4u.com/v1/models \
-H "Authorization: Bearer $NEW_KEY" | jq '.data | length'
echo "轮换完成"
推荐轮换周期
- 生产环境:每 90 天
- 开发/测试:每 180 天
- 发生安全事件后:立即轮换
泄露应急处理
发现 API Key 泄露后的应急步骤:
- 立即撤销:在平台上删除/禁用泄露的 Key
- 生成新 Key:创建新的 API Key 并更新到所有服务
- 审计日志:检查泄露期间的 API 调用记录
- 评估影响:计算产生的费用和数据风险
- 修复漏洞:找到泄露原因并修复
- 通知相关方:如果涉及客户数据,需要通知受影响的用户
常见泄露途径
- 提交到公开的 Git 仓库
- 写在前端代码中(浏览器可见)
- 通过日志输出完整 Key
- 在聊天工具中分享
- 存储在不安全的配置文件中
自动化安全检查
# 使用 git-secrets 防止意外提交
# 安装
brew install git-secrets
# 配置规则
git secrets --register-aws
git secrets --add 'sk-[a-zA-Z0-9]{48}' # OpenAI Key 格式
git secrets --add 'sk-ant-[a-zA-Z0-9-]{95}' # Anthropic Key 格式
# 扫描历史提交
git secrets --scan-history
注意:如果你的 API Key 已经被提交到 Git 历史中,即使删除文件也不安全。需要使用 git filter-branch 或 BFG Repo-Cleaner 清理历史记录,并立即轮换 Key。
总结
API Key 安全管理不能掉以轻心。推荐使用 claude4u.com(轻舟 AI)中转服务简化密钥管理,平台内置 Key 加密存储、用量监控和权限控制,让你专注于业务开发而非安全基础设施。
轻舟 AI