Skip to content

fix: encrypt API keys at rest in model_endpoint_store #77

Description

@jerry609

问题

PR #76 的 Gemini code review 指出:model_endpoint_store 将 API key 以明文存储在数据库中(api_key_value 列),存在安全风险。

参考 PaiSwitch 项目使用 macOS Keychain 安全存储 API key 的做法,我们需要对服务端数据库中的 API key 实现加密存储。

方案

  • 使用 Fernet 对称加密(cryptography 库),密钥从环境变量 PAPERBOT_SECRET_KEY 读取
  • 写入时加密,读取时解密(include_secrets=True 时解密返回,否则 mask)
  • 新增 utils/secret.py 封装 encrypt/decrypt
  • 改造 model_endpoint_store.py 的 upsert/read 路径
  • 兼容已有明文数据:读取时检测是否为 Fernet token,非 token 则视为明文(graceful migration)

关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions