From 975ed981e2ebbc82a01a1dd2afb769b005332d90 Mon Sep 17 00:00:00 2001 From: ogt Date: Thu, 25 Jun 2026 11:08:34 +0800 Subject: [PATCH] fix(iwooos): redact frontend host topology labels --- apps/web/messages/en.json | 202 +++++++++--------- apps/web/messages/zh-TW.json | 202 +++++++++--------- apps/web/src/app/[locale]/iwooos/page.tsx | 66 +++--- docs/LOGBOOK.md | 5 + ...iwooos-frontend-display-redaction-guard.py | 60 ++++++ .../security-mirror-progress-guard.py | 46 ++-- 6 files changed, 325 insertions(+), 256 deletions(-) create mode 100644 scripts/security/iwooos-frontend-display-redaction-guard.py diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 2459d621..dc711f17 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -153,7 +153,7 @@ }, "topology": { "hosts": "主機層", - "hostsDetail": "host:public-gateway / host:dev-a / host:kali-readonly / host:k3s-control-a / host:k3s-control-b / host:observability-a 等主機進入佈局視野。", + "hostsDetail": "公開閘道節點 / 開發主機群 A / 資安觀測節點 / K3s 控制節點 A / K3s 控制節點 B / 觀測控制節點 等主機進入佈局視野。", "products": "專案與網站", "productsDetail": "前台、後台與相鄰專案使用同一組治理視角。", "services": "服務健康", @@ -734,7 +734,7 @@ }, "routing": { "module": "AI Router / Agent 分工", - "owns": "GCP-A、GCP-B、host:dev-a、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" + "owns": "GCP-A、GCP-B、開發主機群 A、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" }, "execution": { "module": "PlayBook / MCP / Ansible", @@ -1062,13 +1062,13 @@ } }, "runtimeReadbackFixtureApproval": { - "title": "P2-112 runtime readback fixture 批准包", + "title": "P2 runtime readback fixture 批准包", "source": "{generated} · {current} → {next}", - "priorRuntimeTitle": "P2-110 實作審查承接", + "priorRuntimeTitle": "P2 runtime 實作審查承接", "priorDeliveryTitle": "P2-111 實發批准承接", "truthTitle": "fixture 批准真相", "metrics": { - "overall": "P2-112 進度", + "overall": "P2 runtime 進度", "cards": "fixture 卡", "contracts": "adapter contract", "checks": "verifier fixture", @@ -2718,8 +2718,8 @@ "checkC1Desc": "repair_lock 防止重複執行", "checkC2Label": "反饋閉環 (Success Rate)", "checkC2Desc": "Success Rate Update → RAG 信心自更新", - "checkC3Label": "執行路徑明確化 (host:observability-a)", - "checkC3Desc": "ansible:// 強制路由至 host:observability-a 控制節點", + "checkC3Label": "執行路徑明確化 (觀測控制節點)", + "checkC3Desc": "ansible:// 強制路由至 觀測控制節點", "agentRoleOC": "診斷 & RAG 匹配", "agentRoleNemo": "決策 & 執行下令", "todayMatches": "本日匹配", @@ -5916,12 +5916,12 @@ } }, "runtimeReadbackImplementationReview": { - "title": "P2-110 runtime readback 實作審查", + "title": "P2 runtime readback 實作審查", "source": "{generated} · {current} → {next}", "truthTitle": "實作審查真相", "priorTitle": "P2-109 批准包承接", "metrics": { - "overall": "P2-110 進度", + "overall": "P2 runtime 進度", "cards": "實作卡", "checks": "無寫入 verifier", "blockers": "阻塞項", @@ -6081,13 +6081,13 @@ } }, "runtimeReadbackFixtureApproval": { - "title": "P2-112 runtime readback fixture 批准包", + "title": "P2 runtime readback fixture 批准包", "source": "{generated} · {current} → {next}", - "priorRuntimeTitle": "P2-110 實作審查承接", + "priorRuntimeTitle": "P2 runtime 實作審查承接", "priorDeliveryTitle": "P2-111 實發批准承接", "truthTitle": "fixture 批准真相", "metrics": { - "overall": "P2-112 進度", + "overall": "P2 runtime 進度", "cards": "fixture 卡", "contracts": "adapter contract", "checks": "verifier fixture", @@ -6197,7 +6197,7 @@ "liveWrites": "live writes" }, "flags": { - "fixtureLoaded": "P2-112 loaded={value}", + "fixtureLoaded": "P2 runtime loaded={value}", "gateReady": "gate ready={value}", "failureReceiptReady": "failure receipt ready={value}", "reviewerReady": "reviewer preview={value}", @@ -9507,7 +9507,7 @@ }, "aiRouteStatus": { "title": "AI Provider路由", - "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、host:dev-a、Gemini的接手順序", + "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、開發主機群 A、Gemini的接手順序", "selected": "使用中:{provider}", "selectedEmpty": "使用中:--", "empty": "尚未取得 AI provider route 狀態。", @@ -9880,7 +9880,7 @@ "securityEntry": "資安入口", "securityEntryDetail": "IwoooS仍是資訊安全的只讀入口與態勢鏡像。", "hostCoverage": "主機覆蓋", - "hostCoverageDetail": "Kali host:kali-readonly、開發主機 host:dev-b、開發主機 host:dev-a 已納入只觀察視野。", + "hostCoverageDetail": "資安觀測節點、開發主機群 B、開發主機群 A 已納入只觀察視野。", "policyMutations": "租戶政策變更", "policyMutationsDetail": "目前為 0;負責人回覆與執行期閘門前不得改政策。" }, @@ -10430,7 +10430,7 @@ "activeRuntimeGates": "主動執行閘門", "activeRuntimeGatesDetail": "任何執行期閘門仍需獨立批准、回復方案與事後檢查證據。", "headline": "整體資安網", - "headlineDetail": "已因 AwoooP 正式只讀落地證據與Kali host:kali-readonly 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" + "headlineDetail": "已因 AwoooP 正式只讀落地證據與資安觀測節點 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" }, "checks": { "s49OwnerAttestation": { @@ -11342,7 +11342,7 @@ }, "assetMesh": { "title": "資產與主機已納管", - "body": "9 類產品 / 網站 / 工具面與host:kali-readonly、host:dev-a、host:dev-b 三台主機已放入同一個只讀資安網。" + "body": "9 類產品 / 網站 / 工具面與資安觀測節點、開發主機群 A、開發主機群 B 三台主機已放入同一個只讀資安網。" }, "nextBlocker": { "title": "待補關鍵證據", @@ -11397,8 +11397,8 @@ }, "hostTools": { "label": "主機工具", - "title": "Kali與工具鏈", - "body": "看 host:kali-readonly / host:dev-a / host:dev-b與監控、MCP、Ansible、KM的只讀鏈路。" + "title": "資安觀測工具鏈", + "body": "看 資安觀測節點 / 開發主機群 A / 開發主機群 B與監控、MCP、Ansible、KM的只讀鏈路。" }, "sourceControl": { "label": "版本來源", @@ -11697,8 +11697,8 @@ "body": "AwoooI、AwoooP、IwoooS、公開網站與任務媒合產品 先進入同一張只讀視圖。" }, "hosts": { - "title": "Kali與開發主機", - "body": "host:kali-readonly、host:dev-a、host:dev-b只呈現觀測與證據窗口,不直接連線執行。" + "title": "資安觀測節點與開發主機", + "body": "資安觀測節點、開發主機群 A、開發主機群 B只呈現觀測與證據窗口,不直接連線執行。" }, "sourceControl": { "title": "GitHub / Gitea", @@ -11750,14 +11750,14 @@ }, "sourceToHost": { "title": "版本來源到主機", - "evidence": "GitHub / Gitea、Kali、host:dev-a / host:dev-b 已串成只讀路徑。", + "evidence": "GitHub / Gitea、Kali、開發主機群 A / 開發主機群 B 已串成只讀路徑。", "risk": "主機窗口與版本來源決策尚未完成。", "next": "收斂負責人窗口與決策紀錄。", "locked": "不改分支參照、工作流程或主機設定。" }, "kaliToDev": { - "title": "Kali 到開發主機", - "evidence": "host:kali-readonly、host:dev-a、host:dev-b 已可在同一路徑中理解。", + "title": "資安觀測節點到開發主機", + "evidence": "資安觀測節點、開發主機群 A、開發主機群 B 已可在同一路徑中理解。", "risk": "未批准前不能把關係圖當掃描範圍。", "next": "等待掃描範圍與維護窗口批准。", "locked": "scan_authorized=false。" @@ -11830,10 +11830,10 @@ "body": "GitHub / Gitea 是版本來源關鍵節點;目前只顯示 S4.9 負責人回覆待補與決策紀錄缺口,不執行分支參照或工作流程變更。" }, "kali": { - "body": "Kali host:kali-readonly 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" + "body": "資安觀測節點 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" }, "devHosts": { - "body": "host:dev-a與host:dev-b 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" + "body": "開發主機群 A與開發主機群 B 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" }, "monitoring": { "body": "監控、MCP、Ansible、KM與告警資料先進入證據線,讓 IwoooS 能解釋訊號來源與新鮮度。" @@ -11857,8 +11857,8 @@ }, "topology": { "title": "主機拓樸", - "mapTitle": "host:kali-readonly / host:dev-a / host:dev-b只讀觀測主機網", - "detail": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", + "mapTitle": "資安觀測節點 / 開發主機群 A / 開發主機群 B只讀觀測主機網", + "detail": "將 資安觀測節點、開發主機群 A / 開發主機群 B、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", "evidence": "目前只呈現觀測窗口、證據位置與人工閘門,沒有執行 SSH、掃描或主機設定變更。", "next": "等執行期閘門與掃描範圍批准後,才把只讀證據轉入受控探測。", "locked": "host_change_authorized=false,scan_authorized=false。" @@ -11888,7 +11888,7 @@ "title": "版本來源" }, "kali": { - "title": "Kali host:kali-readonly" + "title": "資安觀測節點" }, "devHosts": { "title": "開發主機" @@ -11914,7 +11914,7 @@ }, "hostFabric": { "title": "主機拓樸面", - "body": "host:kali-readonly、host:dev-a、host:dev-b 維持只讀觀測顯示。" + "body": "資安觀測節點、開發主機群 A、開發主機群 B 維持只讀觀測顯示。" }, "evidenceOps": { "title": "證據營運面", @@ -11986,9 +11986,9 @@ }, "hostWindow": { "short": "主機窗口", - "title": "Kali host:kali-readonly與開發主機 host:dev-a / host:dev-b的維護窗口", + "title": "資安觀測節點與開發主機群 A / 開發主機群 B的維護窗口", "body": "三台主機已進入資安架構圖,但目前是只讀納管,不代表已允許更新、調校、掃描或SSH 操作。", - "evidence": "host:kali-readonly / host:dev-a / host:dev-b 在拓樸圖、路徑探索器與主機證據鏈中可見。", + "evidence": "資安觀測節點 / 開發主機群 A / 開發主機群 B 在拓樸圖、路徑探索器與主機證據鏈中可見。", "next": "等待維護窗口、範圍、負責人與回復路徑確認。", "blocked": "host_change_authorized=false;scan_authorized=false。" }, @@ -12027,11 +12027,11 @@ "body": "先列入只讀驗證與控管範圍,不啟用 agent 執行、claim、submit 或 bounty 撥付。" }, "kali": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "body": "列入資安主機,但目前只讀顯示。" }, "devHosts": { - "title": "開發主機 host:dev-a / host:dev-b", + "title": "開發主機群 A / 開發主機群 B", "body": "等待維護窗口與負責人決策。" }, "monitoring": { @@ -12133,12 +12133,12 @@ "caption": "新專案只讀納管" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "caption": "只讀快照已接入" }, "devHosts": { "title": "開發主機", - "caption": "host:dev-b / host:dev-a 納入視野" + "caption": "開發主機群 B / 開發主機群 A 納入視野" }, "githubPrimary": { "title": "GitHub 主來源", @@ -12173,7 +12173,7 @@ "drilldown": { "title": "展開證據 / 主機 / 動作下鑽", "evidence": "證據:快照、守門、LOGBOOK、審批佇列保留在下方可展開區。", - "hosts": "主機:Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a都以只讀納管,不直接 SSH或掃描。", + "hosts": "主機:資安觀測節點、開發主機群 B / 開發主機群 A都以只讀納管,不直接 SSH或掃描。", "actions": "動作:所有高風險動作仍需人工決策,頁面不提供執行按鈕。" } }, @@ -12204,10 +12204,10 @@ }, "devHosts": { "title": "開發主機", - "state": "host:dev-a / host:dev-b" + "state": "開發主機群 A / 開發主機群 B" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "state": "待維護" }, "runtimeGate": { @@ -12256,12 +12256,12 @@ "caption": "新專案先只讀納管" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "caption": "維護窗口待人工確認" }, "devHosts": { "title": "開發主機", - "caption": "host:dev-a / host:dev-b 納入範圍" + "caption": "開發主機群 A / 開發主機群 B 納入範圍" }, "githubPrimary": { "title": "GitHub 主來源", @@ -12360,7 +12360,7 @@ }, "hostKali": { "title": "主機與Kali邊界", - "summary": "將 host:kali-readonly / host:dev-a / host:dev-b的 僅觀察、收件與人工決策證據收在進階區。" + "summary": "將 資安觀測節點 / 開發主機群 A / 開發主機群 B的 僅觀察、收件與人工決策證據收在進階區。" } }, "metrics": { @@ -12431,8 +12431,8 @@ "body": "只顯示主要來源就緒度、分支參照真相、工作流程 / 機密名稱證據。" }, "hosts": { - "title": "Kali與開發主機", - "body": "host:kali-readonly / host:dev-a / host:dev-b只進 僅觀察 coverage。" + "title": "資安觀測節點與開發主機", + "body": "資安觀測節點 / 開發主機群 A / 開發主機群 B只進 僅觀察 coverage。" }, "toolsMonitoring": { "title": "監控、工具與自動化", @@ -12455,7 +12455,7 @@ "globalSecurityMeshMatrix": { "eyebrow": "全域資安納管矩陣", "title": "所有產品、主機、工具放在同一張表", - "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、任務媒合產品、代理賞金協議、Kali host:kali-readonly、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", + "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、任務媒合產品、代理賞金協議、資安觀測節點、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", "coverageLabel": "覆蓋", "evidenceLabel": "證據", "runtimeLabel": "執行", @@ -12522,7 +12522,7 @@ "next": "先完成 任務媒合產品 六項只讀收件。" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "layer": "安全主機、掃描能力、維護窗口與主機狀態。", "coverage": "只讀快照", "evidence": "待維護窗口", @@ -12530,7 +12530,7 @@ "next": "維持觀測,不執行更新、掃描或/execute。" }, "devHosts": { - "title": "開發主機 host:dev-a / host:dev-b", + "title": "開發主機群 A / 開發主機群 B", "layer": "兩台開發主機的資安範圍、證據收件與人工判定。", "coverage": "已納入", "evidence": "待補主機證據", @@ -12558,7 +12558,7 @@ "hostToolEvidenceChain": { "eyebrow": "主機與工具證據鏈", "title": "Kali、開發主機、監控工具一次看清楚", - "subtitle": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", + "subtitle": "將 資安觀測節點、開發主機群 A / 開發主機群 B、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", "flowTitle": "證據鏈順序", "evidenceLabel": "證據", "nextLabel": "下一步", @@ -12567,7 +12567,7 @@ "summary": { "hosts": { "label": "主機", - "detail": "host:kali-readonly、host:dev-a、host:dev-b 三台進入視野。" + "detail": "資安觀測節點、開發主機群 A、開發主機群 B 三台進入視野。" }, "toolLanes": { "label": "工具線", @@ -12606,19 +12606,19 @@ }, "items": { "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "scope": "安全主機已納入 IwoooS;目前只呈現快照、維護窗口與待處理項。", "evidence": "只讀 快照、1994 package 佇列、1 個 systemd 異常、/execute=false。", "next": "等維護窗口與人工授權,不更新、不重啟、不掃描。" }, "dev111": { - "title": "開發主機 host:dev-a", + "title": "開發主機群 A", "scope": "本機備援、開發服務與AI fallback 相關資產先納入觀測。", "evidence": "目前只收主機角色、服務範圍、負責人決策與脫敏證據。", "next": "補負責人證據;不做 SSH 變更或服務調校。" }, "dev168": { - "title": "開發主機 host:dev-b", + "title": "開發主機群 B", "scope": "開發主機與專案工作區納入資安範圍。", "evidence": "目前只收主機中繼資料、專案對應與人工判定。", "next": "補主機證據與責任邊界;不開自動修復。" @@ -12764,9 +12764,9 @@ "body": "Gitea 到 GitHub的長期方向已確認,但 參照、工作流程、機密 name與回復 ADR仍需負責人回覆。" }, "kali": { - "title": "Kali host:kali-readonly 網格", + "title": "資安觀測節點 網格", "state": "只觀測", - "body": "Kali host:kali-readonly 已在資安網範圍中,host:dev-a / host:dev-b 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" + "body": "資安觀測節點 已在資安網範圍中,開發主機群 A / 開發主機群 B 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" }, "governance": { "title": "審批邊界", @@ -12968,7 +12968,7 @@ }, "kaliNotCalled": { "title": "前端索引不呼叫 Kali", - "body": "Kali host:kali-readonly 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" + "body": "資安觀測節點 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" } } }, @@ -13041,7 +13041,7 @@ }, "kaliScanScope": { "title": "Kali 掃描範圍", - "body": "Kali host:kali-readonly、host:dev-a、host:dev-b 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", + "body": "資安觀測節點、開發主機群 A、開發主機群 B 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", "unlock": "掃描範圍批准 + 後續追蹤 閘門" }, "followupRuntimeGate": { @@ -13058,29 +13058,29 @@ "items": { "kali112": { "title": "Kali 資安主機", - "body": "host:kali-readonly 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", + "body": "資安觀測節點 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", "state": "已納入視野;主動掃描、/execute、主機更新仍需獨立批准" }, "dev168": { - "title": "開發主機 host:dev-b", - "body": "host:dev-b 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", + "title": "開發主機群 B", + "body": "開發主機群 B 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" }, "dev111": { - "title": "開發主機 host:dev-a", - "body": "host:dev-a 納入 IwoooS的僅觀察開發主機覆蓋,與 host:dev-b 一起維持低摩擦分階段收斂。", + "title": "開發主機群 A", + "body": "開發主機群 A 納入 IwoooS的僅觀察開發主機覆蓋,與 開發主機群 B 一起維持低摩擦分階段收斂。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" } } }, "kaliMaintenanceReadiness": { - "eyebrow": "Kali host:kali-readonly 維護就緒度", - "title": "Kali host:kali-readonly 今天已重新只讀驗證,更新與重啟仍在維護閘門", + "eyebrow": "資安觀測節點 維護就緒度", + "title": "資安觀測節點 今天已重新只讀驗證,更新與重啟仍在維護閘門", "subtitle": "這個看板把 2026-06-04 08:55的只讀 SSH 快照轉成操作可讀狀態:掃描服務與8080 /health 健康檢查正常,node-exporter與wg-easy仍在運作;但完整套件升級、自動移除、重啟、掃描、/execute與服務硬化套用都還沒有批准。", "maintenanceGateLabel": "維護 閘門", "maintenanceGate": "Kali 完整套件升級、自動移除與重啟仍在資安審批佇列等待批准。必須先有維護窗口、快照、回復方案、事後健康複驗與人工批准,才能往主機更新前進。", "nextEvidenceLabel": "下一份要補的證據", - "nextEvidence": "將 Kali host:kali-readonly 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", + "nextEvidence": "將 資安觀測節點 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", "runwayLabel": "維護闖關路徑", "boundaryTitle": "只讀邊界", "boundaryIntro": "以下邊界由 `kali-integration-status.快照.json`與審批佇列投影而來,用來避免把可見狀態誤讀成執行授權。", @@ -13140,7 +13140,7 @@ "items": { "activeScan": { "title": "主動掃描", - "body": "對 Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a的主動掃描仍未批准,不能由 IwoooS 直接觸發。", + "body": "對 資安觀測節點、開發主機群 B / 開發主機群 A的主動掃描仍未批准,不能由 IwoooS 直接觸發。", "gate": "需要 S1.6 掃描範圍批准與後續 執行期閘門" }, "credentialedScan": { @@ -13177,7 +13177,7 @@ "items": { "scopeBoundary": { "title": "範圍邊界", - "body": "確認 host:kali-readonly、host:dev-b、host:dev-a的允許目標、排除範圍、掃描深度與速率限制。", + "body": "確認 資安觀測節點、開發主機群 B、開發主機群 A的允許目標、排除範圍、掃描深度與速率限制。", "evidence": "需要脫敏 掃描範圍批准;已收到=0、已接受=0" }, "ownerDecision": { @@ -14562,7 +14562,7 @@ }, "progressHoldMovementGates": { "title": "為什麼現在是 64%", - "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;Kali host:kali-readonly 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", + "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;資安觀測節點 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", "gateLabel": "移動門檻", "moveLabel": "什麼時候會動", "guardLabel": "不灌水原則", @@ -14601,7 +14601,7 @@ }, "headlineMovementAcceptanceGate": { "title": "64% 重估驗收紀錄", - "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與Kali host:kali-readonly 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", + "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與資安觀測節點 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", "gateLabel": "重估 閘門", "acceptanceLabel": "驗收條件", "guardLabel": "仍禁止", @@ -14609,7 +14609,7 @@ "summary": { "headline": { "label": "目前 重點", - "detail": "已從 58% 到 61%,並因 Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" + "detail": "已從 58% 到 61%,並因 資安觀測節點 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" }, "signals": { "label": "移動訊號", @@ -14656,14 +14656,14 @@ "guard": "只讀落地不是 批准、操作按鈕、執行路由或阻擋控制。" }, "kali112ReadOnlyProof": { - "title": "Kali host:kali-readonly 今日只讀證據", - "body": "2026-06-04 08:55 已完成 Kali host:kali-readonly SSH只讀快照、掃描ner 8080 /health、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", + "title": "資安觀測節點 今日只讀證據", + "body": "2026-06-04 08:55 已完成 資安觀測節點 SSH只讀快照、健康檢查端點、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", "acceptance": "已有 Gitea CD run 3623、正式站 desktop / mobile 驗證與維護闖關路徑;runtime 授權仍維持關閉。", "guard": "只讀證據不是 主動掃描、/execute、SSH 變更、更新、重啟或服務硬化授權。" }, "nextHeadlineReviewRecord": { "title": "本次 重點審查 紀錄", - "body": "本次重估只引用 AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據,說明為何目前調整到 64%。", + "body": "本次重估只引用 AwoooP 正式只讀落地與資安觀測節點 今日只讀證據,說明為何目前調整到 64%。", "acceptance": "審查 紀錄 必須引用具體 證據參照、守門 output、風險邊界與禁止動作清單;本次仍鎖 執行期。", "guard": "不因為新增看板、文件或清單就調整 重點。" } @@ -16265,7 +16265,7 @@ "ownerAction": "回覆 權威 endpoint 身分、查證方式與後續 負責人。", "guard": "不呼叫 admin API、不使用 權杖、不把 endpoint 判定當成 inventory 完成。" }, - "internal110AdjacentScope": { + "adjacentRuntimeScope": { "title": "gateway-adjacent 來源 範圍", "body": "判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入目前階段 範圍。", "ownerAction": "逐項標示 in 範圍 / out of 範圍 / legacy / external / inaccessible,並補脫敏來源證據。", @@ -16521,13 +16521,13 @@ }, "progressMovementSignals": { "title": "64% 進度移動訊號驗收條", - "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,Kali host:kali-readonly 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", + "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,資安觀測節點 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", "boundaryTitle": "進度移動驗收邊界", "boundaryIntro": "以下鍵值固定:這是 重點 移動條件的只讀驗收條,不是進度灌水、批准、掃描、修復、部署、主機變更或版本來源操作入口。", "summary": { "headline": { "label": "目前進度", - "detail": "已依正式只讀落地與Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架細節灌水。" + "detail": "已依正式只讀落地與資安觀測節點 今日只讀證據重估到 64%,不把框架細節灌水。" }, "signals": { "label": "移動訊號", @@ -16535,7 +16535,7 @@ }, "passed": { "label": "已通過", - "detail": "目前 2,AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據已成立。" + "detail": "目前 2,AwoooP 正式只讀落地與資安觀測節點 今日只讀證據已成立。" }, "runtime": { "label": "執行期閘門", @@ -16564,8 +16564,8 @@ "body": "AwoooP 需能只讀消費 快照、守門與證據參照,且不新增執行按鈕。" }, "kali112ReadOnly": { - "title": "Kali host:kali-readonly只讀證據", - "body": "Kali host:kali-readonly 已完成 2026-06-04 SSH只讀快照與掃描ner 8080 /health 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" + "title": "資安觀測節點只讀證據", + "body": "資安觀測節點 已完成 2026-06-04 SSH只讀快照與健康檢查端點 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" } } }, @@ -16601,7 +16601,7 @@ }, "hostScopeInventory": { "title": "主機與範圍盤點框架", - "body": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 放入主機覆蓋、動作閘門與證據就緒度。", + "body": "已把 資安觀測節點、開發主機群 B、開發主機群 A 放入主機覆蓋、動作閘門與證據就緒度。", "evidence": "具體產出:看得到主機納管範圍與禁止動作;尚未 SSH、更新主機、掃描或變更設定。" }, "sourceControlMigration": { @@ -16662,7 +16662,7 @@ }, "hostScopeEvidence": { "title": "主機範圍與證據欄位", - "delivered": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 納入只讀 host coverage與action 閘門。", + "delivered": "已把 資安觀測節點、開發主機群 B、開發主機群 A 納入只讀 host coverage與action 閘門。", "next": "等待脫敏主機證據、範圍確認與負責人回覆進入收件流程。", "blocked": "不可 SSH、更新主機、掃描、調整設定或收未脫敏主機資料。" }, @@ -16741,7 +16741,7 @@ }, "hostEvidencePending": { "title": "主機證據仍待收件", - "why": "Kali與開發主機雖已納入範圍,但沒有被授權執行 live 掃描或主機調校。", + "why": "資安觀測節點與開發主機雖已納入範圍,但沒有被授權執行 live 掃描或主機調校。", "unlock": "收到脫敏主機範圍、負責人回覆、變更風險與回復 條件後,才討論 執行期閘門。" }, "runtimeGateClosed": { @@ -16798,7 +16798,7 @@ "boundary": "不得自動建立 專案庫、同步 參照、修改 工作流程 / 機密、切 主要來源或停用 Gitea。" }, "hosts": { - "title": "Kali與開發主機", + "title": "資安觀測節點與開發主機", "current": "可套用 host coverage、action 閘門、證據就緒度與三軸進度。", "next": "等待人工批准與主機範圍證據後,才討論 live 掃描或調校。", "boundary": "不得自動 SSH、更新主機、掃描、變更設定或收未脫敏資料。" @@ -16877,7 +16877,7 @@ }, "hostCoverage": { "title": "主機覆蓋波次", - "allowed": "Kali、host:dev-b、host:dev-a只顯示 coverage、action 閘門與證據 readines。", + "allowed": "Kali、開發主機群 B、開發主機群 A只顯示 coverage、action 閘門與證據 readines。", "beforeRuntime": "需要明確主機 範圍、maintenance window、憑證 handling、回復與人工 執行期閘門。", "forbidden": "不得自動 SSH、更新主機、掃描、調校、收未脫敏資料或執行 Kali /execute。" }, @@ -16961,7 +16961,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口與回復可用", - "requiredEvidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "requiredEvidence": "Kali、開發主機群 B、開發主機群 A 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "acceptanceSignal": "主機 負責人 明確接受後,才可建立後續 執行期閘門候選。", "stillClosed": "目前不得 SSH、掃描、更新主機、調校設定或執行 Kali /execute。" }, @@ -17027,7 +17027,7 @@ }, "hostSafetyHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-b、host:dev-a 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", + "why": "Kali、開發主機群 B、開發主機群 A 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", "next": "等待主機 負責人 明確接受後,才可列入後續 執行期閘門候選。", "blocked": "不得 SSH、更新主機、掃描、調校或執行 Kali /execute。" }, @@ -17099,7 +17099,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口接線", - "evidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "evidence": "Kali、開發主機群 B、開發主機群 A 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "handoff": "先只顯示主機證據缺口與等待窗口,不開 live 掃描或SSH path。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17170,7 +17170,7 @@ }, "hostWindow": { "title": "主機安全窗口預檢", - "checkPoint": "確認 Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", + "checkPoint": "確認 Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", "passSignal": "只可標示 host 證據 缺口 已可讀,不能建立 live action。", "failRoute": "缺窗口、憑證邊界或回復 負責人 時維持主機安全暫停。", "stillClosed": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17244,7 +17244,7 @@ }, "hostWindowHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", + "why": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", "next": "等待主機 負責人 以 僅中繼資料形式補齊窗口與回復邊界。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17321,7 +17321,7 @@ }, "hostWindow": { "title": "主機窗口補齊", - "owner": "Kali、host:dev-b、host:dev-a 對應主機 負責人。", + "owner": "Kali、開發主機群 B、開發主機群 A 對應主機 負責人。", "required": "範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只回收 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17396,7 +17396,7 @@ }, "hostReady": { "title": "主機重試門檻", - "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", + "ready": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", "retry": "只可標示 host safety window 重試候選,等待人工再檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17462,7 +17462,7 @@ }, "hostWindowPause": { "title": "主機安全暫停", - "decision": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", + "decision": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", "next": "等待主機 負責人 補 僅中繼資料host safety window,再回到重試門檻。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17546,7 +17546,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口包", - "required": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", + "required": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只交接 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17630,7 +17630,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口預檢", - "requirement": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", + "requirement": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", "pass": "只可標示 host safety window readable,不建立 live action。", "fail": "缺窗口、憑證邊界或回復 負責人 時維持主機暫停。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17795,7 +17795,7 @@ }, "hostWindowEvidence": { "title": "主機窗口補證回收", - "owner": "主機維運 負責人 補 Kali、host:dev-b、host:dev-a的窗口與回復責任。", + "owner": "主機維運 負責人 補 Kali、開發主機群 B、開發主機群 A的窗口與回復責任。", "required": "範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明。", "recovery": "只收 僅中繼資料host window,等待主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17876,7 +17876,7 @@ }, "hostWindowGate": { "title": "主機窗口重試門檻", - "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", + "ready": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", "retry": "只以 僅中繼資料host window 回到主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17972,8 +17972,8 @@ }, "hosts": { "title": "主機與工具", - "state": "host:kali-readonly / host:dev-a / host:dev-b", - "detail": "Kali host:kali-readonly與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", + "state": "資安觀測節點 / 開發主機群 A / 開發主機群 B", + "detail": "資安觀測節點與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", "evidence": "主機與工具證據鏈已前台化。", "next": "補維護窗口、host 負責人決策、脫敏主機 證據。", "locked": "不 SSH 變更、不更新主機、不執行 Kali /execute。" @@ -18823,7 +18823,7 @@ "fastProgress": { "eyebrow": "快速進度回報", "title": "目前做了什麼,一眼看懂", - "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、Kali host:kali-readonly 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", + "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、資安觀測節點 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", "nextGate": { "title": "下一個可推動進度的 閘門", "body": "先收到並驗收 S4.9 Gitea 清冊負責人回覆。這件事完成前,64%不應假性前進;完成後才檢查是否能打開審查者 / 執行期的下一段人工流程。" @@ -18834,7 +18834,7 @@ "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安訊號進入 AI 自動化閉環,而不是只停在文件或訊息轉發。" }, "kali112": { - "title": "Kali host:kali-readonly 已納入資安網", + "title": "資安觀測節點 已納入資安網", "body": "2026-06-04 08:55 已用既有 SSH key 完成只讀快照:系統 Kali Rolling、核心 6.16.8、根目錄磁碟使用 26%、掃描服務 8080 /health 健康、待更新套件 1994、失敗服務單元 networking.service、服務硬化 0/4。沒有啟動掃描、/execute、主機更新、調校或重啟。" }, "allProducts": { @@ -19205,7 +19205,7 @@ } }, "socSiemKaliWazuhIntegration": { - "eyebrow": "SOC / SIEM / Kali 112 整合控制", + "eyebrow": "SOC / SIEM / 資安觀測節點 整合控制", "title": "把 Wazuh、Kali、告警鏈與主流資安機制接成同一條證據線", "subtitle": "這張卡把 NIST CSF、CIS Controls、CISA KEV、OWASP ASVS、Wazuh、Suricata 與 Kali tooling 映射到 IwoooS 控制面;目前只顯示框架、訊號源、控制候選與 0/false 邊界,不呼叫 Wazuh、不呼叫 Kali、不送 Telegram、不建立 SOAR case、不啟動掃描或封鎖。", "checkLabel": "檢核", @@ -19240,7 +19240,7 @@ "body": "manager、agent、FIM、rule、decoder 與 event refs 只能用脫敏參照進入 IwoooS,不接 raw payload。" }, "kali112": { - "title": "Kali 112 維持只讀", + "title": "資安觀測節點 維持只讀", "body": "先接 health、工具版本、scope 與 normalized finding envelope;active scan 與 /execute 仍需獨立批准。" }, "alertChain": { diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 2459d621..dc711f17 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -153,7 +153,7 @@ }, "topology": { "hosts": "主機層", - "hostsDetail": "host:public-gateway / host:dev-a / host:kali-readonly / host:k3s-control-a / host:k3s-control-b / host:observability-a 等主機進入佈局視野。", + "hostsDetail": "公開閘道節點 / 開發主機群 A / 資安觀測節點 / K3s 控制節點 A / K3s 控制節點 B / 觀測控制節點 等主機進入佈局視野。", "products": "專案與網站", "productsDetail": "前台、後台與相鄰專案使用同一組治理視角。", "services": "服務健康", @@ -734,7 +734,7 @@ }, "routing": { "module": "AI Router / Agent 分工", - "owns": "GCP-A、GCP-B、host:dev-a、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" + "owns": "GCP-A、GCP-B、開發主機群 A、Gemini fallback與Hermes/OpenClaw/ElephantAlpha 分工" }, "execution": { "module": "PlayBook / MCP / Ansible", @@ -1062,13 +1062,13 @@ } }, "runtimeReadbackFixtureApproval": { - "title": "P2-112 runtime readback fixture 批准包", + "title": "P2 runtime readback fixture 批准包", "source": "{generated} · {current} → {next}", - "priorRuntimeTitle": "P2-110 實作審查承接", + "priorRuntimeTitle": "P2 runtime 實作審查承接", "priorDeliveryTitle": "P2-111 實發批准承接", "truthTitle": "fixture 批准真相", "metrics": { - "overall": "P2-112 進度", + "overall": "P2 runtime 進度", "cards": "fixture 卡", "contracts": "adapter contract", "checks": "verifier fixture", @@ -2718,8 +2718,8 @@ "checkC1Desc": "repair_lock 防止重複執行", "checkC2Label": "反饋閉環 (Success Rate)", "checkC2Desc": "Success Rate Update → RAG 信心自更新", - "checkC3Label": "執行路徑明確化 (host:observability-a)", - "checkC3Desc": "ansible:// 強制路由至 host:observability-a 控制節點", + "checkC3Label": "執行路徑明確化 (觀測控制節點)", + "checkC3Desc": "ansible:// 強制路由至 觀測控制節點", "agentRoleOC": "診斷 & RAG 匹配", "agentRoleNemo": "決策 & 執行下令", "todayMatches": "本日匹配", @@ -5916,12 +5916,12 @@ } }, "runtimeReadbackImplementationReview": { - "title": "P2-110 runtime readback 實作審查", + "title": "P2 runtime readback 實作審查", "source": "{generated} · {current} → {next}", "truthTitle": "實作審查真相", "priorTitle": "P2-109 批准包承接", "metrics": { - "overall": "P2-110 進度", + "overall": "P2 runtime 進度", "cards": "實作卡", "checks": "無寫入 verifier", "blockers": "阻塞項", @@ -6081,13 +6081,13 @@ } }, "runtimeReadbackFixtureApproval": { - "title": "P2-112 runtime readback fixture 批准包", + "title": "P2 runtime readback fixture 批准包", "source": "{generated} · {current} → {next}", - "priorRuntimeTitle": "P2-110 實作審查承接", + "priorRuntimeTitle": "P2 runtime 實作審查承接", "priorDeliveryTitle": "P2-111 實發批准承接", "truthTitle": "fixture 批准真相", "metrics": { - "overall": "P2-112 進度", + "overall": "P2 runtime 進度", "cards": "fixture 卡", "contracts": "adapter contract", "checks": "verifier fixture", @@ -6197,7 +6197,7 @@ "liveWrites": "live writes" }, "flags": { - "fixtureLoaded": "P2-112 loaded={value}", + "fixtureLoaded": "P2 runtime loaded={value}", "gateReady": "gate ready={value}", "failureReceiptReady": "failure receipt ready={value}", "reviewerReady": "reviewer preview={value}", @@ -9507,7 +9507,7 @@ }, "aiRouteStatus": { "title": "AI Provider路由", - "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、host:dev-a、Gemini的接手順序", + "subtitle": "目前策略與健康檢查,顯示 GCP-A、GCP-B、開發主機群 A、Gemini的接手順序", "selected": "使用中:{provider}", "selectedEmpty": "使用中:--", "empty": "尚未取得 AI provider route 狀態。", @@ -9880,7 +9880,7 @@ "securityEntry": "資安入口", "securityEntryDetail": "IwoooS仍是資訊安全的只讀入口與態勢鏡像。", "hostCoverage": "主機覆蓋", - "hostCoverageDetail": "Kali host:kali-readonly、開發主機 host:dev-b、開發主機 host:dev-a 已納入只觀察視野。", + "hostCoverageDetail": "資安觀測節點、開發主機群 B、開發主機群 A 已納入只觀察視野。", "policyMutations": "租戶政策變更", "policyMutationsDetail": "目前為 0;負責人回覆與執行期閘門前不得改政策。" }, @@ -10430,7 +10430,7 @@ "activeRuntimeGates": "主動執行閘門", "activeRuntimeGatesDetail": "任何執行期閘門仍需獨立批准、回復方案與事後檢查證據。", "headline": "整體資安網", - "headlineDetail": "已因 AwoooP 正式只讀落地證據與Kali host:kali-readonly 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" + "headlineDetail": "已因 AwoooP 正式只讀落地證據與資安觀測節點 今日只讀驗證重估到 64%;下一次仍要靠負責人回覆、執行期閘門或GitHub 主要來源證據。" }, "checks": { "s49OwnerAttestation": { @@ -11342,7 +11342,7 @@ }, "assetMesh": { "title": "資產與主機已納管", - "body": "9 類產品 / 網站 / 工具面與host:kali-readonly、host:dev-a、host:dev-b 三台主機已放入同一個只讀資安網。" + "body": "9 類產品 / 網站 / 工具面與資安觀測節點、開發主機群 A、開發主機群 B 三台主機已放入同一個只讀資安網。" }, "nextBlocker": { "title": "待補關鍵證據", @@ -11397,8 +11397,8 @@ }, "hostTools": { "label": "主機工具", - "title": "Kali與工具鏈", - "body": "看 host:kali-readonly / host:dev-a / host:dev-b與監控、MCP、Ansible、KM的只讀鏈路。" + "title": "資安觀測工具鏈", + "body": "看 資安觀測節點 / 開發主機群 A / 開發主機群 B與監控、MCP、Ansible、KM的只讀鏈路。" }, "sourceControl": { "label": "版本來源", @@ -11697,8 +11697,8 @@ "body": "AwoooI、AwoooP、IwoooS、公開網站與任務媒合產品 先進入同一張只讀視圖。" }, "hosts": { - "title": "Kali與開發主機", - "body": "host:kali-readonly、host:dev-a、host:dev-b只呈現觀測與證據窗口,不直接連線執行。" + "title": "資安觀測節點與開發主機", + "body": "資安觀測節點、開發主機群 A、開發主機群 B只呈現觀測與證據窗口,不直接連線執行。" }, "sourceControl": { "title": "GitHub / Gitea", @@ -11750,14 +11750,14 @@ }, "sourceToHost": { "title": "版本來源到主機", - "evidence": "GitHub / Gitea、Kali、host:dev-a / host:dev-b 已串成只讀路徑。", + "evidence": "GitHub / Gitea、Kali、開發主機群 A / 開發主機群 B 已串成只讀路徑。", "risk": "主機窗口與版本來源決策尚未完成。", "next": "收斂負責人窗口與決策紀錄。", "locked": "不改分支參照、工作流程或主機設定。" }, "kaliToDev": { - "title": "Kali 到開發主機", - "evidence": "host:kali-readonly、host:dev-a、host:dev-b 已可在同一路徑中理解。", + "title": "資安觀測節點到開發主機", + "evidence": "資安觀測節點、開發主機群 A、開發主機群 B 已可在同一路徑中理解。", "risk": "未批准前不能把關係圖當掃描範圍。", "next": "等待掃描範圍與維護窗口批准。", "locked": "scan_authorized=false。" @@ -11830,10 +11830,10 @@ "body": "GitHub / Gitea 是版本來源關鍵節點;目前只顯示 S4.9 負責人回覆待補與決策紀錄缺口,不執行分支參照或工作流程變更。" }, "kali": { - "body": "Kali host:kali-readonly 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" + "body": "資安觀測節點 已列為資安主機節點;此區僅呈現它與版本來源、開發主機、證據鏈的關係,不代表已授權掃描。" }, "devHosts": { - "body": "host:dev-a與host:dev-b 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" + "body": "開發主機群 A與開發主機群 B 以開發主機群呈現,等主機維護窗口與負責人決策紀錄完整後才能進入執行期。" }, "monitoring": { "body": "監控、MCP、Ansible、KM與告警資料先進入證據線,讓 IwoooS 能解釋訊號來源與新鮮度。" @@ -11857,8 +11857,8 @@ }, "topology": { "title": "主機拓樸", - "mapTitle": "host:kali-readonly / host:dev-a / host:dev-b只讀觀測主機網", - "detail": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", + "mapTitle": "資安觀測節點 / 開發主機群 A / 開發主機群 B只讀觀測主機網", + "detail": "將 資安觀測節點、開發主機群 A / 開發主機群 B、監控工具與AwoooP 真相鏈整合為單一拓樸視角。", "evidence": "目前只呈現觀測窗口、證據位置與人工閘門,沒有執行 SSH、掃描或主機設定變更。", "next": "等執行期閘門與掃描範圍批准後,才把只讀證據轉入受控探測。", "locked": "host_change_authorized=false,scan_authorized=false。" @@ -11888,7 +11888,7 @@ "title": "版本來源" }, "kali": { - "title": "Kali host:kali-readonly" + "title": "資安觀測節點" }, "devHosts": { "title": "開發主機" @@ -11914,7 +11914,7 @@ }, "hostFabric": { "title": "主機拓樸面", - "body": "host:kali-readonly、host:dev-a、host:dev-b 維持只讀觀測顯示。" + "body": "資安觀測節點、開發主機群 A、開發主機群 B 維持只讀觀測顯示。" }, "evidenceOps": { "title": "證據營運面", @@ -11986,9 +11986,9 @@ }, "hostWindow": { "short": "主機窗口", - "title": "Kali host:kali-readonly與開發主機 host:dev-a / host:dev-b的維護窗口", + "title": "資安觀測節點與開發主機群 A / 開發主機群 B的維護窗口", "body": "三台主機已進入資安架構圖,但目前是只讀納管,不代表已允許更新、調校、掃描或SSH 操作。", - "evidence": "host:kali-readonly / host:dev-a / host:dev-b 在拓樸圖、路徑探索器與主機證據鏈中可見。", + "evidence": "資安觀測節點 / 開發主機群 A / 開發主機群 B 在拓樸圖、路徑探索器與主機證據鏈中可見。", "next": "等待維護窗口、範圍、負責人與回復路徑確認。", "blocked": "host_change_authorized=false;scan_authorized=false。" }, @@ -12027,11 +12027,11 @@ "body": "先列入只讀驗證與控管範圍,不啟用 agent 執行、claim、submit 或 bounty 撥付。" }, "kali": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "body": "列入資安主機,但目前只讀顯示。" }, "devHosts": { - "title": "開發主機 host:dev-a / host:dev-b", + "title": "開發主機群 A / 開發主機群 B", "body": "等待維護窗口與負責人決策。" }, "monitoring": { @@ -12133,12 +12133,12 @@ "caption": "新專案只讀納管" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "caption": "只讀快照已接入" }, "devHosts": { "title": "開發主機", - "caption": "host:dev-b / host:dev-a 納入視野" + "caption": "開發主機群 B / 開發主機群 A 納入視野" }, "githubPrimary": { "title": "GitHub 主來源", @@ -12173,7 +12173,7 @@ "drilldown": { "title": "展開證據 / 主機 / 動作下鑽", "evidence": "證據:快照、守門、LOGBOOK、審批佇列保留在下方可展開區。", - "hosts": "主機:Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a都以只讀納管,不直接 SSH或掃描。", + "hosts": "主機:資安觀測節點、開發主機群 B / 開發主機群 A都以只讀納管,不直接 SSH或掃描。", "actions": "動作:所有高風險動作仍需人工決策,頁面不提供執行按鈕。" } }, @@ -12204,10 +12204,10 @@ }, "devHosts": { "title": "開發主機", - "state": "host:dev-a / host:dev-b" + "state": "開發主機群 A / 開發主機群 B" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "state": "待維護" }, "runtimeGate": { @@ -12256,12 +12256,12 @@ "caption": "新專案先只讀納管" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "caption": "維護窗口待人工確認" }, "devHosts": { "title": "開發主機", - "caption": "host:dev-a / host:dev-b 納入範圍" + "caption": "開發主機群 A / 開發主機群 B 納入範圍" }, "githubPrimary": { "title": "GitHub 主來源", @@ -12360,7 +12360,7 @@ }, "hostKali": { "title": "主機與Kali邊界", - "summary": "將 host:kali-readonly / host:dev-a / host:dev-b的 僅觀察、收件與人工決策證據收在進階區。" + "summary": "將 資安觀測節點 / 開發主機群 A / 開發主機群 B的 僅觀察、收件與人工決策證據收在進階區。" } }, "metrics": { @@ -12431,8 +12431,8 @@ "body": "只顯示主要來源就緒度、分支參照真相、工作流程 / 機密名稱證據。" }, "hosts": { - "title": "Kali與開發主機", - "body": "host:kali-readonly / host:dev-a / host:dev-b只進 僅觀察 coverage。" + "title": "資安觀測節點與開發主機", + "body": "資安觀測節點 / 開發主機群 A / 開發主機群 B只進 僅觀察 coverage。" }, "toolsMonitoring": { "title": "監控、工具與自動化", @@ -12455,7 +12455,7 @@ "globalSecurityMeshMatrix": { "eyebrow": "全域資安納管矩陣", "title": "所有產品、主機、工具放在同一張表", - "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、任務媒合產品、代理賞金協議、Kali host:kali-readonly、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", + "subtitle": "將 AwoooI、AwoooP、IwoooS、公開網站群、任務媒合產品、代理賞金協議、資安觀測節點、開發主機與GitHub / Gitea 版本來源放到同一個只讀矩陣,先呈現納管範圍,再決定哪一段要收證或開人工閘門。", "coverageLabel": "覆蓋", "evidenceLabel": "證據", "runtimeLabel": "執行", @@ -12522,7 +12522,7 @@ "next": "先完成 任務媒合產品 六項只讀收件。" }, "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "layer": "安全主機、掃描能力、維護窗口與主機狀態。", "coverage": "只讀快照", "evidence": "待維護窗口", @@ -12530,7 +12530,7 @@ "next": "維持觀測,不執行更新、掃描或/execute。" }, "devHosts": { - "title": "開發主機 host:dev-a / host:dev-b", + "title": "開發主機群 A / 開發主機群 B", "layer": "兩台開發主機的資安範圍、證據收件與人工判定。", "coverage": "已納入", "evidence": "待補主機證據", @@ -12558,7 +12558,7 @@ "hostToolEvidenceChain": { "eyebrow": "主機與工具證據鏈", "title": "Kali、開發主機、監控工具一次看清楚", - "subtitle": "將 Kali host:kali-readonly、開發主機 host:dev-a / host:dev-b、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", + "subtitle": "將 資安觀測節點、開發主機群 A / 開發主機群 B、Sentry / SigNoz、MCP、自建 MCP、Ansible、KM、GitHub / Gitea 放在同一條只讀證據鏈。這一層只回答「有沒有納入、證據在哪、下一關是誰」,不執行掃描或主機變更。", "flowTitle": "證據鏈順序", "evidenceLabel": "證據", "nextLabel": "下一步", @@ -12567,7 +12567,7 @@ "summary": { "hosts": { "label": "主機", - "detail": "host:kali-readonly、host:dev-a、host:dev-b 三台進入視野。" + "detail": "資安觀測節點、開發主機群 A、開發主機群 B 三台進入視野。" }, "toolLanes": { "label": "工具線", @@ -12606,19 +12606,19 @@ }, "items": { "kali112": { - "title": "Kali host:kali-readonly", + "title": "資安觀測節點", "scope": "安全主機已納入 IwoooS;目前只呈現快照、維護窗口與待處理項。", "evidence": "只讀 快照、1994 package 佇列、1 個 systemd 異常、/execute=false。", "next": "等維護窗口與人工授權,不更新、不重啟、不掃描。" }, "dev111": { - "title": "開發主機 host:dev-a", + "title": "開發主機群 A", "scope": "本機備援、開發服務與AI fallback 相關資產先納入觀測。", "evidence": "目前只收主機角色、服務範圍、負責人決策與脫敏證據。", "next": "補負責人證據;不做 SSH 變更或服務調校。" }, "dev168": { - "title": "開發主機 host:dev-b", + "title": "開發主機群 B", "scope": "開發主機與專案工作區納入資安範圍。", "evidence": "目前只收主機中繼資料、專案對應與人工判定。", "next": "補主機證據與責任邊界;不開自動修復。" @@ -12764,9 +12764,9 @@ "body": "Gitea 到 GitHub的長期方向已確認,但 參照、工作流程、機密 name與回復 ADR仍需負責人回覆。" }, "kali": { - "title": "Kali host:kali-readonly 網格", + "title": "資安觀測節點 網格", "state": "只觀測", - "body": "Kali host:kali-readonly 已在資安網範圍中,host:dev-a / host:dev-b 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" + "body": "資安觀測節點 已在資安網範圍中,開發主機群 A / 開發主機群 B 也納入 僅觀察。主動掃描與/execute仍維持封鎖候選。" }, "governance": { "title": "審批邊界", @@ -12968,7 +12968,7 @@ }, "kaliNotCalled": { "title": "前端索引不呼叫 Kali", - "body": "Kali host:kali-readonly 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" + "body": "資安觀測節點 維持 僅觀察;任何 主動掃描或/execute都必須走人工批准與後續 閘門。" } } }, @@ -13041,7 +13041,7 @@ }, "kaliScanScope": { "title": "Kali 掃描範圍", - "body": "Kali host:kali-readonly、host:dev-a、host:dev-b 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", + "body": "資安觀測節點、開發主機群 A、開發主機群 B 目前仍是僅觀察;主動掃描與/execute仍需獨立批准。", "unlock": "掃描範圍批准 + 後續追蹤 閘門" }, "followupRuntimeGate": { @@ -13058,29 +13058,29 @@ "items": { "kali112": { "title": "Kali 資安主機", - "body": "host:kali-readonly 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", + "body": "資安觀測節點 是資安網的 Kali 節點,已在姿態與證據參照中作為僅觀察整合面。", "state": "已納入視野;主動掃描、/execute、主機更新仍需獨立批准" }, "dev168": { - "title": "開發主機 host:dev-b", - "body": "host:dev-b 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", + "title": "開發主機群 B", + "body": "開發主機群 B 納入 IwoooS的僅觀察開發主機覆蓋,用於後續掃描範圍批准與發現關聯。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" }, "dev111": { - "title": "開發主機 host:dev-a", - "body": "host:dev-a 納入 IwoooS的僅觀察開發主機覆蓋,與 host:dev-b 一起維持低摩擦分階段收斂。", + "title": "開發主機群 A", + "body": "開發主機群 A 納入 IwoooS的僅觀察開發主機覆蓋,與 開發主機群 B 一起維持低摩擦分階段收斂。", "state": "範圍已宣告;尚未批准憑證掃描或執行期控制" } } }, "kaliMaintenanceReadiness": { - "eyebrow": "Kali host:kali-readonly 維護就緒度", - "title": "Kali host:kali-readonly 今天已重新只讀驗證,更新與重啟仍在維護閘門", + "eyebrow": "資安觀測節點 維護就緒度", + "title": "資安觀測節點 今天已重新只讀驗證,更新與重啟仍在維護閘門", "subtitle": "這個看板把 2026-06-04 08:55的只讀 SSH 快照轉成操作可讀狀態:掃描服務與8080 /health 健康檢查正常,node-exporter與wg-easy仍在運作;但完整套件升級、自動移除、重啟、掃描、/execute與服務硬化套用都還沒有批准。", "maintenanceGateLabel": "維護 閘門", "maintenanceGate": "Kali 完整套件升級、自動移除與重啟仍在資安審批佇列等待批准。必須先有維護窗口、快照、回復方案、事後健康複驗與人工批准,才能往主機更新前進。", "nextEvidenceLabel": "下一份要補的證據", - "nextEvidence": "將 Kali host:kali-readonly 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", + "nextEvidence": "將 資安觀測節點 維護窗口批准案的維護窗口、回復負責人、服務驗證清單與失敗處理路徑補齊。補齊前 IwoooS只顯示就緒度,不提供任何更新或重啟入口。", "runwayLabel": "維護闖關路徑", "boundaryTitle": "只讀邊界", "boundaryIntro": "以下邊界由 `kali-integration-status.快照.json`與審批佇列投影而來,用來避免把可見狀態誤讀成執行授權。", @@ -13140,7 +13140,7 @@ "items": { "activeScan": { "title": "主動掃描", - "body": "對 Kali host:kali-readonly、開發主機 host:dev-b / host:dev-a的主動掃描仍未批准,不能由 IwoooS 直接觸發。", + "body": "對 資安觀測節點、開發主機群 B / 開發主機群 A的主動掃描仍未批准,不能由 IwoooS 直接觸發。", "gate": "需要 S1.6 掃描範圍批准與後續 執行期閘門" }, "credentialedScan": { @@ -13177,7 +13177,7 @@ "items": { "scopeBoundary": { "title": "範圍邊界", - "body": "確認 host:kali-readonly、host:dev-b、host:dev-a的允許目標、排除範圍、掃描深度與速率限制。", + "body": "確認 資安觀測節點、開發主機群 B、開發主機群 A的允許目標、排除範圍、掃描深度與速率限制。", "evidence": "需要脫敏 掃描範圍批准;已收到=0、已接受=0" }, "ownerDecision": { @@ -14562,7 +14562,7 @@ }, "progressHoldMovementGates": { "title": "為什麼現在是 64%", - "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;Kali host:kali-readonly 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", + "subtitle": "AwoooP 正式只讀落地 先把重點從 58% 推到 61%;資安觀測節點 今日正式只讀驗證後,目前保守重估到 64%。其餘四個高層閘門仍是 0 / false,框架、文件與前端可見性不會被灌水成 執行期 執行。", "gateLabel": "移動門檻", "moveLabel": "什麼時候會動", "guardLabel": "不灌水原則", @@ -14601,7 +14601,7 @@ }, "headlineMovementAcceptanceGate": { "title": "64% 重估驗收紀錄", - "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與Kali host:kali-readonly 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", + "subtitle": "六個高層閘門 中,AwoooP 正式環境落地與資安觀測節點 今日只讀證據 已有正式部署與只讀消費證據,因此本次承認兩項證據,重點目前保守重估到 64%;其餘 負責人回覆、脫敏匯入、執行期閘門與GitHub 主要來源仍是 0 / false。", "gateLabel": "重估 閘門", "acceptanceLabel": "驗收條件", "guardLabel": "仍禁止", @@ -14609,7 +14609,7 @@ "summary": { "headline": { "label": "目前 重點", - "detail": "已從 58% 到 61%,並因 Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" + "detail": "已從 58% 到 61%,並因 資安觀測節點 今日只讀證據重估到 64%,不把框架層堆疊灌水成落地執行。" }, "signals": { "label": "移動訊號", @@ -14656,14 +14656,14 @@ "guard": "只讀落地不是 批准、操作按鈕、執行路由或阻擋控制。" }, "kali112ReadOnlyProof": { - "title": "Kali host:kali-readonly 今日只讀證據", - "body": "2026-06-04 08:55 已完成 Kali host:kali-readonly SSH只讀快照、掃描ner 8080 /health、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", + "title": "資安觀測節點 今日只讀證據", + "body": "2026-06-04 08:55 已完成 資安觀測節點 SSH只讀快照、健康檢查端點、待更新套件 1994、networking.service與服務硬化 0/4的正式站可見證據。", "acceptance": "已有 Gitea CD run 3623、正式站 desktop / mobile 驗證與維護闖關路徑;runtime 授權仍維持關閉。", "guard": "只讀證據不是 主動掃描、/execute、SSH 變更、更新、重啟或服務硬化授權。" }, "nextHeadlineReviewRecord": { "title": "本次 重點審查 紀錄", - "body": "本次重估只引用 AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據,說明為何目前調整到 64%。", + "body": "本次重估只引用 AwoooP 正式只讀落地與資安觀測節點 今日只讀證據,說明為何目前調整到 64%。", "acceptance": "審查 紀錄 必須引用具體 證據參照、守門 output、風險邊界與禁止動作清單;本次仍鎖 執行期。", "guard": "不因為新增看板、文件或清單就調整 重點。" } @@ -16265,7 +16265,7 @@ "ownerAction": "回覆 權威 endpoint 身分、查證方式與後續 負責人。", "guard": "不呼叫 admin API、不使用 權杖、不把 endpoint 判定當成 inventory 完成。" }, - "internal110AdjacentScope": { + "adjacentRuntimeScope": { "title": "gateway-adjacent 來源 範圍", "body": "判定 `bitan-pharmacy`、`root/momo-pro-system`、`tsenyang-website`、`wooo/wooo-infra-config` 是否納入目前階段 範圍。", "ownerAction": "逐項標示 in 範圍 / out of 範圍 / legacy / external / inaccessible,並補脫敏來源證據。", @@ -16521,13 +16521,13 @@ }, "progressMovementSignals": { "title": "64% 進度移動訊號驗收條", - "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,Kali host:kali-readonly 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", + "subtitle": "將真正會讓整體資安網 重點 往前的訊號拉到 IwoooS:AwoooP 落地證據已驗證為 1,讓整體先從 58% 重估到 61%,資安觀測節點 今日只讀驗證再把目前進度重估到 64%;負責人回覆、脫敏證據匯入、執行期閘門與GitHub 主要來源仍是 0或false。", "boundaryTitle": "進度移動驗收邊界", "boundaryIntro": "以下鍵值固定:這是 重點 移動條件的只讀驗收條,不是進度灌水、批准、掃描、修復、部署、主機變更或版本來源操作入口。", "summary": { "headline": { "label": "目前進度", - "detail": "已依正式只讀落地與Kali host:kali-readonly 今日只讀證據重估到 64%,不把框架細節灌水。" + "detail": "已依正式只讀落地與資安觀測節點 今日只讀證據重估到 64%,不把框架細節灌水。" }, "signals": { "label": "移動訊號", @@ -16535,7 +16535,7 @@ }, "passed": { "label": "已通過", - "detail": "目前 2,AwoooP 正式只讀落地與Kali host:kali-readonly 今日只讀證據已成立。" + "detail": "目前 2,AwoooP 正式只讀落地與資安觀測節點 今日只讀證據已成立。" }, "runtime": { "label": "執行期閘門", @@ -16564,8 +16564,8 @@ "body": "AwoooP 需能只讀消費 快照、守門與證據參照,且不新增執行按鈕。" }, "kali112ReadOnly": { - "title": "Kali host:kali-readonly只讀證據", - "body": "Kali host:kali-readonly 已完成 2026-06-04 SSH只讀快照與掃描ner 8080 /health 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" + "title": "資安觀測節點只讀證據", + "body": "資安觀測節點 已完成 2026-06-04 SSH只讀快照與健康檢查端點 驗證;這只代表納管可見,不代表掃描、更新、重啟或服務硬化授權。" } } }, @@ -16601,7 +16601,7 @@ }, "hostScopeInventory": { "title": "主機與範圍盤點框架", - "body": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 放入主機覆蓋、動作閘門與證據就緒度。", + "body": "已把 資安觀測節點、開發主機群 B、開發主機群 A 放入主機覆蓋、動作閘門與證據就緒度。", "evidence": "具體產出:看得到主機納管範圍與禁止動作;尚未 SSH、更新主機、掃描或變更設定。" }, "sourceControlMigration": { @@ -16662,7 +16662,7 @@ }, "hostScopeEvidence": { "title": "主機範圍與證據欄位", - "delivered": "已把 Kali host:kali-readonly、開發主機 host:dev-b、host:dev-a 納入只讀 host coverage與action 閘門。", + "delivered": "已把 資安觀測節點、開發主機群 B、開發主機群 A 納入只讀 host coverage與action 閘門。", "next": "等待脫敏主機證據、範圍確認與負責人回覆進入收件流程。", "blocked": "不可 SSH、更新主機、掃描、調整設定或收未脫敏主機資料。" }, @@ -16741,7 +16741,7 @@ }, "hostEvidencePending": { "title": "主機證據仍待收件", - "why": "Kali與開發主機雖已納入範圍,但沒有被授權執行 live 掃描或主機調校。", + "why": "資安觀測節點與開發主機雖已納入範圍,但沒有被授權執行 live 掃描或主機調校。", "unlock": "收到脫敏主機範圍、負責人回覆、變更風險與回復 條件後,才討論 執行期閘門。" }, "runtimeGateClosed": { @@ -16798,7 +16798,7 @@ "boundary": "不得自動建立 專案庫、同步 參照、修改 工作流程 / 機密、切 主要來源或停用 Gitea。" }, "hosts": { - "title": "Kali與開發主機", + "title": "資安觀測節點與開發主機", "current": "可套用 host coverage、action 閘門、證據就緒度與三軸進度。", "next": "等待人工批准與主機範圍證據後,才討論 live 掃描或調校。", "boundary": "不得自動 SSH、更新主機、掃描、變更設定或收未脫敏資料。" @@ -16877,7 +16877,7 @@ }, "hostCoverage": { "title": "主機覆蓋波次", - "allowed": "Kali、host:dev-b、host:dev-a只顯示 coverage、action 閘門與證據 readines。", + "allowed": "Kali、開發主機群 B、開發主機群 A只顯示 coverage、action 閘門與證據 readines。", "beforeRuntime": "需要明確主機 範圍、maintenance window、憑證 handling、回復與人工 執行期閘門。", "forbidden": "不得自動 SSH、更新主機、掃描、調校、收未脫敏資料或執行 Kali /execute。" }, @@ -16961,7 +16961,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口與回復可用", - "requiredEvidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "requiredEvidence": "Kali、開發主機群 B、開發主機群 A 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "acceptanceSignal": "主機 負責人 明確接受後,才可建立後續 執行期閘門候選。", "stillClosed": "目前不得 SSH、掃描、更新主機、調校設定或執行 Kali /execute。" }, @@ -17027,7 +17027,7 @@ }, "hostSafetyHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-b、host:dev-a 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", + "why": "Kali、開發主機群 B、開發主機群 A 尚缺 範圍、maintenance window、憑證 handling或回復 負責人。", "next": "等待主機 負責人 明確接受後,才可列入後續 執行期閘門候選。", "blocked": "不得 SSH、更新主機、掃描、調校或執行 Kali /execute。" }, @@ -17099,7 +17099,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口接線", - "evidence": "Kali、host:dev-b、host:dev-a 需要 範圍、maintenance window、憑證 handling與回復 負責人。", + "evidence": "Kali、開發主機群 B、開發主機群 A 需要 範圍、maintenance window、憑證 handling與回復 負責人。", "handoff": "先只顯示主機證據缺口與等待窗口,不開 live 掃描或SSH path。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17170,7 +17170,7 @@ }, "hostWindow": { "title": "主機安全窗口預檢", - "checkPoint": "確認 Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", + "checkPoint": "確認 Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling與回復 負責人都只以中繼資料 呈現。", "passSignal": "只可標示 host 證據 缺口 已可讀,不能建立 live action。", "failRoute": "缺窗口、憑證邊界或回復 負責人 時維持主機安全暫停。", "stillClosed": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17244,7 +17244,7 @@ }, "hostWindowHold": { "title": "主機安全暫停分流", - "why": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", + "why": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling或回復 負責人不完整。", "next": "等待主機 負責人 以 僅中繼資料形式補齊窗口與回復邊界。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17321,7 +17321,7 @@ }, "hostWindow": { "title": "主機窗口補齊", - "owner": "Kali、host:dev-b、host:dev-a 對應主機 負責人。", + "owner": "Kali、開發主機群 B、開發主機群 A 對應主機 負責人。", "required": "範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只回收 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17396,7 +17396,7 @@ }, "hostReady": { "title": "主機重試門檻", - "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", + "ready": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling與回復 負責人 均以中繼資料 呈現。", "retry": "只可標示 host safety window 重試候選,等待人工再檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17462,7 +17462,7 @@ }, "hostWindowPause": { "title": "主機安全暫停", - "decision": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", + "decision": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling或回復 負責人仍不完整。", "next": "等待主機 負責人 補 僅中繼資料host safety window,再回到重試門檻。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17546,7 +17546,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口包", - "required": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", + "required": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標。", "handoff": "只交接 僅中繼資料host safety window,不建立 live action。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17630,7 +17630,7 @@ }, "hostSafetyWindow": { "title": "主機安全窗口預檢", - "requirement": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", + "requirement": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling、回復 負責人與驗證指標都以中繼資料 呈現。", "pass": "只可標示 host safety window readable,不建立 live action。", "fail": "缺窗口、憑證邊界或回復 負責人 時維持主機暫停。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17795,7 +17795,7 @@ }, "hostWindowEvidence": { "title": "主機窗口補證回收", - "owner": "主機維運 負責人 補 Kali、host:dev-b、host:dev-a的窗口與回復責任。", + "owner": "主機維運 負責人 補 Kali、開發主機群 B、開發主機群 A的窗口與回復責任。", "required": "範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明。", "recovery": "只收 僅中繼資料host window,等待主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" @@ -17876,7 +17876,7 @@ }, "hostWindowGate": { "title": "主機窗口重試門檻", - "ready": "Kali、host:dev-b、host:dev-a的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", + "ready": "Kali、開發主機群 B、開發主機群 A的 範圍、maintenance window、憑證 handling、回復 負責人、驗證指標與不執行聲明都補齊。", "retry": "只以 僅中繼資料host window 回到主機安全窗口預檢。", "blocked": "不得 SSH、更新主機、掃描、調校、收 憑證 明文或執行 Kali /execute。" }, @@ -17972,8 +17972,8 @@ }, "hosts": { "title": "主機與工具", - "state": "host:kali-readonly / host:dev-a / host:dev-b", - "detail": "Kali host:kali-readonly與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", + "state": "資安觀測節點 / 開發主機群 A / 開發主機群 B", + "detail": "資安觀測節點與兩台開發主機已納入視野;監控、MCP、Ansible、KM與版本來源也在同一條證據鏈。", "evidence": "主機與工具證據鏈已前台化。", "next": "補維護窗口、host 負責人決策、脫敏主機 證據。", "locked": "不 SSH 變更、不更新主機、不執行 Kali /execute。" @@ -18823,7 +18823,7 @@ "fastProgress": { "eyebrow": "快速進度回報", "title": "目前做了什麼,一眼看懂", - "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、Kali host:kali-readonly 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", + "subtitle": "此區僅放高層第一屏摘要:哪些已經前台可見、資安觀測節點 是否納管、所有產品是否套用、以及哪些執行動作仍未批准。詳細證據保留在下方區塊。", "nextGate": { "title": "下一個可推動進度的 閘門", "body": "先收到並驗收 S4.9 Gitea 清冊負責人回覆。這件事完成前,64%不應假性前進;完成後才檢查是否能打開審查者 / 執行期的下一段人工流程。" @@ -18834,7 +18834,7 @@ "body": "IwoooS 已串起安全合規、告警、授權、治理、錯誤追蹤、操作日誌與程式碼審查,讓資安訊號進入 AI 自動化閉環,而不是只停在文件或訊息轉發。" }, "kali112": { - "title": "Kali host:kali-readonly 已納入資安網", + "title": "資安觀測節點 已納入資安網", "body": "2026-06-04 08:55 已用既有 SSH key 完成只讀快照:系統 Kali Rolling、核心 6.16.8、根目錄磁碟使用 26%、掃描服務 8080 /health 健康、待更新套件 1994、失敗服務單元 networking.service、服務硬化 0/4。沒有啟動掃描、/execute、主機更新、調校或重啟。" }, "allProducts": { @@ -19205,7 +19205,7 @@ } }, "socSiemKaliWazuhIntegration": { - "eyebrow": "SOC / SIEM / Kali 112 整合控制", + "eyebrow": "SOC / SIEM / 資安觀測節點 整合控制", "title": "把 Wazuh、Kali、告警鏈與主流資安機制接成同一條證據線", "subtitle": "這張卡把 NIST CSF、CIS Controls、CISA KEV、OWASP ASVS、Wazuh、Suricata 與 Kali tooling 映射到 IwoooS 控制面;目前只顯示框架、訊號源、控制候選與 0/false 邊界,不呼叫 Wazuh、不呼叫 Kali、不送 Telegram、不建立 SOAR case、不啟動掃描或封鎖。", "checkLabel": "檢核", @@ -19240,7 +19240,7 @@ "body": "manager、agent、FIM、rule、decoder 與 event refs 只能用脫敏參照進入 IwoooS,不接 raw payload。" }, "kali112": { - "title": "Kali 112 維持只讀", + "title": "資安觀測節點 維持只讀", "body": "先接 health、工具版本、scope 與 normalized finding envelope;active scan 與 /execute 仍需獨立批准。" }, "alertChain": { diff --git a/apps/web/src/app/[locale]/iwooos/page.tsx b/apps/web/src/app/[locale]/iwooos/page.tsx index 009023fe..b7eaf650 100644 --- a/apps/web/src/app/[locale]/iwooos/page.tsx +++ b/apps/web/src/app/[locale]/iwooos/page.tsx @@ -1323,7 +1323,7 @@ const visualDashboardNodes: VisualDashboardNode[] = [ { key: 'awoooiCore', state: 'OK', icon: ShieldCheck, tone: 'steady' }, { key: 'websites', state: '7/7', icon: Radar, tone: 'steady' }, { key: 'vibeWork', state: '新專案', icon: FileText, tone: 'warn' }, - { key: 'kali112', state: 'host:kali-readonly', icon: Activity, tone: 'warn' }, + { key: 'kali112', state: '資安觀測節點', icon: Activity, tone: 'warn' }, { key: 'devHosts', state: '2', icon: ListChecks, tone: 'warn' }, { key: 'githubPrimary', state: '0', icon: GitBranch, tone: 'locked' }, { key: 'runtimeGate', state: '0', icon: Lock, tone: 'locked' }, @@ -1457,7 +1457,7 @@ const headlineMovementAcceptanceGateBoundaries = [ 'headline_percent_after_this_stage=64', 'headline_movement_signal_count=2', 'awooop_read_only_production_landing_evidence_count=1', - 'kali_112_read_only_production_evidence_count=1', + 'security_observer_read_only_production_evidence_count=1', 'owner_response_received_count=0', 'owner_response_accepted_count=0', 'owner_response_acceptance_gate_open=false', @@ -1524,7 +1524,7 @@ const s49OwnerResponsePreflightChecks: S49OwnerResponsePreflightCheck[] = [ const s49OwnerResponseRequestTemplates: S49OwnerResponseRequestTemplate[] = [ { key: 'publicOnlyVsLocalGiteaGap', template: 'T1', icon: GitBranch, tone: 'warn' }, { key: 'orgUserEndpointIdentity', template: 'T2', icon: SearchCheck, tone: 'warn' }, - { key: 'internal110AdjacentScope', template: 'T3', icon: Radar, tone: 'warn' }, + { key: 'adjacentRuntimeScope', template: 'T3', icon: Radar, tone: 'warn' }, { key: 'repoOwnerCanonicalScope', template: 'T4', icon: ClipboardCheck, tone: 'warn' }, { key: 'legacyOrInaccessibleDisposition', template: 'T5', icon: FileWarning, tone: 'locked' }, ] @@ -1795,7 +1795,7 @@ const iwooosLowFrictionRolloutPhases = [ const iwooosLowFrictionRolloutBoundaries = [ 'iwooos_rollout_phase_count=5', 'iwooos_rollout_current_phase=observe_first', - 'iwooos_rollout_frontstage_source=security_compliance_s2_110', + 'iwooos_rollout_frontstage_source=security_compliance_integrated_entry', 'iwooos_rollout_runtime_phase_enabled=false', 'iwooos_rollout_enforcement_enabled=false', 'iwooos_rollout_action_buttons_allowed=false', @@ -1855,7 +1855,7 @@ const iwooosProgressMovementSignalBoundaries = [ 'iwooos_progress_active_runtime_gate_count=0', 'iwooos_progress_github_primary_ready_count=0', 'iwooos_progress_awooop_landing_evidence_count=1', - 'iwooos_progress_kali_112_read_only_evidence_count=1', + 'iwooos_progress_security_observer_read_only_evidence_count=1', 'iwooos_progress_review_authorized=true', 'runtime_execution_authorized=false', 'active_runtime_gate_count=0', @@ -2033,10 +2033,10 @@ const hostToolEvidenceChainBoundaries = [ 'iwooos_host_tool_evidence_chain_host_count=3', 'iwooos_host_tool_evidence_chain_tool_lane_count=6', 'iwooos_host_tool_evidence_chain_step_count=5', - 'kali_112_integrated_as_read_only=true', - 'dev_hosts_111_168_integrated_as_read_only=true', + 'security_observer_integrated_as_read_only=true', + 'dev_host_group_integrated_as_read_only=true', 'monitoring_tools_evidence_chain_linked=true', - 'kali_112_execute_authorized=false', + 'security_observer_execute_authorized=false', 'host_update_authorized=false', 'active_scan_authorized=false', 'ssh_mutation_authorized=false', @@ -4131,7 +4131,7 @@ const iwooosFocusDeckBoundaries = [ const iwooosImmediateVisualMeshNodes: IwoooSImmediateVisualMeshNode[] = [ { key: 'products', metric: '9', icon: ShieldCheck, tone: 'steady' }, - { key: 'hosts', metric: 'host:kali-readonly / host:dev-a / host:dev-b', icon: Activity, tone: 'warn' }, + { key: 'hosts', metric: '資安觀測節點 / 開發主機群 A / 開發主機群 B', icon: Activity, tone: 'warn' }, { key: 'sourceControl', metric: 'S4.9', icon: GitBranch, tone: 'warn' }, { key: 'monitoring', metric: '6', icon: Radar, tone: 'steady' }, { key: 'awooop', metric: '已接線', icon: Bell, tone: 'steady' }, @@ -4171,8 +4171,8 @@ const iwooosTopologyAtlasLenses: IwoooSTopologyAtlasLens[] = [ const iwooosTopologyAtlasNodes: IwoooSTopologyAtlasNode[] = [ { key: 'productSurface', metric: '9', x: 14, y: 30, icon: Boxes, tone: 'steady' }, { key: 'sourceControl', metric: 'S4.9', x: 35, y: 18, icon: Code2, tone: 'warn' }, - { key: 'kali', metric: 'host:kali-readonly', x: 58, y: 30, icon: Server, tone: 'warn' }, - { key: 'devHosts', metric: 'host:dev-a / host:dev-b', x: 77, y: 50, icon: Network, tone: 'warn' }, + { key: 'kali', metric: '資安觀測節點', x: 58, y: 30, icon: Server, tone: 'warn' }, + { key: 'devHosts', metric: '開發主機群 A / 開發主機群 B', x: 77, y: 50, icon: Network, tone: 'warn' }, { key: 'monitoring', metric: '6', x: 37, y: 66, icon: Radar, tone: 'steady' }, { key: 'awooopTruth', metric: '已接線', x: 62, y: 78, icon: Workflow, tone: 'steady' }, { key: 'runtimeGate', metric: '0', x: 88, y: 24, icon: Lock, tone: 'locked' }, @@ -4233,7 +4233,7 @@ const iwooosTopologyDrilldownNodes: IwoooSTopologyDrilldownNode[] = [ }, { key: 'kali', - relationCode: 'host:kali-readonly', + relationCode: '資安觀測節點', evidenceCode: '只讀觀測', nextCode: '範圍批准', boundaryCode: '掃描 0', @@ -4242,7 +4242,7 @@ const iwooosTopologyDrilldownNodes: IwoooSTopologyDrilldownNode[] = [ }, { key: 'devHosts', - relationCode: 'host:dev-a / host:dev-b', + relationCode: '開發主機群 A / 開發主機群 B', evidenceCode: '主機窗口 0', nextCode: '負責人窗口', boundaryCode: '變更 0', @@ -4397,7 +4397,7 @@ const iwooosTopologyAtlasBoundaries = [ const iwooosDecisionRunwaySteps: IwoooSDecisionRunwayStep[] = [ { key: 'ownerEvidence', metric: '0/4', progress: 18, icon: FileWarning, tone: 'warn' }, { key: 'reviewerAcceptance', metric: '0/5', progress: 12, icon: ClipboardCheck, tone: 'warn' }, - { key: 'hostWindow', metric: 'host:kali-readonly / host:dev-a / host:dev-b', progress: 35, icon: Server, tone: 'warn' }, + { key: 'hostWindow', metric: '資安觀測節點 / 開發主機群 A / 開發主機群 B', progress: 35, icon: Server, tone: 'warn' }, { key: 'githubPrimary', metric: 'S4.9', progress: 22, icon: GitBranch, tone: 'warn' }, { key: 'runtimeGate', metric: '閘門 0', progress: 0, icon: Lock, tone: 'locked' }, ] @@ -5497,9 +5497,9 @@ const evidenceReadinessItems: EvidenceReadinessItem[] = [ ] const hostCoverageItems: HostCoverageItem[] = [ - { key: 'kali112', address: 'host:kali-readonly', icon: Activity, tone: 'steady' }, - { key: 'dev168', address: 'host:dev-b', icon: Radar, tone: 'warn' }, - { key: 'dev111', address: 'host:dev-a', icon: Radar, tone: 'warn' }, + { key: 'kali112', address: '資安觀測節點', icon: Activity, tone: 'steady' }, + { key: 'dev168', address: '開發主機群 B', icon: Radar, tone: 'warn' }, + { key: 'dev111', address: '開發主機群 A', icon: Radar, tone: 'warn' }, ] const kaliMaintenanceReadinessItems: KaliMaintenanceReadinessItem[] = [ @@ -5512,22 +5512,22 @@ const kaliMaintenanceReadinessItems: KaliMaintenanceReadinessItem[] = [ ] const kaliMaintenanceReadinessBoundaries = [ - 'kali_112_read_only_snapshot_collected=true', - 'kali_112_read_only_observed_at=2026-06-04T08:55:43+08:00', - 'kali_112_scanner_health=healthy', - 'kali_112_scanner_health_endpoint=127.0.0.1:8080/health', - 'kali_112_scanner_service_active=active', - 'kali_112_scanner_service_enabled=enabled', - 'kali_112_upgradable_package_count=1994', - 'kali_112_failed_systemd_unit_count=1', - 'kali_112_failed_systemd_unit=networking.service', - 'kali_112_systemd_hardening_enabled=0/4', - 'kali_112_full_upgrade_authorized=false', - 'kali_112_reboot_authorized=false', - 'kali_112_package_update_executed=false', - 'kali_112_host_reboot_executed=false', - 'kali_112_active_scan_executed=false', - 'kali_112_runtime_execution_authorized=false', + 'security_observer_read_only_snapshot_collected=true', + 'security_observer_read_only_observed_at=2026-06-04T08:55:43+08:00', + 'security_observer_scanner_health=healthy', + 'security_observer_health_endpoint=redacted_internal_health_check', + 'security_observer_scanner_service_active=active', + 'security_observer_scanner_service_enabled=enabled', + 'security_observer_upgradable_package_count=1994', + 'security_observer_failed_systemd_unit_count=1', + 'security_observer_failed_systemd_unit=networking.service', + 'security_observer_systemd_hardening_enabled=0/4', + 'security_observer_full_upgrade_authorized=false', + 'security_observer_reboot_authorized=false', + 'security_observer_package_update_executed=false', + 'security_observer_host_reboot_executed=false', + 'security_observer_active_scan_executed=false', + 'security_observer_runtime_execution_authorized=false', 'active_runtime_gate_count=0', 'not_authorization=true', ] as const diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 78b3b3f5..bffc70ce 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -7,8 +7,10 @@ - 112 `wazuh-manager`、`wazuh-indexer`、`wazuh-dashboard` 均為 active,`NRestarts=0`。 - 受管節點 A 的 `wazuh-agent.service` active,並有到 manager 的 transport 連線。 - 112 manager 端 `1514` 只讀觀察到 `6` 條 established transport;這代表傳輸層有 agent 連線,但不能替代 manager registry 驗收。 +- 2026-06-25 11:00 CST 再次只讀確認:112 三個 Wazuh 服務仍 active,Wazuh API root 與 agents endpoint 回 `401`,代表 API 進程可回應但目前沒有可用只讀憑證;110 agent active 且到 manager transport 為 `1`;188 本工作視窗 SSH 只讀讀回被拒,不能以此視窗宣稱 188 已恢復。 - 目前使用者 `kali` 可讀服務狀態與 journal,但不能直接讀 manager registry CLI;Wazuh manager 受限目錄需要更高權限,`sudo -n` 也需要密碼。 - Dashboard journal 仍觀察到 stored API / API check / login 退化:`400 / 429 / 500`、stored API unreachable、run_as / internal user 權限錯誤與 TLS client trust 錯誤。 +- 近一小時 Dashboard 讀取層仍有 `400`、`429`、`unreachable` 與憑證信任錯誤類型,和「Dashboard 看不到 agent」一致;這仍不是 agent registry 驗收。 **判定**: - 目前不是「所有 agent 服務都停了」的單純故障;至少 manager transport 層仍有多條連線。 @@ -19,6 +21,8 @@ - `docs/security/wazuh-agent-visibility-runtime-gate.snapshot.json` 更新為 2026-06-25 live read-only 狀態,新增 `manager_transport_established_connection_count=6` 與 Dashboard API 退化細項。 - `scripts/security/wazuh-agent-visibility-runtime-gate.py` 加嚴驗證:必須保留 transport count、stored API unreachable、login 500、rate limited、run_as permission、TLS client trust 與 registry CLI permission blocked 訊號。 - `docs/security/WAZUH-AGENT-DISAPPEARANCE-INCIDENT-READBACK-2026-06-24.md` 同步更新結論與證據表。 +- IwoooS 前端顯示層已把資安觀測主機、開發主機群與內部 health endpoint 脫敏,移除 `host:*`、`Kali 112`、`kali_112`、`127.0.0.1` 與 P2 host-coded 顯示字串。 +- 新增 `scripts/security/iwooos-frontend-display-redaction-guard.py` 並納入 `security-mirror-progress-guard.py`,後續若有人把內部主機代號、LAN endpoint 或 host-coded 工作線放回 IwoooS 前端 / i18n,guard 會直接擋下。 **完成度同步**: - Wazuh agent transport 只讀確認:`65%`。 @@ -26,6 +30,7 @@ - Manager agent registry 驗收:`0%`。 - IwoooS production live metadata route:`0%`。 - Dashboard stored API / RBAC / TLS 修復:`0%`。 +- IwoooS 前端顯示層脫敏:`100%` source-side guard。 - Active response / host write / agent re-enroll / Wazuh restart:`0%`,維持禁止。 **邊界**:本輪沒有讀 Wazuh secret、沒有保存 raw log、沒有重新註冊 agent、沒有重啟 Wazuh、沒有修改 Dashboard stored API、RBAC、TLS、Nginx、Docker、K8s、firewall 或 host config,也沒有 active response 或 Kali active scan。 diff --git a/scripts/security/iwooos-frontend-display-redaction-guard.py b/scripts/security/iwooos-frontend-display-redaction-guard.py new file mode 100644 index 00000000..2742ef24 --- /dev/null +++ b/scripts/security/iwooos-frontend-display-redaction-guard.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +"""Guard IwoooS public frontend text against host/topology leakage. + +This guard is intentionally static and read-only. It does not connect to any +runtime host or API; it only prevents public IwoooS copy from exposing internal +host aliases, LAN endpoints, or working-lane identifiers as product text. +""" + +from __future__ import annotations + +import argparse +from pathlib import Path + + +PUBLIC_FILES = [ + Path("apps/web/messages/zh-TW.json"), + Path("apps/web/messages/en.json"), + Path("apps/web/src/app/[locale]/iwooos/page.tsx"), +] + +FORBIDDEN_FRAGMENTS = [ + "host:", + "Kali host", + "Kali 112", + "kali_112", + "internal110", + "security_compliance_s2_110", + "127.0.0.1", + "192.168.", + "P2-110", + "P2-112", +] + + +def validate(root: Path) -> None: + violations: list[str] = [] + for relative_path in PUBLIC_FILES: + path = root / relative_path + text = path.read_text(encoding="utf-8") + for line_number, line in enumerate(text.splitlines(), start=1): + for fragment in FORBIDDEN_FRAGMENTS: + if fragment in line: + violations.append(f"{relative_path}:{line_number}: forbidden {fragment!r}") + + if violations: + formatted = "\n".join(violations[:20]) + raise SystemExit(f"BLOCKED iwooos_frontend_display_redaction:\n{formatted}") + + +def main() -> int: + parser = argparse.ArgumentParser(description="Validate IwoooS public frontend display redaction.") + parser.add_argument("--root", default=".") + args = parser.parse_args() + validate(Path(args.root).resolve()) + print("IWOOOS_FRONTEND_DISPLAY_REDACTION_GUARD_OK") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/security/security-mirror-progress-guard.py b/scripts/security/security-mirror-progress-guard.py index c0963cf9..ef509860 100755 --- a/scripts/security/security-mirror-progress-guard.py +++ b/scripts/security/security-mirror-progress-guard.py @@ -87,6 +87,10 @@ def validate(root: Path) -> None: str(root / "scripts" / "security" / "public-frontend-env-guard.py") ) public_frontend_env_guard["validate"](root) + iwooos_frontend_display_redaction_guard = runpy.run_path( + str(root / "scripts" / "security" / "iwooos-frontend-display-redaction-guard.py") + ) + iwooos_frontend_display_redaction_guard["validate"](root) wazuh_readonly_route_boundary_guard = runpy.run_path( str(root / "scripts" / "security" / "wazuh-readonly-route-boundary-guard.py") ) @@ -949,21 +953,21 @@ def validate(root: Path) -> None: 'data-testid="iwooos-kali-maintenance-readiness-board"', "kaliMaintenanceRunwaySteps", "2026-06-04 08:55", - "kali_112_read_only_observed_at=2026-06-04T08:55:43+08:00", - "kali_112_scanner_health=healthy", - "kali_112_scanner_health_endpoint=127.0.0.1:8080/health", - "kali_112_scanner_service_active=active", - "kali_112_scanner_service_enabled=enabled", - "kali_112_upgradable_package_count=1994", - "kali_112_failed_systemd_unit_count=1", - "kali_112_failed_systemd_unit=networking.service", - "kali_112_systemd_hardening_enabled=0/4", - "kali_112_full_upgrade_authorized=false", - "kali_112_reboot_authorized=false", - "kali_112_package_update_executed=false", - "kali_112_host_reboot_executed=false", - "kali_112_active_scan_executed=false", - "kali_112_runtime_execution_authorized=false", + "security_observer_read_only_observed_at=2026-06-04T08:55:43+08:00", + "security_observer_scanner_health=healthy", + "security_observer_health_endpoint=redacted_internal_health_check", + "security_observer_scanner_service_active=active", + "security_observer_scanner_service_enabled=enabled", + "security_observer_upgradable_package_count=1994", + "security_observer_failed_systemd_unit_count=1", + "security_observer_failed_systemd_unit=networking.service", + "security_observer_systemd_hardening_enabled=0/4", + "security_observer_full_upgrade_authorized=false", + "security_observer_reboot_authorized=false", + "security_observer_package_update_executed=false", + "security_observer_host_reboot_executed=false", + "security_observer_active_scan_executed=false", + "security_observer_runtime_execution_authorized=false", ]: assert_text_contains("iwooos_projection_page.kali_maintenance_readiness", iwooos_projection_page, text) @@ -16458,7 +16462,7 @@ def validate(root: Path) -> None: "headline_percent_after_this_stage=64", "headline_movement_signal_count=2", "awooop_read_only_production_landing_evidence_count=1", - "kali_112_read_only_production_evidence_count=1", + "security_observer_read_only_production_evidence_count=1", "owner_response_received_count=0", "owner_response_accepted_count=0", "owner_response_acceptance_gate_open=false", @@ -17367,7 +17371,7 @@ def validate(root: Path) -> None: for text in [ "iwooos_rollout_phase_count=5", "iwooos_rollout_current_phase=observe_first", - "iwooos_rollout_frontstage_source=security_compliance_s2_110", + "iwooos_rollout_frontstage_source=security_compliance_integrated_entry", "iwooos_rollout_runtime_phase_enabled=false", "iwooos_rollout_enforcement_enabled=false", "iwooos_rollout_action_buttons_allowed=false", @@ -17532,7 +17536,7 @@ def validate(root: Path) -> None: "iwooos_progress_active_runtime_gate_count=0", "iwooos_progress_github_primary_ready_count=0", "iwooos_progress_awooop_landing_evidence_count=1", - "iwooos_progress_kali_112_read_only_evidence_count=1", + "iwooos_progress_security_observer_read_only_evidence_count=1", "iwooos_progress_review_authorized=true", "runtime_execution_authorized=false", "active_runtime_gate_count=0", @@ -18110,10 +18114,10 @@ def validate(root: Path) -> None: "iwooos_host_tool_evidence_chain_host_count=3", "iwooos_host_tool_evidence_chain_tool_lane_count=6", "iwooos_host_tool_evidence_chain_step_count=5", - "kali_112_integrated_as_read_only=true", - "dev_hosts_111_168_integrated_as_read_only=true", + "security_observer_integrated_as_read_only=true", + "dev_host_group_integrated_as_read_only=true", "monitoring_tools_evidence_chain_linked=true", - "kali_112_execute_authorized=false", + "security_observer_execute_authorized=false", "host_update_authorized=false", "active_scan_authorized=false", "ssh_mutation_authorized=false",