diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 07f227c0..a862f9dd 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -986,7 +986,10 @@ "subtitle": "專業建議是不移除。這個頁面保留既有安全監控與合規統計,作為前台使用者熟悉的入口;IwoooS 則成為資安網的總覽與唯一姿態來源,避免安全合規與 IwoooS 變成兩套敘事。", "openIwooos": "查看 IwoooS 總覽", "boundaryTitle": "低摩擦整合邊界", - "boundaryIntro": "這裡只做前台整合與導流,不新增掃描、修復、批准、部署或 blocking control。", + "boundaryIntro": "這裡只做前台整合與導流,不新增掃描、修復、批准、部署或硬性阻擋控制。", + "routeRoleTitle": "前台入口角色對照", + "routeRoleSubtitle": "從安全合規進來時,也能直接看懂每個資安入口該負責什麼;這些入口只導覽與說明,不提供執行按鈕。", + "routeLabel": "入口", "items": { "routePreserved": { "label": "路由策略", @@ -1004,6 +1007,28 @@ "label": "執行控制", "detail": "不新增掃描、修復、批准或部署按鈕。" } + }, + "routeRoles": { + "iwooosOverview": { + "title": "IwoooS 看總覽", + "body": "閱讀資安網進度、主機範圍、版本來源、負責人回覆與執行期邊界。" + }, + "securityComplianceHub": { + "title": "安全合規看熟悉入口", + "body": "保留既有安全監控與合規統計,讓前台使用者不用改變原本路徑。" + }, + "securityMonitor": { + "title": "安全看事件訊號", + "body": "查看錯誤、議題與安全事件類訊號;仍只做資料呈現。" + }, + "complianceStats": { + "title": "合規看統計", + "body": "查看事件摘要、處置劇本與自動修復統計,不把統計視為批准。" + }, + "awooopApprovals": { + "title": "AwoooP 看人控等待", + "body": "查看審批與負責人回覆等待狀態;仍不代表資安執行期閘門已開。" + } } } }, diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 2573a083..268b8ac1 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -987,7 +987,10 @@ "subtitle": "專業建議是不移除。這個頁面保留既有安全監控與合規統計,作為前台使用者熟悉的入口;IwoooS 則成為資安網的總覽與唯一姿態來源,避免安全合規與 IwoooS 變成兩套敘事。", "openIwooos": "查看 IwoooS 總覽", "boundaryTitle": "低摩擦整合邊界", - "boundaryIntro": "這裡只做前台整合與導流,不新增掃描、修復、批准、部署或 blocking control。", + "boundaryIntro": "這裡只做前台整合與導流,不新增掃描、修復、批准、部署或硬性阻擋控制。", + "routeRoleTitle": "前台入口角色對照", + "routeRoleSubtitle": "從安全合規進來時,也能直接看懂每個資安入口該負責什麼;這些入口只導覽與說明,不提供執行按鈕。", + "routeLabel": "入口", "items": { "routePreserved": { "label": "路由策略", @@ -1005,6 +1008,28 @@ "label": "執行控制", "detail": "不新增掃描、修復、批准或部署按鈕。" } + }, + "routeRoles": { + "iwooosOverview": { + "title": "IwoooS 看總覽", + "body": "閱讀資安網進度、主機範圍、版本來源、負責人回覆與執行期邊界。" + }, + "securityComplianceHub": { + "title": "安全合規看熟悉入口", + "body": "保留既有安全監控與合規統計,讓前台使用者不用改變原本路徑。" + }, + "securityMonitor": { + "title": "安全看事件訊號", + "body": "查看錯誤、議題與安全事件類訊號;仍只做資料呈現。" + }, + "complianceStats": { + "title": "合規看統計", + "body": "查看事件摘要、處置劇本與自動修復統計,不把統計視為批准。" + }, + "awooopApprovals": { + "title": "AwoooP 看人控等待", + "body": "查看審批與負責人回覆等待狀態;仍不代表資安執行期閘門已開。" + } } } }, diff --git a/apps/web/src/app/[locale]/security-compliance/page.tsx b/apps/web/src/app/[locale]/security-compliance/page.tsx index a885aeaf..0b95e641 100644 --- a/apps/web/src/app/[locale]/security-compliance/page.tsx +++ b/apps/web/src/app/[locale]/security-compliance/page.tsx @@ -8,7 +8,7 @@ import { useTranslations } from 'next-intl' import Link from 'next/link' -import { ArrowRight, CheckCircle2, GitBranch, Lock, ShieldCheck } from 'lucide-react' +import { Activity, ArrowRight, CheckCircle2, ClipboardCheck, GitBranch, Lock, Radar, ShieldCheck } from 'lucide-react' import { AppLayout } from '@/components/layout' import { PageTabs, type TabConfig } from '@/components/layout/page-tabs' import { SecurityPanel } from '@/components/panels/SecurityPanel' @@ -25,6 +25,10 @@ const integrationBoundaries = [ 'security_compliance_route_preserved=true', 'security_compliance_removed=false', 'security_compliance_integration_mode=iwooos_frontstage_bridge', + 'security_compliance_frontstage_route_role_count=5', + 'security_compliance_frontstage_primary_source=iwooos', + 'security_compliance_frontstage_execution_entry_count=0', + 'security_compliance_frontstage_links_read_only=true', 'iwooos_authoritative_security_entry=true', 'runtime_execution_authorized=false', 'active_runtime_gate_count=0', @@ -32,7 +36,15 @@ const integrationBoundaries = [ 'not_authorization=true', ] as const -function SecurityComplianceFrontStage() { +const routeRoleItems = [ + { key: 'iwooosOverview', href: '/iwooos', route: 'IwoooS', icon: ShieldCheck, color: '#1f7a4d' }, + { key: 'securityComplianceHub', href: '/security-compliance', route: '安全合規', icon: Radar, color: '#d97757' }, + { key: 'securityMonitor', href: '/security', route: '安全', icon: Activity, color: '#d97757' }, + { key: 'complianceStats', href: '/compliance', route: '合規', icon: ClipboardCheck, color: '#1f7a4d' }, + { key: 'awooopApprovals', href: '/awooop/approvals', route: 'AwoooP', icon: Lock, color: '#6f6d66' }, +] as const + +function SecurityComplianceFrontStage({ locale }: { locale: string }) { const t = useTranslations('securityCompliance.frontStage') const textWrap = { overflowWrap: 'anywhere' as const, wordBreak: 'break-word' as const } @@ -102,6 +114,59 @@ function SecurityComplianceFrontStage() { ) })} +
+
+

