上线与运维
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_KEYDOWNCITY_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 轮换放到可信后端或运维流程中,不依赖浏览器手工操作