feat(iwooos): 顯示 Wazuh 即時中繼資料閘門
This commit is contained in:
@@ -73,6 +73,41 @@
|
||||
|
||||
**邊界**:本輪沒有手動 import、沒有 Drive write、沒有 DB restore / truncate、沒有 Docker / Nginx / firewall / K8s / ArgoCD runtime 寫入,沒有 Wazuh / SOC 修改,沒有使用聊天中的密碼,也沒有讀取或保存 secret。
|
||||
|
||||
## 2026-06-24|IwoooS Wazuh 即時中繼資料環境閘門前台驗證
|
||||
|
||||
**背景**:Wazuh 只讀 API source-side 修補、release gate、release lane preflight、owner request / acceptance 與 live metadata env gate 已完成,但 production 尚未部署,`/api/iwooos/wazuh` 仍不可用來代表 Wazuh runtime 狀態。本輪補上 IwoooS 前台可視化卡片,讓使用者在 `/zh-TW/iwooos` 直接看到「正式路由讀回、伺服端環境變數負責人、機密中繼資料、管理節點健康、唯讀帳號範圍、啟用後讀回」全部仍為 `0`,避免把 Wazuh 已建置或 UI 可見誤判為可查 live metadata。
|
||||
|
||||
**Source-side 完成**:
|
||||
- `apps/web/src/app/[locale]/iwooos/page.tsx` 新增 `IwoooSWazuhLiveMetadataEnvGateBoard`,位置在 Wazuh 入侵 readback 與 SOC / SIEM / Kali 整合卡之間。
|
||||
- `apps/web/messages/zh-TW.json` 與 `apps/web/messages/en.json` 新增同一份繁中鏡像文案;前台文案改為「負責人回覆、路由讀回、機密中繼資料、即時查詢」等產品治理語,不放工作視窗逐字稿、委派 XML、聊天內容或個人英文名稱。
|
||||
- 卡片邊界固定:`wazuh_live_metadata_env_gate_visible=true`、`production_route_readback_passed_count=0`、`live_metadata_owner_response_accepted_count=0`、`secret_source_metadata_accepted_count=0`、`wazuh_api_live_query_authorized_count=0`、`wazuh_active_response_authorized_count=0`、`runtime_gate_count=0`、`secret_value_collection_allowed=false`、`host_write_authorized=false`、`kali_active_scan_authorized=false`。
|
||||
|
||||
**驗證**:
|
||||
- `node -e "JSON.parse(...zh-TW...); JSON.parse(...en...)"`:通過。
|
||||
- `cmp -s apps/web/messages/zh-TW.json apps/web/messages/en.json`:通過,維持繁中鏡像。
|
||||
- `pytest apps/api/tests/test_iwooos_wazuh_api.py`:`4 passed`。
|
||||
- `python3 scripts/security/security-mirror-progress-guard.py --root .`:`SECURITY_MIRROR_PROGRESS_GUARD_OK`。
|
||||
- `python3 scripts/security/wazuh-readonly-route-boundary-guard.py --root .`:`route=2 public_ui_files=1 forbidden=0 runtime_gate=0`。
|
||||
- `python3 scripts/security/wazuh-readonly-release-gate.py --root .`:`source=1 push=0 deploy=0 readback=0 runtime_gate=0`。
|
||||
- `python3 scripts/security/wazuh-readonly-release-lane-preflight.py --root .`:`ready=0 acks=0/6 evidence=0/6 runtime_gate=0`。
|
||||
- `python3 scripts/security/wazuh-readonly-release-owner-request.py --root .`:`drafts=1 sent=0 accepted=0 runtime_gate=0`。
|
||||
- `python3 scripts/security/wazuh-readonly-release-owner-response-acceptance.py --root .`:`received=0 accepted=0 acks=0/6 evidence=0/6 runtime_gate=0`。
|
||||
- `python3 scripts/security/wazuh-readonly-live-metadata-env-gate.py --root .`:`route_readback=0 owner=0 secret_meta=0 live_query=0 runtime_gate=0`。
|
||||
- `pnpm --filter @awoooi/web typecheck`:通過。
|
||||
- 首次未帶 `NEXT_PUBLIC_API_URL` 的 build 依既有前端禁令在 prerender 階段 fail;重跑 `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --filter @awoooi/web build` 通過,`92/92` static pages,`/zh-TW/iwooos` route size `61.8 kB`、First Load JS `292 kB`。
|
||||
- 本機 preview `http://localhost:3137/zh-TW/iwooos?_v=wazuh-live-metadata-env-local` 桌機寬度:卡片可見、`scrollWidth=clientWidth=1434`、水平溢出 `false`、未命中工作視窗、委派、來源執行緒、外部對話與通知暱稱等內部協作詞;卡片也未命中英文流程裸字。
|
||||
- 本機 preview 手機寬度 `390x844`:卡片可見、`scrollWidth=clientWidth=384`、水平溢出 `false`,同樣未命中工作視窗字樣與英文流程裸字。
|
||||
|
||||
**完成度**:
|
||||
- Wazuh live metadata env gate source / guard:`100%`。
|
||||
- IwoooS 前台卡片 source / 本機桌機與手機驗證:`100%`。
|
||||
- Production deploy:`0%`。
|
||||
- Production `/api/iwooos/wazuh` readback:`0%`,部署前仍只允許 `predeploy_404_observed`。
|
||||
- Wazuh server-side env enable:`0%`。
|
||||
- Wazuh live query、active response、host write、Kali active scan、SOAR action:全部維持 `0 / false`。
|
||||
|
||||
**邊界**:本輪沒有 push、沒有 deploy、沒有 Nginx / Docker / K8s / firewall / Wazuh manager / secret / runtime 寫入,沒有 active scan,沒有收集或保存任何 secret value;只做 source、docs、guard、本機 build 與本機瀏覽器驗證。
|
||||
|
||||
## 2026-06-24|22:40 MOMO source absence readback 與資料 freshness blocker 定位
|
||||
|
||||
**背景**:22:17 已完成 MOMO import-boundary production deploy 驗證與 full cold-start refresh,但 cold-start 仍因 `MOMO_DAILY_FRESHNESS 7|2026-06-17` 保持 `BLOCKED=1`。本輪只做 MOMO scheduler / DB / import metadata 的 read-only 追查,目標是判斷資料停更是服務、版本、DB 同步、排程或來源缺席。
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
- `docs/security/wazuh-readonly-release-owner-request.snapshot.json`
|
||||
- `docs/security/wazuh-readonly-release-owner-response-acceptance.snapshot.json`
|
||||
- `docs/security/wazuh-readonly-live-metadata-env-gate.snapshot.json`
|
||||
- `apps/web/src/app/[locale]/iwooos/page.tsx`
|
||||
- `apps/web/messages/zh-TW.json`
|
||||
- `apps/web/messages/en.json`
|
||||
- `docs/LOGBOOK.md`
|
||||
|
||||
完成內容:
|
||||
@@ -57,6 +60,7 @@
|
||||
- 新增 release lane preflight snapshot 與 guard,固定正式 release 前必須選擇 `formal_gitea_merge`、`formal_patch_apply` 或 `maintainer_local_push_with_safe_credential` 其中一條合規 lane,且 owner ack / evidence 未到齊前不得 push、deploy、force push、使用明文 token workaround 或改 runtime。
|
||||
- 新增 release owner request 草稿與 owner response acceptance 帳本,將 required ack flags、required evidence fields、allowed release methods、blocked actions、forbidden payloads 與 reviewer checks 機器可讀化;目前 request sent、response received / accepted、release ready、runtime gate 全部維持 `0`。
|
||||
- 新增 live metadata env gate,固定部署後要先通過 production route readback、server-side env owner response、secret source metadata、Wazuh manager health ref、readonly account scope、post-enable readback、rollback 與 no-secret / no-raw-payload attestation;目前 live query authorized 仍為 `0`。
|
||||
- 新增 IwoooS 前台「Wazuh 即時中繼資料環境閘門」卡片,公開顯示上述 gate 的 `0 / false` 邊界;文案全部為繁體中文治理語,不放工作視窗逐字稿、委派 XML、聊天內容或個人英文名稱。
|
||||
|
||||
## 已完成驗證
|
||||
|
||||
@@ -74,6 +78,10 @@ python3 scripts/security/security-mirror-progress-guard.py --root .
|
||||
python3 scripts/ops/doc-secrets-sanity-check.py docs apps/api/src/api/v1/iwooos.py apps/web/src/app/api/iwooos/wazuh/route.ts scripts/security/wazuh-readonly-route-boundary-guard.py scripts/security/wazuh-readonly-production-readback.py scripts/security/wazuh-readonly-release-gate.py scripts/security/wazuh-readonly-release-lane-preflight.py scripts/security/wazuh-readonly-release-owner-request.py scripts/security/wazuh-readonly-release-owner-response-acceptance.py scripts/security/wazuh-readonly-live-metadata-env-gate.py
|
||||
python3 -m py_compile apps/api/src/api/v1/iwooos.py scripts/security/wazuh-readonly-route-boundary-guard.py scripts/security/wazuh-readonly-production-readback.py scripts/security/wazuh-readonly-release-gate.py scripts/security/wazuh-readonly-release-lane-preflight.py scripts/security/wazuh-readonly-release-owner-request.py scripts/security/wazuh-readonly-release-owner-response-acceptance.py scripts/security/wazuh-readonly-live-metadata-env-gate.py scripts/security/security-mirror-progress-guard.py
|
||||
git diff --check
|
||||
node -e "JSON.parse(require('fs').readFileSync('apps/web/messages/zh-TW.json','utf8')); JSON.parse(require('fs').readFileSync('apps/web/messages/en.json','utf8')); console.log('i18n json ok')"
|
||||
cmp -s apps/web/messages/zh-TW.json apps/web/messages/en.json
|
||||
pnpm --filter @awoooi/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 --filter @awoooi/web build
|
||||
```
|
||||
|
||||
驗證結果:
|
||||
@@ -89,6 +97,12 @@ git diff --check
|
||||
- `doc-secrets-sanity-check`:`DOC_SECRET_SANITY_OK scanned_files=973`。
|
||||
- `py_compile`:通過。
|
||||
- `git diff --check`:通過。
|
||||
- i18n JSON parse:通過。
|
||||
- `zh-TW` / `en` messages mirror:通過。
|
||||
- `pnpm --filter @awoooi/web typecheck`:通過。
|
||||
- Web production build:通過,`92/92` static pages,`/zh-TW/iwooos` route size `61.8 kB`、First Load JS `292 kB`;build env 使用公網 `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work`,未使用內網 IP。
|
||||
- 本機 preview desktop:`/zh-TW/iwooos` 卡片可見,水平溢出 `false`,沒有工作視窗 / 委派 / 對話字樣,卡片沒有英文流程裸字。
|
||||
- 本機 preview mobile `390x844`:卡片可見,水平溢出 `false`,同樣沒有工作視窗 / 委派 / 對話字樣。
|
||||
|
||||
## 乾淨套用 Proof
|
||||
|
||||
@@ -185,6 +199,7 @@ python3 scripts/security/wazuh-readonly-production-readback.py --json
|
||||
| Wazuh release lane preflight | `100%` | 已完成;owner acks `0/6`、evidence `0/6`、正式 release ready `0` |
|
||||
| Wazuh release owner request / acceptance | `100%` | 已完成只讀草稿與收件帳本;request sent `0`、response accepted `0` |
|
||||
| Wazuh live metadata env gate | `100%` | 已完成只讀 gate;route readback / owner / secret metadata / live query 仍 `0` |
|
||||
| IwoooS 前台 Wazuh live metadata env gate 卡片 | `100%` | source-side 與本機桌機 / 手機驗證完成;production deploy 仍 `0` |
|
||||
| 乾淨套用 proof | `100%` | patch set 可落在最新 `gitea/main` 並通過同組 guard;最終 hash 以 release 前 readback 為準 |
|
||||
| Gitea push | `0%` | 受控 workspace HTTPS credential 缺失 |
|
||||
| Production deploy / readback | `0%` | 等待 release lane |
|
||||
|
||||
Reference in New Issue
Block a user