{t('routeRoleTitle')}

+

+ {t('routeRoleSubtitle')} +

+
+
+ {routeRoleItems.map(item => { + const Icon = item.icon + return ( + +
+ {t('routeLabel')} {item.route} + +
+

+ {t(`routeRoles.${item.key}.title` as never)} +

+

+ {t(`routeRoles.${item.key}.body` as never)} +

+ + ) + })} +
+
- + ) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 29a3a472..d3090040 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -1,3 +1,17 @@ +## 2026-05-24 | 資安供應鏈 S2.109:安全合規前台入口角色對照 + +**背景**:S2.108 已在 IwoooS 說清楚五個資安入口角色;本階段把同一個前台理解模型補到 `/security-compliance`,讓使用者從熟悉入口進來時也能立即理解 IwoooS、事件、合規統計與 AwoooP 人控等待的差異。 + +**完成**: +- `/security-compliance` 新增「前台入口角色對照」,列出 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口角色。 +- 安全合規頁新增 `security_compliance_frontstage_route_role_count=5`、`security_compliance_frontstage_primary_source=iwooos`、`security_compliance_frontstage_execution_entry_count=0`、`security_compliance_frontstage_links_read_only=true`,並維持 `runtime_execution_authorized=false`、`active_runtime_gate_count=0`、`action_buttons_allowed=false`、`not_authorization=true`。 +- `security_mirror_status_rollup_v1` 新增 `s2_109_security_compliance_frontstage_route_role_map` 與 `show_security_compliance_frontstage_route_role_map`。 +- `security-mirror-progress-guard.py` 已納入安全合規入口角色對照看板、i18n 鍵、五個入口與 false 邊界檢查。 + +**仍禁止**: +- S2.109 只做 `/security-compliance` 前台導覽與理解成本收斂,不代表 runtime 授權、人工審批、掃描、修復、部署、硬性阻擋控制、專案庫建立、refs sync、workflow / secret 修改、GitHub primary 切換、Gitea 停用、Kali / SSH / 主機更新。 +- 整體資安網百分比仍是 58%;這是 framework detail 可見進展,不是 runtime landing。 + ## 2026-05-24 | 資安供應鏈 S2.108:IwoooS 前台資安入口角色分流 **背景**:S2.107 已決定「安全合規」保留並整合到 IwoooS;本階段補上更專業的入口角色分流,避免使用者看到多個資安相關入口時不知道該從哪裡理解。 @@ -9,7 +23,7 @@ - `security-mirror-progress-guard.py` 已納入前台入口角色分流看板、i18n 鍵、五個入口與 false 邊界檢查。 **仍禁止**: -- S2.108 只做前台導覽與理解成本收斂,不代表 runtime 授權、人工審批、掃描、修復、部署、blocking control、專案庫建立、refs sync、workflow / secret 修改、GitHub primary 切換、Gitea 停用、Kali / SSH / 主機更新。 +- S2.108 只做前台導覽與理解成本收斂,不代表 runtime 授權、人工審批、掃描、修復、部署、硬性阻擋控制、專案庫建立、refs sync、workflow / secret 修改、GitHub primary 切換、Gitea 停用、Kali / SSH / 主機更新。 - 整體資安網百分比仍是 58%;這是 framework detail 可見進展,不是 runtime landing。 ## 2026-05-24 | 資安供應鏈 S2.107:前台安全合規 IwoooS 整合入口 @@ -24,7 +38,7 @@ - `security-mirror-progress-guard.py` 已納入前台安全合規橋接頁、IwoooS 看板、i18n 鍵與 false 邊界檢查。 **仍禁止**: -- S2.107 只做前台資訊架構整合與只讀導流,不代表 runtime 授權、人工審批、掃描、修復、部署、blocking control、專案庫建立、refs sync、workflow / secret 修改、GitHub primary 切換、Gitea 停用、Kali / SSH / 主機更新。 +- S2.107 只做前台資訊架構整合與只讀導流,不代表 runtime 授權、人工審批、掃描、修復、部署、硬性阻擋控制、專案庫建立、refs sync、workflow / secret 修改、GitHub primary 切換、Gitea 停用、Kali / SSH / 主機更新。 - 整體資安網百分比仍是 58%;這是 framework detail 可見進展,不是 runtime landing。 ## 2026-05-24 | 資安供應鏈 S2.106:IwoooS S4.9 負責人回覆送件鏈路摘要 diff --git a/docs/security/SECURITY-MIRROR-STATUS-ROLLUP.md b/docs/security/SECURITY-MIRROR-STATUS-ROLLUP.md index 8e78c8b2..3aa49248 100644 --- a/docs/security/SECURITY-MIRROR-STATUS-ROLLUP.md +++ b/docs/security/SECURITY-MIRROR-STATUS-ROLLUP.md @@ -52,6 +52,7 @@ | IwoooS S4.9 送件鏈路摘要 | S2.106 已在 `/iwooos` 顯示 S4.9 負責人回覆送件鏈路摘要;鏈路步驟=6、目前焦點=request draft、已送出=0、已接受=0;`s4_9_owner_response_dispatch_flow_step_count=6`、`s4_9_owner_response_dispatch_flow_current_step=request_draft`、`s4_9_owner_response_dispatch_flow_completed_count=0`、`s4_9_owner_response_request_sent=false`、`s4_9_owner_response_request_dispatch_authorized=false`、`runtime_execution_authorized=false`、`active_runtime_gate_count=0`、`action_buttons_allowed=false`、`not_authorization=true`,仍不代表 request sent、owner response received / accepted、audit event emitted、人工批准、GitHub 主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | | 前台安全合規 IwoooS 整合入口 | S2.107 已保留 `/security-compliance` 並把它整合成 IwoooS 前台友善入口;`security_compliance_route_preserved=true`、`security_compliance_removed=false`、`security_compliance_integration_mode=iwooos_frontstage_bridge`、`iwooos_authoritative_security_entry=true`、`runtime_execution_authorized=false`、`active_runtime_gate_count=0`、`action_buttons_allowed=false`、`not_authorization=true`,仍不代表 runtime 授權、審批、掃描、修復、部署、GitHub 主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | | 前台資安入口角色分流 | S2.108 已在 `/iwooos` 顯示 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口角色;`frontstage_security_entry_role_count=5`、`frontstage_security_primary_entry=iwooos`、`frontstage_security_familiar_entry=security_compliance`、`frontstage_security_execution_entry_count=0`、`frontstage_security_action_buttons_allowed=false`、`runtime_execution_authorized=false`、`active_runtime_gate_count=0`、`not_authorization=true`,仍不代表 runtime 授權、審批、掃描、修復、部署、GitHub 主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | +| 安全合規前台入口角色對照 | S2.109 已在 `/security-compliance` 顯示 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口角色對照;`security_compliance_frontstage_route_role_count=5`、`security_compliance_frontstage_primary_source=iwooos`、`security_compliance_frontstage_execution_entry_count=0`、`security_compliance_frontstage_links_read_only=true`、`runtime_execution_authorized=false`、`active_runtime_gate_count=0`、`not_authorization=true`,仍不代表 runtime 授權、審批、掃描、修復、部署、GitHub 主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | | AwoooP approvals IwoooS owner response focus | S2.55 已把 S4.9-S4.12 owner response 下一個人工收件焦點放進 `/awooop/approvals` 只讀面板;received=0、accepted=0、active runtime gates=0、headline=58%、approval_record_created=false;仍不新增 approve、execute、deploy、primary switch、refs action 或 runtime gate | | AwoooP contracts IwoooS security contract candidate | S2.56 已把四個 security mirror contract refs 放進 `/awooop/contracts` 只讀面板;total contracts=36、ready=33、partial=2、active runtime gates=0、contract_publish_authorized=false;仍不發布 contract revision、不改 lifecycle、不寫 platform contracts API、不新增 action button | | AwoooP tenants IwoooS tenant scope candidate | S2.57 已把 AWOOOI first tenant、IwoooS security mirror、Kali 112 / Dev 168 / Dev 111 與 S4.9-S4.12 owner response waiting 放進 `/awooop/tenants` 只讀面板;host coverage=3、tenant policy changes=0、tenant_migration_mode_changed=false;仍不改 migration mode、不改 tenant policy、不寫 platform tenants API、不新增 action button | @@ -243,8 +244,9 @@ | S2.104 IwoooS S4.9 負責人回覆封套送件前結果分流 | framework detail | 0 | 只在 `/iwooos` 顯示 S4.9 負責人回覆封套送件前結果分流,呈現維持封套等待、要求補齊欄位、要求修正判定、隔離敏感證據、要求修正範圍、拒收變更要求、維持後續負責人等待七條分流;s4_9_owner_response_envelope_preflight_outcome_lane_count=7、s4_9_owner_response_envelope_preflight_ready_for_intake_count=0、s4_9_owner_response_envelope_preflight_quarantined_count=0、s4_9_owner_response_envelope_preflight_rejected_count=0、s4_9_owner_response_envelope_submitted_count=0、s4_9_owner_response_envelope_accepted_count=0、s4_9_owner_response_request_sent=false、s4_9_owner_response_received_count=0、s4_9_owner_response_accepted_count=0、owner_response_acceptance_gate_open=false、audit_events_emitted=0、progress_review_authorized=false、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把送件前結果分流當 request sent、owner response submitted / received / accepted、audit event emitted、人工批准、審批紀錄、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | | S2.105 IwoooS S4.9 負責人回覆送件請求草稿 | framework detail | 0 | 只在 `/iwooos` 顯示 S4.9 負責人回覆送件請求草稿,呈現收件範圍對應草稿、負責人收件對象草稿、脫敏證據參照草稿、禁止變更條款草稿、稽核事件範本草稿與人工送件閘門草稿六個草稿項;s4_9_owner_response_request_draft_item_count=6、s4_9_owner_response_request_draft_ready_count=0、s4_9_owner_response_request_dispatch_authorized=false、s4_9_owner_response_request_sent=false、s4_9_owner_response_request_sent_count=0、s4_9_owner_response_request_recipients_confirmed_count=0、s4_9_owner_response_request_audit_events_emitted=0、s4_9_owner_response_received_count=0、s4_9_owner_response_accepted_count=0、owner_response_acceptance_gate_open=false、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把送件請求草稿當 request sent、owner response received / accepted、audit event emitted、人工批准、審批紀錄、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | | S2.106 IwoooS S4.9 負責人回覆送件鏈路摘要 | framework detail | 0 | 只在 `/iwooos` 顯示 S4.9 負責人回覆送件鏈路摘要,將人工收件工作單、回覆封套欄位、送件前檢查、結果分流、送件請求草稿與人工送件閘門整理成六段專業只讀流程;s4_9_owner_response_dispatch_flow_step_count=6、s4_9_owner_response_dispatch_flow_current_step=request_draft、s4_9_owner_response_dispatch_flow_completed_count=0、s4_9_owner_response_dispatch_flow_blocked_count=0、s4_9_owner_response_request_sent=false、s4_9_owner_response_request_dispatch_authorized=false、s4_9_owner_response_received_count=0、s4_9_owner_response_accepted_count=0、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把送件鏈路摘要當 request sent、owner response received / accepted、audit event emitted、人工批准、審批紀錄、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | -| S2.107 前台安全合規 IwoooS 整合入口 | framework detail | 0 | 只保留 `/security-compliance` 並把它整合成 IwoooS 前台友善入口,讓前台使用者仍從安全合規看到既有安全監控與合規統計,IwoooS 則成為資安網總覽與唯一姿態來源;security_compliance_route_preserved=true、security_compliance_removed=false、security_compliance_integration_mode=iwooos_frontstage_bridge、iwooos_authoritative_security_entry=true、security_compliance_runtime_execution_authorized=false、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把前台入口整合當 runtime 授權、審批、掃描、修復、部署、blocking control、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | -| S2.108 IwoooS 前台資安入口角色分流 | framework detail | 0 | 只在 `/iwooos` 顯示前台資安入口角色分流,將 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口的使用情境與邊界說清楚;frontstage_security_entry_role_count=5、frontstage_security_primary_entry=iwooos、frontstage_security_familiar_entry=security_compliance、frontstage_security_execution_entry_count=0、frontstage_security_links_read_only=true、frontstage_security_action_buttons_allowed=false、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把入口角色分流當 runtime 授權、審批、掃描、修復、部署、blocking control、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | +| S2.107 前台安全合規 IwoooS 整合入口 | framework detail | 0 | 只保留 `/security-compliance` 並把它整合成 IwoooS 前台友善入口,讓前台使用者仍從安全合規看到既有安全監控與合規統計,IwoooS 則成為資安網總覽與唯一姿態來源;security_compliance_route_preserved=true、security_compliance_removed=false、security_compliance_integration_mode=iwooos_frontstage_bridge、iwooos_authoritative_security_entry=true、security_compliance_runtime_execution_authorized=false、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把前台入口整合當 runtime 授權、審批、掃描、修復、部署、硬性阻擋控制、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | +| S2.108 IwoooS 前台資安入口角色分流 | framework detail | 0 | 只在 `/iwooos` 顯示前台資安入口角色分流,將 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口的使用情境與邊界說清楚;frontstage_security_entry_role_count=5、frontstage_security_primary_entry=iwooos、frontstage_security_familiar_entry=security_compliance、frontstage_security_execution_entry_count=0、frontstage_security_links_read_only=true、frontstage_security_action_buttons_allowed=false、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把入口角色分流當 runtime 授權、審批、掃描、修復、部署、硬性阻擋控制、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | +| S2.109 安全合規前台入口角色對照 | framework detail | 0 | 只在 `/security-compliance` 顯示前台入口角色對照,讓熟悉安全合規入口的使用者也能看懂 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口用途;security_compliance_frontstage_route_role_count=5、security_compliance_frontstage_primary_source=iwooos、security_compliance_frontstage_execution_entry_count=0、security_compliance_frontstage_links_read_only=true、runtime_execution_authorized=false、active_runtime_gate_count=0、action_buttons_allowed=false、not_authorization=true,不把入口角色對照當 runtime 授權、審批、掃描、修復、部署、硬性阻擋控制、專案庫建立、分支 / 標籤參照同步、工作流程 / 機密設定修改、主要來源切換、Gitea 停用、Kali / SSH / 主機更新或執行期授權 | headline 進度要再往上,至少需要下列任一高層 gate 有實質 evidence: diff --git a/docs/security/SECURITY-SUPPLY-CHAIN-PROGRESS.md b/docs/security/SECURITY-SUPPLY-CHAIN-PROGRESS.md index a0978cf1..c592b9e4 100644 --- a/docs/security/SECURITY-SUPPLY-CHAIN-PROGRESS.md +++ b/docs/security/SECURITY-SUPPLY-CHAIN-PROGRESS.md @@ -28,7 +28,7 @@ python3 scripts/security/security-mirror-progress-guard.py ### 0.2 Headline 58% 不代表停滯 -近期 S4.10 請求包、範本狀態台帳、稽核事件範本、脫敏範例、收件檢查、收件預檢,S4.11 請求包 / 範本狀態台帳 / 稽核事件範本 / 脫敏範例 / 收件檢查 / 收件預檢,S4.12 請求包 / 範本狀態台帳 / 稽核事件範本 / 脫敏範例 / 收件檢查 / 收件預檢,S4.13 證據路由規則 / 顯示區塊 / 狀態轉移規則 / 審查清單 / 審查結果分流 / 審查稽核事件範本 / 審查稽核顯示區塊 / 審查稽核收件檢查 / 審查稽核脫敏範例 / 審查稽核保留規則 / 審查稽核保留檢查 / 審查稽核交接包 / 交接檢查 / 平行 Session 同步檢查 / 衝突分流 / 復原檢查 / 復原結果分流,S1.3 低摩擦非阻擋升級分流、S2.8 IwoooS 前端態勢入口,以及 S2.9-S2.108 IwoooS / AwoooP 資安投影契約都是有效進展,但它們是框架細節,不是負責人回覆、執行期閘門、生產匯入或 GitHub 主要來源就緒。因此整體百分比仍維持 58%,避免把只讀框架誤算成已落地執行。 +近期 S4.10 請求包、範本狀態台帳、稽核事件範本、脫敏範例、收件檢查、收件預檢,S4.11 請求包 / 範本狀態台帳 / 稽核事件範本 / 脫敏範例 / 收件檢查 / 收件預檢,S4.12 請求包 / 範本狀態台帳 / 稽核事件範本 / 脫敏範例 / 收件檢查 / 收件預檢,S4.13 證據路由規則 / 顯示區塊 / 狀態轉移規則 / 審查清單 / 審查結果分流 / 審查稽核事件範本 / 審查稽核顯示區塊 / 審查稽核收件檢查 / 審查稽核脫敏範例 / 審查稽核保留規則 / 審查稽核保留檢查 / 審查稽核交接包 / 交接檢查 / 平行 Session 同步檢查 / 衝突分流 / 復原檢查 / 復原結果分流,S1.3 低摩擦非阻擋升級分流、S2.8 IwoooS 前端態勢入口,以及 S2.9-S2.109 IwoooS / AwoooP 資安投影契約都是有效進展,但它們是框架細節,不是負責人回覆、執行期閘門、生產匯入或 GitHub 主要來源就緒。因此整體百分比仍維持 58%,避免把只讀框架誤算成已落地執行。 S2.50 也把「為什麼 58% 還不動」拆成五個可見 gate:owner response accepted、redacted payload ingestion、active runtime gate、GitHub primary ready、AwoooP read-only landing。這五個 gate 目前仍全部是 0 / false,所以 headline 不應被灌水提高。 @@ -171,6 +171,7 @@ S2.50 也把「為什麼 58% 還不動」拆成五個可見 gate:owner respons | S2.106 IwoooS S4.9 負責人回覆送件鏈路摘要 | 已完成草案,在 `/iwooos` 以專業摘要帶顯示工作單、封套、送件前檢查、結果分流、請求草稿、人工送件閘門六段鏈路,目前焦點=request draft、已送出=0、已接受=0;仍不把送件鏈路摘要當成 request sent、owner response received / accepted、audit event emitted、人工批准、主要來源切換或執行期閘門 | 0 | | S2.107 前台安全合規 IwoooS 整合入口 | 已完成草案,保留 `/security-compliance` 並新增前台整合說明;`/iwooos` 同步顯示「前台安全合規整合判定」,確認安全合規整合、不移除、runtime gate 0、action button 0;仍不把前台入口整合當成 runtime 授權、審批、掃描、修復、部署、主要來源切換或執行期閘門 | 0 | | S2.108 IwoooS 前台資安入口角色分流 | 已完成草案,在 `/iwooos` 顯示五個前台資安入口角色:IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals`;仍不把入口分流當成 runtime 授權、審批、掃描、修復、部署、主要來源切換或執行期閘門 | 0 | +| S2.109 安全合規前台入口角色對照 | 已完成草案,在 `/security-compliance` 顯示五個前台資安入口角色對照:IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals`;仍不把入口對照當成 runtime 授權、審批、掃描、修復、部署、主要來源切換或執行期閘門 | 0 | headline 要再往上,需要 S4.9 / S4.10 / S4.11 / S4.12 任一 owner response 收到並通過脫敏驗收,或人工批准後出現 active runtime gate、redacted payload ingestion、GitHub primary readiness 這類落地 evidence。 @@ -298,6 +299,7 @@ headline 要再往上,需要 S4.9 / S4.10 / S4.11 / S4.12 任一 owner respons | S2.106 IwoooS S4.9 負責人回覆送件鏈路摘要 | 完成草案 | `/iwooos` 新增 S4.9 負責人回覆送件鏈路摘要帶,以六段流程顯示人工收件工作單、回覆封套欄位、送件前檢查、結果分流、送件請求草稿、人工送件閘門,並把目前焦點固定為 request draft | 使用者與另一個 AwoooP Session 能用更專業的視覺摘要理解 S4.9 不是卡住,而是仍停在只讀送件前準備;送件鏈路摘要仍不是 request sent、owner response received / accepted、audit event emitted、人工批准、主要來源切換或執行期閘門 | | S2.107 前台安全合規 IwoooS 整合入口 | 完成草案 | `/security-compliance` 保留既有 SecurityPanel / CompliancePanel 頁籤並新增 IwoooS 前台整合說明;`/iwooos` 新增前台安全合規整合判定看板 | 專業判定是整合而非移除:安全合規維持前台熟悉入口,IwoooS 統一資安總覽與姿態來源;此整合仍不是 runtime 授權、審批、掃描、修復、部署、主要來源切換或執行期閘門 | | S2.108 IwoooS 前台資安入口角色分流 | 完成草案 | `/iwooos` 新增前台資安入口角色分流看板,列出 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口 | 使用者能快速理解每個資安入口該看什麼:總覽、熟悉入口、事件、合規統計、人控等待;此分流仍不是 runtime 授權、審批、掃描、修復、部署、主要來源切換或執行期閘門 | +| S2.109 安全合規前台入口角色對照 | 完成草案 | `/security-compliance` 新增前台入口角色對照,列出 IwoooS、`/security-compliance`、`/security`、`/compliance`、`/awooop/approvals` 五個入口 | 使用者從熟悉的安全合規入口進來時,也能快速理解哪裡看總覽、哪裡看事件、哪裡看統計、哪裡看人控等待;此對照仍不是 runtime 授權、審批、掃描、修復、部署、主要來源切換或執行期閘門 | | S3 approval gate | 進行中 | `security_approval_gate_v1` 已建立 8 個人工 gate items:7 pending、1 block candidate、0 approved | 不得繞過人工批准;批准後仍需 follow-up runtime gate | | S3.0 人工批准 Gate 契約 | 完成草案 | 定義批准範圍、決策選項、required reviewers、still forbidden 與 follow-up runtime gate | AwoooP 可記錄決策,不可執行 gate item | | S3.1 人工決策紀錄契約 | 完成草案 | `security_approval_decision_record_v1` 已建立;目前 0 筆 decision records、0 個 runtime action 授權 | AwoooP 可稽核決策,不可把決策當執行 | diff --git a/docs/security/security-mirror-status-rollup.snapshot.json b/docs/security/security-mirror-status-rollup.snapshot.json index cf28be06..f4332201 100644 --- a/docs/security/security-mirror-status-rollup.snapshot.json +++ b/docs/security/security-mirror-status-rollup.snapshot.json @@ -1766,6 +1766,18 @@ "runtime_delta": false, "execution_authorized": false, "not_authorization": true + }, + { + "delta_id": "s2_109_security_compliance_frontstage_route_role_map", + "display_order": 138, + "completed_stage": "S2.109 安全合規前台入口角色對照", + "progress_axis": "framework_detail", + "headline_percent_delta": 0, + "framework_delta_visible": true, + "why_headline_unchanged": "安全合規只新增前台入口角色對照,讓使用者從 /security-compliance 也能看懂 IwoooS、/security-compliance、/security、/compliance、/awooop/approvals 五個入口各自用途;security_compliance_frontstage_route_role_count=5、security_compliance_frontstage_primary_source=iwooos、security_compliance_frontstage_execution_entry_count=0、security_compliance_frontstage_links_read_only=true、runtime_execution_authorized=false、active_runtime_gate_count=0,不把入口對照當 runtime 授權、審批、掃描、修復、部署、專案庫建立、refs sync、workflow 修改、GitHub primary 切換或 Gitea 停用。", + "runtime_delta": false, + "execution_authorized": false, + "not_authorization": true } ], "next_safe_actions": [ @@ -2650,6 +2662,22 @@ "從前台入口角色分流呼叫 Kali、開 SSH、更新主機、切 GitHub 主要來源、停用 Gitea 或收機密明文值" ] }, + { + "action_id": "show_security_compliance_frontstage_route_role_map", + "title": "安全合規顯示前台入口角色對照", + "mode": "observe", + "source_contract": "iwooos_posture_projection_v1", + "allowed_processing": [ + "在 /security-compliance 顯示 S2.109 前台入口角色對照", + "讓使用者從安全合規頁直接理解 IwoooS、/security-compliance、/security、/compliance、/awooop/approvals 五個入口各自用途", + "固定安全合規入口只做只讀導覽與理解成本收斂,security_compliance_frontstage_execution_entry_count=0、action_buttons_allowed=false、runtime_execution_authorized=false" + ], + "blocked_processing": [ + "把安全合規入口角色對照當成 runtime 授權、審批、掃描、修復、部署或硬性阻擋控制", + "從安全合規入口角色對照建立專案庫、改可見性、同步 / 刪除 / 強制推送 refs,或修改工作流程 / 機密設定", + "從安全合規入口角色對照呼叫 Kali、開 SSH、更新主機、切 GitHub 主要來源、停用 Gitea 或收機密明文值" + ] + }, { "action_id": "enforce_traditional_chinese_security_surface_wording", "title": "IwoooS / AwoooP 資安可視區塊維持繁體中文呈現", diff --git a/scripts/security/security-mirror-progress-guard.py b/scripts/security/security-mirror-progress-guard.py index 798f9a05..ad1fcee3 100755 --- a/scripts/security/security-mirror-progress-guard.py +++ b/scripts/security/security-mirror-progress-guard.py @@ -360,6 +360,7 @@ def validate(root: Path) -> None: "s2_106_iwooos_s49_owner_response_dispatch_flow_board", "s2_107_security_compliance_iwooos_frontstage_bridge", "s2_108_iwooos_frontstage_security_entry_roles", + "s2_109_security_compliance_frontstage_route_role_map", ] assert_equal( "progress_delta_ledger.delta_ids", @@ -624,6 +625,11 @@ def validate(root: Path) -> None: [item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)], "show_iwooos_frontstage_security_entry_roles", ) + assert_contains( + "rollup.next_safe_actions.action_ids", + [item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)], + "show_security_compliance_frontstage_route_role_map", + ) assert_contains( "rollup.next_safe_actions.action_ids", [item["action_id"] for item in rollup["next_safe_actions"] if isinstance(item, dict)], @@ -7998,6 +8004,11 @@ def validate(root: Path) -> None: security_compliance_page, "SecurityComplianceFrontStage", ) + assert_text_contains( + "security_compliance_page.frontstage_route_role_map_testid", + security_compliance_page, + 'data-testid="security-compliance-frontstage-route-role-map"', + ) assert_text_contains( "iwooos_page.security_compliance_frontstage_testid", iwooos_projection_page, @@ -8028,6 +8039,17 @@ def validate(root: Path) -> None: iwooos_projection_page, text, ) + for text in [ + "security_compliance_frontstage_route_role_count=5", + "security_compliance_frontstage_primary_source=iwooos", + "security_compliance_frontstage_execution_entry_count=0", + "security_compliance_frontstage_links_read_only=true", + ]: + assert_text_contains( + "security_compliance_page.frontstage_route_role_boundary", + security_compliance_page, + text, + ) for text in [ "secret_value_collection_allowed=false", "repo_creation_authorized=false", @@ -8051,7 +8073,19 @@ def validate(root: Path) -> None: list(web_messages_en.keys()), "securityCompliance", ) - for key in ["eyebrow", "title", "subtitle", "openIwooos", "boundaryTitle", "boundaryIntro", "items"]: + for key in [ + "eyebrow", + "title", + "subtitle", + "openIwooos", + "boundaryTitle", + "boundaryIntro", + "routeRoleTitle", + "routeRoleSubtitle", + "routeLabel", + "items", + "routeRoles", + ]: assert_contains( "web_messages.zh-TW.securityCompliance.frontStage.keys", list(web_messages_zh["securityCompliance"]["frontStage"].keys()), @@ -8073,6 +8107,23 @@ def validate(root: Path) -> None: list(web_messages_en["securityCompliance"]["frontStage"]["items"].keys()), key, ) + for key in [ + "iwooosOverview", + "securityComplianceHub", + "securityMonitor", + "complianceStats", + "awooopApprovals", + ]: + assert_contains( + "web_messages.zh-TW.securityCompliance.frontStage.routeRoles", + list(web_messages_zh["securityCompliance"]["frontStage"]["routeRoles"].keys()), + key, + ) + assert_contains( + "web_messages.en.securityCompliance.frontStage.routeRoles", + list(web_messages_en["securityCompliance"]["frontStage"]["routeRoles"].keys()), + key, + ) assert_contains( "web_messages.zh-TW.iwooos.securityComplianceFrontStage", list(web_messages_zh["iwooos"].keys()),