🔑 API密钥管理

📘 实盘交易接口对接 · 实战

🔐 1. 密钥生成 & 安全存储方案

⚙️ 生成规范

  • API Key — 唯一标识,通常为UUID或随机字符串 (长度32~64)
  • Secret Key — 高熵密钥,至少32字节,使用 HMAC-SHA256 派生
  • 生成时强制绑定 IP白名单 与 权限范围
  • 示例生成逻辑 (Python) :
import secrets, hashlib
api_key = secrets.token_hex(24)          # 48字符
secret_raw = secrets.token_hex(32)       # 64字符
# 服务端存储哈希 (非明文)
hashed_secret = hashlib.sha256(secret_raw.encode()).hexdigest()

🧊 安全存储 (最佳实践)

  • ❌ 禁止 硬编码、版本控制、日志输出
  • ✅ 推荐 使用 HSM / 密钥保险箱 / 环境变量
  • 数据库存储:Secret Key 必须加盐哈希 (bcrypt/argon2)
  • 传输加密:TLS 1.3 + 签名认证 (时间戳防重放)
  • 定期轮换:建议每 90 天强制更新
🔒 安全等级: 采用零信任架构,密钥即身份。

🛡️ 2. 权限控制 & 白名单设置

权限类型范围建议策略白名单绑定
只读 (行情/账户)GET 请求仅查询,不操作固定IP / 网段
交易 (下单/撤单)POST/DELETE单独密钥 + 二次验证办公IP + 动态OTP
提币/转账高风险操作多签 + 人工审核仅内网堡垒机
管理 (子账户/API)全部权限仅用于紧急管理物理隔离IP

📋 白名单配置示例

  • IP白名单:203.0.113.0/24 , 198.51.100.7
  • API Key 绑定:perm=read, trade
  • 拒绝非白名单请求:HTTP 403

🧩 最小权限原则

每个API Key 只分配必要权限。例如:
网格机器人 → 仅交易+行情;
监控脚本 → 仅只读。

🧬 3. 密钥管理架构流 生成 · 存储 · 鉴权

🔑 密钥生成 高熵随机 / HSM 🔐 安全存储 加密 / 保险箱 / 哈希 🛡️ 权限 & IP白名单 最小权限 / 绑定 ⚡ 鉴权中间件 签名校验 / 时间戳 / 防重放 📈 实盘交易接口 下单 / 查询 / 风控 📋 审计日志

图:密钥从生成到鉴权的安全链路 (双边框设计呼应整体风格)

🧪 4. 实战代码片段 HMAC签名 + 白名单校验

📝 Python 签名示例

import hmac, hashlib, time

def sign_request(secret_key, method, path, body, timestamp):
    message = f"{timestamp}{method}{path}{body}"
    signature = hmac.new(
        secret_key.encode(),
        message.encode(),
        hashlib.sha256
    ).hexdigest()
    return signature

# 请求头携带: API-Key, Timestamp, Signature

🧱 白名单中间件 (伪代码)

def ip_whitelist_middleware(request):
    api_key = request.headers.get('API-Key')
    ip = request.remote_ip
    allowed_ips = get_key_bindings(api_key)
    if ip not in allowed_ips:
        return reject(403, "IP not allowed")
    # 继续验证签名
    return verify_signature(request)
💡 提示: 生产环境建议使用 API Gateway 统一管理白名单与限流。