-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
- 🔍 发现的问题 / 原始需求描述
当前 systemd 部署脚本仍会默认把 GH_TOKEN 写入 opencode.env、把 A2A_BEARER_TOKEN 写入 a2a.env、把 provider keys 写入 opencode.secret.env。虽然权限是 600 root:root,但这仍属于长期凭证明文落盘的默认路径。
这会带来几个问题:
- 公开开源仓库会向运维方传递“默认写盘是推荐做法”的错误信号。
- 长期有效 token/key 落盘会扩大误用、备份泄露、主机侧取证暴露的风险面。
GH_TOKEN/A2A_BEARER_TOKEN被混入普通 env 文件,也不利于 secret/non-secret 边界清晰化。
相关文件:
-
/home/juanjuan/opencode-a2a-serve/scripts/deploy/setup_instance.sh -
/home/juanjuan/opencode-a2a-serve/scripts/deploy/install_units.sh -
/home/juanjuan/opencode-a2a-serve/scripts/deploy.sh -
🛠️ 建议实施方案
建议采用“默认不持久化,显式 opt-in 才写盘”的路径:
- 拆分 non-secret 与 secret env files:
opencode.env/a2a.env仅保留非敏感配置opencode.auth.env单独承载GH_TOKENa2a.secret.env单独承载A2A_BEARER_TOKENopencode.secret.env继续承载 provider keys
- 新增显式开关,例如
ENABLE_SECRET_PERSISTENCE=true:- 未开启时,部署脚本不写入上述 secret files
- 仅生成 root-only
*.example模板,并要求运维方自行预置 runtime secret files
- systemd unit 改为加载拆分后的 secret files,而不是把 secret 混在普通 env 文件里。
- README / deploy 文档更新为两种路径:
- 默认 secure path:预置 root-only secret files
- 显式 opt-in path:允许部署脚本代写 secret files,并明确风险
核心逻辑/伪代码:
if ENABLE_SECRET_PERSISTENCE == true:
write root-only secret env files
else:
create example templates only
require operator-provisioned runtime secret files before starting services
验收要求:
- 默认部署流程不再无提示地把长期凭证明文写盘。
- secret / non-secret 文件边界清晰。
- 现有需要持久化的运维场景,仍可通过显式开关完成。
附加快照:
- 发现时代码快照:
95e51873f6ed9ba00813d1a214063c3faece272c
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels