Skip to content

安全配置

安全是部署和使用 Hermes Agent 时的首要考虑。本指南涵盖了关键的安全配置和最佳实践。

  • 安全生成:使用加密安全的随机数生成器创建密钥
  • 环境变量:将 API 密钥存储在环境变量中,避免硬编码
  • 密钥轮换:定期更换 API 密钥,建议每 90 天一次
  • 最小权限:为不同用途创建不同的密钥,限制权限范围
Terminal window
# 推荐做法
export HERMES_API_KEY="your-api-key-here"
# 代码中读取
import os
api_key = os.environ.get('HERMES_API_KEY')
  • 使用安全的密钥管理系统(如 AWS Secrets Manager、Azure Key Vault)
  • 避免通过邮件、即时通讯工具发送密钥
  • 实施密钥访问审计,记录谁访问了什么密钥
角色权限适用场景
管理员完全访问系统管理员
开发者读写权限开发团队
只读用户查询权限业务分析师
服务账户特定 API 权限自动化脚本
  • 最小权限原则:只授予完成任务所需的最小权限
  • 职责分离:关键操作需要多人审批
  • 定期审计:定期审查和清理不必要的权限
  • 所有 API 通信必须使用 HTTPS
  • 禁用不安全的 TLS 版本(1.0、1.1)
  • 配置强加密套件
# Nginx 配置示例
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
  • 使用受信任的 CA 签发的证书
  • 设置证书过期提醒
  • 实施证书自动轮换
  • 加密存储:敏感数据必须使用强加密算法存储
  • 数据脱敏:日志和监控中避免记录敏感信息
  • 数据分类:根据敏感度对数据进行分类管理
# 数据脱敏示例
def mask_sensitive_data(data):
# 隐藏 API 密钥的中间部分
if 'api_key' in data:
key = data['api_key']
data['api_key'] = key[:4] + '*' * (len(key) - 8) + key[-4:]
return data
  • 制定明确的数据保留期限
  • 自动清理过期数据
  • 实施数据备份和恢复机制
  • 仅开放必要的端口(如 443、80)
  • 限制源 IP 地址范围
  • 实施速率限制防止暴力破解
Terminal window
# iptables 示例
iptables -A INPUT -p tcp --dport 443 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j DROP
  • 限制服务只能访问必要的外部资源
  • 监控异常出站连接
  • 实施 DNS 过滤
  • 使用 CDN 和 WAF 服务
  • 配置速率限制
  • 实施请求验证和清洗
from pydantic import BaseModel, validator
class QueryRequest(BaseModel):
prompt: str
max_tokens: int = 100
@validator('prompt')
def validate_prompt(cls, v):
if len(v) > 10000:
raise ValueError('Prompt too long')
# 检查恶意内容
if contains_malicious_content(v):
raise ValueError('Invalid content')
return v
@validator('max_tokens')
def validate_max_tokens(cls, v):
if v < 1 or v > 4000:
raise ValueError('max_tokens must be between 1 and 4000')
return v
  • 实施输入过滤,防止提示注入攻击
  • 验证文件上传的类型和大小
  • 使用沙箱环境执行不可信代码
  • 过滤敏感信息(如密钥、密码)
  • 实施内容安全策略(CSP)
  • 防止信息泄露
def sanitize_response(response):
# 移除可能的敏感信息
sensitive_patterns = [
r'sk-[a-zA-Z0-9]{48}', # API 密钥格式
r'password[=:]\s*\S+', # 密码
r'-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----',
]
for pattern in sensitive_patterns:
response = re.sub(pattern, '[REDACTED]', response)
return response
  • 记录所有 API 请求和响应(脱敏后)
  • 记录身份验证事件
  • 记录配置变更
{
"timestamp": "2024-01-15T10:30:00Z",
"level": "INFO",
"event": "api_request",
"user_id": "user_123",
"endpoint": "/v1/chat",
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0...",
"request_size": 1024,
"response_size": 2048,
"duration_ms": 1500
}
  • 日志文件设置适当的权限(640)
  • 实施日志轮转和归档
  • 将关键日志发送到 SIEM 系统
  • 异常访问模式(如大量失败登录)
  • 异常流量模式(如 DDoS 攻击)
  • 资源使用异常(如 CPU、内存激增)
alerts:
- name: high_error_rate
condition: error_rate > 5%
duration: 5m
severity: critical
- name: suspicious_login
condition: failed_logins > 10 in 1m
duration: 1m
severity: high
- name: large_request
condition: request_size > 10MB
duration: 0s
severity: warning
  • 建立定期更新计划
  • 优先处理高危漏洞
  • 测试补丁后再部署到生产环境
  • 定期进行漏洞扫描
  • 实施依赖项安全检查
  • 进行渗透测试
Terminal window
# 依赖安全检查示例
pip install safety
safety check
# 容器扫描
docker scan my-image:latest
  1. 检测:通过监控发现安全事件
  2. 遏制:隔离受影响系统,防止扩散
  3. 根除:消除安全威胁的根本原因
  4. 恢复:恢复系统正常运行
  5. 总结:事后分析,改进安全措施

如果 API 密钥泄露:

  1. 立即撤销泄露的密钥
  2. 生成新密钥并更新配置
  3. 审查密钥使用日志,评估影响范围
  4. 通知相关方
  5. 加强密钥管理流程
  • GDPR:欧盟数据保护法规
  • CCPA:加州消费者隐私法
  • 等保 2.0:中国网络安全等级保护
  • 了解适用的法规要求
  • 实施数据主体权利(访问、删除、可携带)
  • 建立数据处理记录
  • 进行定期合规审计
  • API 密钥使用环境变量管理
  • 启用 HTTPS 并配置强加密
  • 实施输入验证和输出过滤
  • 配置防火墙和访问控制
  • 设置日志记录和监控
  • 定期轮换 API 密钥
  • 监控异常活动和告警
  • 保持系统和依赖更新
  • 定期备份关键数据
  • 进行安全审计
  • 定期审查安全策略
  • 进行安全培训
  • 更新应急响应计划
  • 跟踪新的安全威胁
  • 评估和采用新的安全技术

⚠️ 重要提醒:安全是一个持续的过程,而非一次性任务。定期审查和更新您的安全措施,以应对不断变化的威胁环境。