docs(iwooos): 記錄 tenants 前台身份最小化驗證 [skip ci]

This commit is contained in:
Your Name
2026-06-15 08:39:11 +08:00
parent c8734e98f2
commit 2f559e8881

View File

@@ -1,3 +1,56 @@
## 2026-06-15AwoooP 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 scanTenants 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-15Public 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缺少責任、時窗與跨專案同步。