Files
Arcrun/system-dev/wiki/cards/decisions/多worker-ENCRYPTION_KEY同步.md
uncle6me-web 558e80b4da chore(wiki): wiki-init 補骨架 + system-dev-template 安裝/更新腳本
wiki 已初始化過(push 檔活躍維護),本次補從沒建的 pull 層 + arcrun 化範本:
- cards/decisions/ 14 張決策原子卡(含 gloss/實體/typed-edge 三元組):
  從 decisions-summary 全量改寫 13 + 新增「薄殼規則晚於實作-MCP漂移是歷史債」1
- TAXONOMY 從 PKM 範本換成 arcrun 軸(子系統 零件架構/cypher/credential/recipe/kbdb/
  薄殼/部署/平台原則 + 形態 架構決策/踩坑/機制說明/禁令/案例經驗)
- principles 填 13 條跨全局原則(從 rules/ + mindset 蒸餾)
- INDEX 真實視圖(子系統角度 + 決策角度,指向 cards)
- system-dev/scripts/ + scripts/ install/update 安裝腳本(template 接入)

純基建/文檔,無業務 code(功能 code 見前一 commit)。
raw source(docs/)0 異動、wiki 卡際連結無斷鏈。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 17:53:37 +08:00

2.5 KiB
Raw Permalink Blame History

tags, gloss
tags gloss
credential
部署
架構決策
踩坑
多個 Workerauth primitive + cypher-executor)共享 ENCRYPTION_KEY,用 wrangler secret put 手動設進各 Worker secret store,不用 KV。

多 Worker ENCRYPTION_KEY 同步

decisions/00-INDEX

來源system-dev/wiki/decisions-summary.md(多 Worker ENCRYPTION_KEY 同步)、.claude/rules/01-tech-stack.md 加解密規範 最後更新2026-06-27

摘要

Auth static_key / Auth service_account / cypher-executor 三個 Worker 都需 ENCRYPTION_KEY 來解密 credential。用各 Worker 的 secret store(非環境變數)存放;初期化時 acr init 生成一份 key,用 wrangler secret put ENCRYPTION_KEY 各設一次。

重點

  • Secret 存儲位置:各 Worker 的 secret storeCloudflare 原生機制),不是環境變數、不是 KV。環境變數會洩漏到日誌;KV 的 list 操作可能外洩。
  • 初始化流程acr init 生成一份 32 字節隨機 key → 印出一次 → 用戶自己跑 wrangler secret put ENCRYPTION_KEY --path <path> 分別設進三個 Worker。
  • 冪等性問題:目前 acr init 多跑幾次會生成不同 key(不冪等)。長期應改成「init 檢查現有 config → 若存在 key 則重用舊的、否則生成新的」。
  • 漂移陷阱:若某個 Worker 的 key 遺漏或與其他 Worker 不同 → credential 解密失敗 → 表現為 401/403(用戶困惑,難debug)。
  • 驗證方法init 完成後做一個 test workflow 打一個認證過的 API(如 gmail),確認三個 Worker 的 key 一致。

實體

  • ENCRYPTION_KEY(加密密鑰)— 32 字節 AES-GCM 密鑰,用來解密用戶的 credential。
  • Secret storeCloudflare 密鑰存儲)— Worker 的原生機制,用 wrangler secret put 設置、runtime 讀取,內容不外洩。
  • 密鑰漂移key drift)— 多個 Worker 持有不同版本的 ENCRYPTION_KEY,導致某些 Worker 解密失敗。
  • 冪等性idempotency)— acr init 多次運行應產生同一結果(目前不達成)。
  • 解密失敗decryption failure)— Worker 因 key 不匹配無法解密 credential,表現為 401/403 錯誤。

關聯

內文知識關係

  • ENCRYPTION_KEY >> 分散存儲於 >> Secret store
  • 密鑰漂移 >> 導致 >> 解密失敗
  • 冪等性 >> 缺乏時 >> 重跑 init 造成 key 不一致

卡片關係

  • (相關 memoryencryption-key-drift-trap — 解密失敗先比 key 指紋;屬 auto-memory 非 card