fix(cd): keep 188 deploy key out of step env
All checks were successful
Code Review / ai-code-review (push) Successful in 11s
All checks were successful
Code Review / ai-code-review (push) Successful in 11s
This commit is contained in:
@@ -834,11 +834,15 @@ jobs:
|
||||
# 感知層與備份通知都先走 AWOOI API/AwoooP,Telegram 直發只保留 API 離線 fallback。
|
||||
- name: Sync Ops Scripts to 188
|
||||
continue-on-error: true
|
||||
env:
|
||||
SSH_KEY_188: ${{ secrets.DEPLOY_SSH_KEY_188 }}
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "$SSH_KEY_188" > "${HOME}/.ssh/deploy_key_188"
|
||||
# 2026-05-13 Codex: do not pass multiline deploy keys through
|
||||
# step-level env; Gitea Actions prints env values in job logs.
|
||||
# Keep the secret scoped to this shell and write it directly to disk.
|
||||
cat > "${HOME}/.ssh/deploy_key_188" <<'DEPLOY_KEY_188'
|
||||
${{ secrets.DEPLOY_SSH_KEY_188 }}
|
||||
DEPLOY_KEY_188
|
||||
sed -i 's/^ //' "${HOME}/.ssh/deploy_key_188"
|
||||
chmod 600 "${HOME}/.ssh/deploy_key_188"
|
||||
timeout -k 5s 10s ssh-keyscan 192.168.0.188 >> ~/.ssh/known_hosts 2>/dev/null \
|
||||
|| echo "⚠️ 188 host key scan 失敗,改用 StrictHostKeyChecking=accept-new"
|
||||
|
||||
@@ -7911,3 +7911,28 @@ by_verdict:
|
||||
- 仍不能宣稱完整 AI 自動修復閉環;目前 aggregate 仍是 `verified_auto_repair_total=0`。
|
||||
- 新觀察:CD job log 會在 step env 區塊顯示 188 deploy key 內容。未在本文件記錄任何 secret 值,但必須列為下一個 P0:輪換 188 deploy key,並改造 workflow,避免 multiline secret 以 env 形式出現在 Gitea Actions logs。
|
||||
- 目前整體進度更新:約 84%。
|
||||
|
||||
### 2026-05-13 — T14d/P0:Gitea CD 188 deploy key log exposure 止血(workflow pushed)
|
||||
|
||||
**觸發**:
|
||||
|
||||
- T14c CD log 觀察到 `Sync Ops Scripts to 188` step 會在 Gitea Actions 的 step env 區塊顯示 188 deploy key 內容。
|
||||
- 未在 repo 或本文件保存任何 secret 值;但已經出現在 CI log,必須視為已暴露。
|
||||
|
||||
**止血變更**:
|
||||
|
||||
- `.gitea/workflows/cd.yaml` 移除 `SSH_KEY_188` step-level env。
|
||||
- 改在 shell 內直接寫入 `~/.ssh/deploy_key_188`,避免 multiline deploy key 以 env 形式進入 Gitea Actions log 的 env 區塊。
|
||||
|
||||
**verification**:
|
||||
|
||||
```text
|
||||
ruby -e 'require "yaml"; YAML.load_file(".gitea/workflows/cd.yaml"); puts "yaml ok"'
|
||||
yaml ok
|
||||
```
|
||||
|
||||
判讀:
|
||||
|
||||
- 這是 workflow-level 止血,不等於完成安全事件處置。
|
||||
- 下一步仍需輪換 188 deploy key,清理/限制歷史 job log 可見性,並用一次受控 workflow_dispatch 確認新 workflow 不再暴露 secret。
|
||||
- 目前整體進度更新:約 85%。
|
||||
|
||||
@@ -2056,6 +2056,12 @@ Phase 6 完成後
|
||||
- Security note:CD job log 觀察到 188 deploy key 內容會出現在 step env 區塊;未在本文件保存 secret 值。下一步 P0 必須輪換該 deploy key,並改造 workflow,避免 multiline secret 以 env 形式進入 Gitea Actions logs。
|
||||
- 下一步 T14d/P0:先處理 CI secret log exposure;再做安全 live-fire 驗證 Telegram 新卡在真實事件上的流程進度。
|
||||
|
||||
**T14d/P0 Gitea CD 188 deploy key log exposure stopgap(2026-05-13 台北)**:
|
||||
- 觸發:T14c CD log 觀察到 `Sync Ops Scripts to 188` step 以 step-level env 傳入 multiline 188 deploy key,Gitea Actions 會在 job log 的 env 區塊顯示內容。未在 repo / docs 保存任何 secret 值,但應視為已暴露。
|
||||
- 止血:`.gitea/workflows/cd.yaml` 移除 `SSH_KEY_188` step env,改在 shell 內直接寫入 `~/.ssh/deploy_key_188`,避免 key 以 env 形式進入 Actions log。
|
||||
- 驗證:`ruby -e 'require "yaml"; YAML.load_file(".gitea/workflows/cd.yaml"); puts "yaml ok"'` 通過。
|
||||
- 邊界:這不是完整安全事件處置;仍需輪換 188 deploy key、清理/限制歷史 job log 可見性,並以受控 `workflow_dispatch` 驗證新 workflow 不再暴露 secret。
|
||||
|
||||
---
|
||||
|
||||
### 2026-04-20 晚 (台北) — C1-C4 全流程串接 — Playbook 鏈路保護(commit de2d34d)
|
||||
|
||||
Reference in New Issue
Block a user