From f40b83456e14967bbe18b04fa9ac5f6f9bb9813c Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 15 Jun 2026 06:51:44 +0800 Subject: [PATCH] =?UTF-8?q?docs(iwooos):=20=E8=A8=98=E9=8C=84=20tenants=20?= =?UTF-8?q?=E9=81=AE=E7=BD=A9=E6=AD=A3=E5=BC=8F=E9=A9=97=E8=AD=89=20[skip?= =?UTF-8?q?=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/LOGBOOK.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 70888019e..5454e8d58 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,47 @@ +## 2026-06-15|Tenants 前台敏感識別二次遮罩與 Owner Gate Guard 正式部署完成 + +**背景**:使用者指出 `/zh-TW/awooop/tenants` 曾把個人 owner namespace、完整 repository slug、英文專案名稱、內部阻塞狀態與預算資訊直接放到前台。這不符合 IwoooS 現階段「只讀證據、低摩擦流程、公開面不暴露內部識別」原則;前台必須只顯示繁中公開名稱、公開代號與人讀狀態,raw id 只能留在後端、snapshot、guard 或只讀驗收脈絡。 + +**完成項目**: +- `/zh-TW/awooop/tenants` 租戶表由 `project_id`、`display_name`、預算金額改為 `TNT-###`、繁中公開名稱與「已設定 / 未設定」預算狀態。 +- 全域產品資產、網站入口與原始碼範圍新增公開名稱 allowlist 與代號 fallback:`AST-###`、`RTE-###`、`SRC-###`;未知或可能洩漏的英文 slug / owner-repo / 內部狀態一律不直出。 +- 原本可見的 evidence refs 內部路徑改為「已提交證據參照 N 項」,完整路徑保留在只讀台帳與 guard,不在前台公開顯示。 +- `security-mirror-progress-guard.py` 新增 tenants 前台防回歸:禁止舊表頭、預算格式化、raw owner namespace、raw readiness code、內部 evidence path 渲染與不安全 fallback。 +- 新增 `scripts/security/iwooos-owner-gate-guard.py` 與 `docs/security/IWOOOS-OWNER-GATE-GUARD.md`,集中鎖住 S4.9 / S4.10 / S4.11 / S4.12 owner response packet 與 S4.13 rollup 的 `0 / false` 邊界。 +- `security-mirror-dry-run.snapshot.json` 已加入 `CHECK_OWNER_GATE_GUARD`,主進度 guard 會同步呼叫 owner gate guard。 + +**本地驗證**: +- `python3 -m py_compile scripts/security/iwooos-owner-gate-guard.py scripts/security/security-mirror-progress-guard.py` 通過。 +- `python3 -m json.tool docs/security/security-mirror-dry-run.snapshot.json` 通過。 +- `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/security-mirror-progress-guard.py --root .` → `SECURITY_MIRROR_PROGRESS_GUARD_OK`。 +- `python3 scripts/ops/doc-secrets-sanity-check.py docs .gitea` → `DOC_SECRET_SANITY_OK scanned_files=863`。 +- `pnpm --dir apps/web typecheck` 通過。 +- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --dir apps/web build` 通過,92/92 static pages generated。 +- 本地 Chrome fixture smoke:故意注入 `owenhytsai/*`、`nexu-io/*`、英文產品名、`blocked_waiting_*`、`blockers=`、預算金額與 `docs/security/...`;desktop `1440x900` / mobile `390x844` 均 `forbiddenHits=[]`、`missingRequired=[]`、`horizontalOverflow=false`、console errors `0`。 + +**Gitea / CD**: +- Code commit:`3496a6be fix(iwooos): 鎖住 owner gate 與 tenants 前台遮罩`,已正常 push 到 `gitea/main`,無 force push。 +- Deploy marker:`583605a4 chore(cd): deploy 3496a6b [skip ci]`。 +- Gitea Actions run id:本輪未能以 unauthenticated 只讀 API 取得;`/api/v1/repos/wooo/awoooi/actions/runs` 回 `401 token is required`,未收 token、未重跑 workflow、未 dispatch action。 + +**Production 只讀驗證(deploy marker `583605a4`)**: +- deploy marker 回寫後曾短暫觀察到 `https://awoooi.wooo.work/api/v1/health` HTTP `502`;後續連續只讀檢查恢復為 HTTP `200`,`/zh-TW/awooop/tenants` 與 `/zh-TW/iwooos` 也為 HTTP `200`。 +- Chrome desktop `1440x900`:`/zh-TW/awooop/tenants?_v=3496a6be-583605a4-prod-desktop` 必填文案全可見;forbidden hits `0`;owner/repo shape `false`;`scrollWidth=1440`、`clientWidth=1440`、`horizontalOverflow=false`;console errors `0`、page errors `0`;截圖 `/tmp/tenants-3496a6be-prod-desktop.png`。 +- Chrome mobile `390x844`:`/zh-TW/awooop/tenants?_v=3496a6be-583605a4-prod-mobile` 必填文案全可見;forbidden hits `0`;owner/repo shape `false`;`scrollWidth=390`、`clientWidth=390`、`horizontalOverflow=false`;console errors `0`、page errors `0`;截圖 `/tmp/tenants-3496a6be-prod-mobile.png`。 +- Production forbidden 字串檢查包含 owner namespace、外部 namespace、完整 owner/repo slug、`blocked_waiting_*`、`blockers=`、`observe_scope_review`、舊預算表頭、英文專案名稱與完整 owner/repo pattern;desktop / mobile 均未命中。 + +**完成度與邊界**: +- Tenants 前台敏感識別遮罩:`94% -> 100%`。 +- AwoooP Tenants production redaction smoke:`0% -> 100%`。 +- S4.9 owner gate 集中 guard:`0% -> 100%`,僅代表 guard 完成,不代表 owner response 已收到。 +- Frontend public sensitive redaction defense:`70% -> 76%`。 +- IwoooS headline 維持 `64%`;active runtime gate 維持 `0`。 +- owner response received / accepted、target decision accepted、refs parity accepted、repository creation、refs sync、workflow modification、secret collection、runtime execution、action button、Nginx reload、host restart、firewall change、active scan 全部維持 `0 / false`。 +- 本輪未 SSH、未改主機、未重啟 Docker / Nginx、未修改 firewall / iptables、未收 secrets 明文、未執行 active scan、未切 GitHub primary、未 force push,也沒有把工作視窗溝通內容放上前端頁面。 + ## 2026-06-15|Package / Docker 供應鏈 repo-only baseline 完成 **背景**:IwoooS 資安治理已把 Nginx、K8s、Secrets、runner、firewall、backup 與 monitoring 納入高價值配置帳本,但 package manifest、Python dependency、lockfile、Dockerfile 與 docker-compose image refs 尚未有獨立 repo-only 供應鏈基線。此缺口會讓 CVE / license / SBOM / image digest / registry owner 後續沒有可比較的起點。