上线与运维

env 与 key 轮换

provider key 和 Downcity key 的维护方式。

City 集中管理 key 的好处是:多个产品不需要分别更新配置。

provider key

provider key 可以通过 Runtime env 管理,并保存到 City 数据库:

await admin.env.upsert({
  key: "OPENAI_API_KEY",
  value: "sk_new",
});

轮换后,所有接入该 City 的 service handler 都会读取到新值。数据库中的 env 值优先于 .env

Downcity 自己的 key

Downcity 自己维护两类关键密钥:

  • DOWNCITY_CITY_ADMIN_SECRET_KEY
  • DOWNCITY_CITY_TOKEN_SIGNING_KEY

admin secret

DOWNCITY_CITY_ADMIN_SECRET_KEY 用于 Admin City 管理 City。

token signing key

DOWNCITY_CITY_TOKEN_SIGNING_KEY 用于 City 内部签发和校验 user_token

轮换时要注意什么

  • 轮换 provider key 一般不影响已签发的 user_token
  • 轮换 DOWNCITY_CITY_TOKEN_SIGNING_KEY 会让旧 token 失效
  • 如果你在线上轮换 signing key,通常需要提前缩短 token TTL,或安排明确切换窗口

建议

  • 给 provider key 设置内部 owner
  • 记录 key 轮换时间
  • 把生产 key 轮换放到可信后端或运维流程中,不依赖浏览器手工操作