docs(iwooos): 記錄 cd runner secret 驗收部署 [skip ci]
This commit is contained in:
@@ -1,3 +1,49 @@
|
||||
## 2026-06-15|CD / Runner / Secret 注入變更證據驗收正式部署與 production 驗證完成
|
||||
|
||||
**背景**:高價值配置控管已涵蓋 Nginx、端口 / 防火牆、K8s / ArgoCD 與 Tenants 公開脫敏,但持續部署、程式碼審查、部署通知、runner 標籤、repository secret name parity 與 Secret 注入路徑本身仍是可寫且會影響正式服務的 C0 風險面。這次新增只讀變更證據驗收帳本,用 metadata-only 方式管控 workflow diff、runner attestation、secret name parity、secret injection route、deploy marker readback、guard result 與 post-check evidence;未經 owner evidence 驗收前,不收 secret 明文、hash、片段 token 或私鑰,也不修改 workflow、啟用 runner、dispatch action、輪替 secret 或授權部署。
|
||||
|
||||
**完成項目**:
|
||||
- 新增 `scripts/security/cd-runner-secret-injection-change-evidence-acceptance.py`,產生 CD / Runner / Secret 注入變更證據驗收只讀帳本。
|
||||
- 新增 `docs/security/cd-runner-secret-injection-change-evidence-acceptance.snapshot.json`,固定 `change_evidence_candidate_count=5`、`c0_change_evidence_candidate_count=4`、`write_capable_candidate_count=5`、`local_workflow_file_count=33`、`gitea_workflow_file_count=12`、`github_workflow_file_count=21`、`local_referenced_secret_name_count=42`、`runner_label_count=5`、`required_evidence_field_count=19`、`reviewer_check_count=19`、`outcome_lane_count=8`、`blocked_action_count=32`。
|
||||
- 新增 `docs/security/CD-RUNNER-SECRET-INJECTION-CHANGE-EVIDENCE-ACCEPTANCE.md`,定義 5 類候選、19 個必填 evidence 欄位、19 個 reviewer checks、8 條 outcome lanes 與 32 個 blocked actions。
|
||||
- `high-value-config-control-coverage.snapshot.json` 已同步 `secret_metadata` 成熟度 `66% -> 68%`,`gitea_workflow_runner_source_control` 成熟度 `70% -> 72%`;高價值配置平均維持 `68%`,needs-live-evidence 類別 `6 -> 8`。
|
||||
- `/zh-TW/iwooos` 前端已新增 P0 配置控管卡片「工作流程 / 執行器 / 機密中繼資料」,顯示 `68% / 72%`,並同步 CD / runner / secret acceptance markers 與 `0 / false` 邊界。
|
||||
- `security-mirror-progress-guard.py` 已鎖住新 snapshot schema、summary、candidate ids、evidence 欄位數、reviewer checks、outcome lanes、blocked actions、coverage 百分比、posture projection 與前端 marker。
|
||||
|
||||
**本地驗證**:
|
||||
- 產生器 smoke:`CD_RUNNER_SECRET_INJECTION_CHANGE_EVIDENCE_ACCEPTANCE_OK candidates=5 c0=4 write_capable=5 checks=19 lanes=8 accepted=0 runtime_gate=0`。
|
||||
- high-value config coverage 重產:`HIGH_VALUE_CONFIG_CONTROL_COVERAGE_OK categories=14 c0=8 avg=68 runtime_gate=0`。
|
||||
- `python3 -m py_compile scripts/security/cd-runner-secret-injection-change-evidence-acceptance.py scripts/security/high-value-config-control-coverage.py scripts/security/security-mirror-progress-guard.py` 通過。
|
||||
- JSON parse:CD / Runner / Secret acceptance snapshot、high-value coverage snapshot、IwoooS posture projection snapshot、`apps/web/messages/zh-TW.json`、`apps/web/messages/en.json` 通過。
|
||||
- `python3 scripts/security/security-mirror-progress-guard.py --root .` → `SECURITY_MIRROR_PROGRESS_GUARD_OK`。
|
||||
- `python3 scripts/security/source-control-owner-response-guard.py --root .` → `SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`。
|
||||
- `python3 scripts/ops/doc-secrets-sanity-check.py docs .gitea` → `DOC_SECRET_SANITY_OK scanned_files=856`。
|
||||
- `git diff --check` 與 `git diff --cached --check` 通過。
|
||||
- `pnpm --dir apps/web typecheck` 通過。
|
||||
- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --dir apps/web build` 通過,92/92 static pages generated。
|
||||
- local bundle / messages scan:`/iwooos` route bundle 可見 `cd_runner_secret_injection_change_evidence_acceptance_candidate_count=5`、`secret_metadata_coverage_percent=68`、`gitea_workflow_runner_source_control_coverage_percent=72`、`68% / 72%`;messages 可見 `工作流程 / 執行器 / 機密中繼資料` 與 `不收明文值、hash、片段 token 或私鑰`;raw owner namespace、外部 raw namespace、完整 agent bounty repository slug、`blocked_waiting_*`、`observe_scope_review`、工作視窗溝通片語與舊 `Code Review、部署通知` 文案均未命中。
|
||||
|
||||
**Gitea / CD**:
|
||||
- Code commit:`5034e715 fix(iwooos): 新增 cd runner secret 變更證據驗收`,已正常 push 到 `gitea/main`,無 force push。
|
||||
- Code Review:Gitea Actions run `3000` Success。
|
||||
- CD:Gitea Actions run `2999` Success;jobs `tests`、`build-and-deploy`、`post-deploy-checks` 全部 Success。
|
||||
- Deploy marker:`7b192b09 chore(cd): deploy 5034e71 [skip ci]`,`gitea/main` 已快轉到該 marker。
|
||||
|
||||
**Production 只讀驗證(deploy marker `7b192b09`)**:
|
||||
- In-app browser `1280x720`:`/zh-TW/iwooos?_v=5034e715-cd-runner-secret-prod-browser` 可見 `IwoooS`、`P0 配置控管優先序`、`工作流程 / 執行器 / 機密中繼資料`、`68% / 72%` 與 `不收明文值、hash、片段 token 或私鑰`;`scrollWidth=1274`、`clientWidth=1274`、`horizontalOverflow=false`,forbidden hits `0`。
|
||||
- Chrome desktop `1440x900`:`/zh-TW/iwooos?_v=5034e715-cd-runner-secret-prod-desktop` HTTP `200`;必填文案全可見,`scrollWidth=1440`、`clientWidth=1440`、`horizontalOverflow=false`,console errors `0`、page errors `0`、forbidden hits `0`;截圖 `/tmp/iwooos-5034e715-cd-runner-secret-prod-desktop.png`。
|
||||
- Chrome mobile `390x844`:`/zh-TW/iwooos?_v=5034e715-cd-runner-secret-prod-mobile` HTTP `200`;必填文案全可見,`scrollWidth=390`、`clientWidth=390`、`horizontalOverflow=false`,console errors `0`、page errors `0`、forbidden hits `0`;截圖 `/tmp/iwooos-5034e715-cd-runner-secret-prod-mobile.png`。
|
||||
- Production desktop / mobile 均未命中個人 owner namespace、外部 raw namespace、完整 repository slug、`blocked_waiting_refs_parity`、`blocked_waiting_target_decision`、`blocked_waiting_internal_remote_decision`、`observe_scope_review`、`namespace_redacted=true`、工作視窗溝通片語或抱怨原句。
|
||||
|
||||
**完成度與邊界**:
|
||||
- CD / Runner / Secret 注入變更證據驗收 artifact:`100%`。
|
||||
- Secret metadata 只讀治理成熟度:`66% -> 68%`。
|
||||
- Gitea workflow / runner source control 只讀治理成熟度:`70% -> 72%`。
|
||||
- 高價值配置平均只讀成熟度:維持 `68%`;needs-live-evidence 類別 `8`。
|
||||
- IwoooS headline:維持 `64%`;active runtime gate:維持 `0`。
|
||||
- workflow diff accepted、runner attestation accepted、secret name parity accepted、secret injection route accepted、deploy marker readback accepted、guard result accepted、postcheck evidence accepted、runtime approval package ready 全部維持 `0 / false`。
|
||||
- webhook modification、runner change、repo secret change、secret hash collection、partial token collection、secret rotation、secret store read、secret injection change、GitHub hosted runner enable、Gitea action dispatch、CD pipeline run、deploy marker write、K8s secret injection、production deploy、refs sync、force push、GitHub primary switch、disable Gitea 全部維持 `0 / false`。
|
||||
|
||||
## 2026-06-15|Tenants 風險表公開脫敏與內部狀態碼移除完成
|
||||
|
||||
**背景**:使用者指出 `/zh-TW/awooop/tenants` 的「原始碼 / 專案庫範圍」不應直接顯示個人 owner namespace、完整 repository slug 或內部 `blocked_waiting_*` 類狀態碼;這類資訊即使來自只讀治理台帳,也不應暴露在公開前端或 public API。這次修正將 Tenants source scope 改為公開安全的範圍代號與繁中狀態說明,並用 guard 鎖住 raw identity、raw readiness code 與內部工作語句不得再次進入前台。
|
||||
|
||||
Reference in New Issue
Block a user