我来为你介绍AI小龙虾(假设这是一个AI服务名称)API密钥的安全管理方案:

🔐 API密钥安全管理最佳实践
密钥存储方案
API_KEY = os.getenv('AI_CRAYFISH_API_KEY')
# 方案二:加密配置文件
import json
from cryptography.fernet import Fernet
class ConfigManager:
def __init__(self, key_file='.key'):
self.load_key(key_file)
def load_secrets(self):
with open('config.encrypted', 'rb') as f:
encrypted = f.read()
cipher = Fernet(self.key)
return json.loads(cipher.decrypt(encrypted))
密钥轮换策略
class APIKeyRotator:
def __init__(self):
self.keys_pool = []
self.current_index = 0
def rotate_key(self):
"""定时轮换API密钥"""
self.current_index = (self.current_index + 1) % len(self.keys_pool)
return self.keys_pool[self.current_index]
访问控制与监控
# 使用密钥中间件
from functools import wraps
from datetime import datetime
class KeyUsageTracker:
def __init__(self):
self.usage_log = {}
def track_usage(self, api_key):
if api_key not in self.usage_log:
self.usage_log[api_key] = {
'last_used': datetime.now(),
'usage_count': 0,
'rate_limit': 1000 # 每日限制
}
完整的密钥管理器示例
import hashlib
import logging
from typing import Optional
class APISecretManager:
"""完整的API密钥管理类"""
def __init__(self):
self.secrets = {}
self.logger = logging.getLogger(__name__)
def load_from_vault(self, vault_url: str):
"""从密钥保险库加载"""
# 实现实际的安全存储方案
pass
def validate_key(self, api_key: str) -> bool:
"""验证密钥有效性"""
# 检查格式、过期时间、使用限制等
return self._check_key_validity(api_key)
def revoke_key(self, api_key: str):
"""撤销泄露的密钥"""
self.secrets.pop(api_key, None)
self.logger.warning(f"Key revoked: {api_key[:8]}...")
安全建议清单
✅ 必须做到的:
- 永远不要将密钥硬编码在代码中
- 使用
.gitignore排除配置文件 - 为不同环境使用不同密钥(开发/测试/生产)
- 定期轮换密钥(建议90天)
- 实施最小权限原则
✅ 推荐实践:
# 使用环境变量 export AI_CRAYFISH_API_KEY="your-secret-key-here" # 使用密钥管理服务 # - AWS Secrets Manager # - Azure Key Vault # - HashiCorp Vault # - GCP Secret Manager
紧急响应流程
-
密钥泄露检测
- 监控异常使用模式
- 设置使用量警报
-
立即行动
def emergency_rotation(): # 1. 立即撤销泄露密钥 # 2. 生成新密钥 # 3. 更新所有依赖服务 # 4. 审计日志,确定泄露范围 pass
部署配置示例
# docker-compose.yml
version: '3.8'
services:
ai-service:
environment:
- AI_CRAYFISH_API_KEY=${AI_CRAYFISH_API_KEY}
secrets:
- api_key
secrets:
api_key:
external: true
监控与告警
# 监控脚本示例
def monitor_key_usage():
"""监控API密钥使用情况"""
metrics = {
'daily_usage': get_daily_count(),
'unusual_patterns': detect_anomalies(),
'key_age': calculate_key_age()
}
if metrics['daily_usage'] > threshold:
send_alert("High usage detected")
需要我针对你的具体使用场景(Web应用、移动端、微服务等)提供更详细的管理方案吗?
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。