From 2f559e8881b36f27b7a863551d01c3820cd7c959 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 15 Jun 2026 08:39:11 +0800 Subject: [PATCH] =?UTF-8?q?docs(iwooos):=20=E8=A8=98=E9=8C=84=20tenants=20?= =?UTF-8?q?=E5=89=8D=E5=8F=B0=E8=BA=AB=E4=BB=BD=E6=9C=80=E5=B0=8F=E5=8C=96?= =?UTF-8?q?=E9=A9=97=E8=AD=89=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/LOGBOOK.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index e52bfd03a..b6cdbb0dc 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,56 @@ +## 2026-06-15|AwoooP Tenants 前台身份與內部識別最小化補強 + +**背景**:`/zh-TW/awooop/tenants` 曾在 production 高可見區塊暴露個人 owner namespace、外部 org namespace、完整英文產品 / repo 名稱、raw source-control 狀態碼與 `blockers` 類內部數值。這不符合 IwoooS 前台資安原則:公開頁只可呈現脫敏範圍、只讀證據狀態與低摩擦治理邊界;個人識別、完整 repo namespace、內部狀態碼、schema id、工作視窗溝通內容與可被誤讀為 runtime 授權的字串不得進入前台或 client bundle。 + +**完成項目**: +- `/zh-TW/awooop/tenants` 的來源候選表不再顯示原始 repo namespace、完整英文產品 / repo 名稱、raw `blocked_waiting_*` 狀態或 `blockers=` 類內部碼,改為 `SRC-###` 脫敏範圍代號、繁中產品描述、風險等級、管控狀態與「待補證據」摘要。 +- 租戶頁 badge 從 raw schema version 改為 `只讀資產台帳`,避免 `awooop_tenant_asset_inventory_v1` 顯示在前台。 +- route shape 顯示從 `upstream=...; admin=...; ws=...` 改為 `上游 ...;後台 ...;即時通道 ...`。 +- 頁首操作員標記移除個人縮寫,改用 `ShieldCheck` 圖示與 `操作員` 無個人識別文案。 +- `scripts/security/security-mirror-progress-guard.py` 補上 Tenants 頁與 layout header 防回歸檢查,禁止 raw schema id、raw route key、raw blocker 文案、內部英文識別與頁首個人縮寫回流。 +- `zh-TW` 與目前鏡像文案同步維持繁體中文;沒有把工作視窗溝通內容放入前端頁面。 + +**本地驗證**: +- `python3 -m json.tool apps/web/messages/zh-TW.json` 通過。 +- `python3 -m json.tool apps/web/messages/en.json` 通過。 +- `python3 -m py_compile scripts/security/security-mirror-progress-guard.py` 通過。 +- `python3 scripts/security/security-mirror-progress-guard.py --root .` → `SECURITY_MIRROR_PROGRESS_GUARD_OK`。 +- `python3 scripts/security/iwooos-owner-gate-guard.py --root .` → `IWOOOS_OWNER_GATE_GUARD_OK`。 +- `python3 scripts/security/iwooos-config-control-guard.py --root .` → `IWOOOS_CONFIG_CONTROL_GUARD_OK`。 +- `python3 scripts/security/source-control-owner-response-guard.py --root .` → `SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`。 +- `python3 scripts/security/package-supply-chain-owner-policy-guard.py --root .` → `PACKAGE_SUPPLY_CHAIN_OWNER_POLICY_GUARD_OK`。 +- `python3 scripts/ops/doc-secrets-sanity-check.py docs .gitea apps/web/messages/zh-TW.json apps/web/messages/en.json 'apps/web/src/app/[locale]/awooop/tenants/page.tsx' apps/web/src/components/layout/header.tsx scripts/security/security-mirror-progress-guard.py` → `DOC_SECRET_SANITY_OK scanned_files=867`。 +- `DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/awoooi_test pytest -q apps/api/tests/test_awooop_tenant_asset_inventory.py` → `2 passed`。 +- `pnpm --filter @awoooi/web typecheck` 通過。 +- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --filter @awoooi/web build` 通過。 +- Targeted build scan:Tenants page chunk、AwoooP layout chunk 與 locale layout chunk 未命中高風險識別 marker。 +- `git diff --check` 通過。 + +**Gitea / CD**: +- Code commits: + - `471b16ac fix(awooop): 清理 tenants 前台內部識別文案` + - `1ac68352 fix(web): 隱藏頁首操作員個人縮寫` +- Deploy markers: + - `4ef5546a chore(cd): deploy 471b16a [skip ci]` + - `c8734e98 chore(cd): deploy 1ac6835 [skip ci]` +- Gitea Actions: + - 第一輪:CD `3019` 成功、code-review `3020` 成功。 + - 第二輪:code-review `3022` 成功;CD `3021` 的 `tests` 與 `build-and-deploy` 成功,deploy marker 已落地,但 `post-deploy-checks` 因 `Source Correlation Applied-Link Smoke` 回傳 `status=blocked allowed=false` 標記 failure。此 blocked 與本次 Tenants 前台脫敏修正不同範圍,不能當成 S4.9 / source correlation acceptance 已通過。 + +**Production 只讀驗證(最終 deploy marker `c8734e98`)**: +- In-app browser desktop `1280x720`:`/zh-TW/awooop/tenants?_v=c8734e98-header-prod-desktop` 載入完成,`只讀資產台帳`、`待補證據`、`上游`、`即時通道` 與 `16` 個產品 / 專案可見;高風險識別 marker 全部未命中;頁面水平溢出 `0`。 +- In-app browser mobile `390x844`:`/zh-TW/awooop/tenants?_v=c8734e98-header-prod-mobile` 載入完成,`共 2 個租戶 · 16 個產品 / 專案 · 31 個網站入口` 可見;高風險識別 marker 全部未命中;頁面水平溢出 `0`。表格仍可在自身容器內橫向捲動,但未造成整頁外溢。 +- Production HTML / JS bundle scan:`/zh-TW/awooop/tenants?_v=c8734e98-prod-final` HTTP `200`;HTML、AwoooP layout chunk、Tenants page chunk、locale layout chunk 均未命中個人 owner namespace、外部 org namespace、raw blocker 狀態、raw schema id、raw route key、完整英文產品 / repo 名稱、頁首個人縮寫或工作視窗文字。 + +**完成度與邊界**: +- Tenants raw owner / repo / internal status visible remediation:`95% -> 100%`。 +- 頁首操作員身份最小化:`0% -> 100%`。 +- Frontend public sensitive redaction defense:`86% -> 88%`。 +- AwoooP Tenants route visibility:`88% -> 92%`。 +- IwoooS headline 維持 `64%`;active runtime gate 維持 `0`。 +- S4.9 owner response、source correlation applied-link、target decision、refs parity、repository creation、refs sync、workflow modification、secret collection、runtime execution、action button、Nginx reload、host restart、firewall change、active scan 全部維持 `0 / false`。 +- 本輪未 SSH、未讀 live conf、未改主機、未重啟 Docker / Nginx、未修改 firewall / iptables、未收 secrets 明文、未執行 active scan、未切 GitHub primary、未 force push。 + ## 2026-06-15|Public Gateway 手動 / 緊急變更 Metadata Gate 強化 **背景**:使用者再次指出 Nginx / gateway 類配置常被手動變動,且端口或路由異常會直接影響 Ollama、ArgoCD、registry、stock 等服務。既有 Public Gateway owner response acceptance 已要求 owner、decision、live conf ref、rendered diff、`nginx -t` plan、route smoke、maintenance window、rollback owner 與 post-check,但尚未把「誰動了、何時動、影響哪些專案、是否同步通知」列為必填 metadata。這會讓事故收斂只看技術 diff,缺少責任、時窗與跨專案同步。