101 lines
4.8 KiB
Markdown
101 lines
4.8 KiB
Markdown
# IwoooS 前端資安態勢投影契約
|
||
|
||
| 項目 | 內容 |
|
||
|------|------|
|
||
| 日期 | 2026-05-19 |
|
||
| 狀態 | 草案 |
|
||
| Schema | `docs/schemas/iwooos_posture_projection_v1.schema.json` |
|
||
| Snapshot | `docs/security/iwooos-posture-projection.snapshot.json` |
|
||
| 模式 | `mirror_only` |
|
||
| runtime 執行授權 | `false` |
|
||
|
||
## 1. 目的
|
||
|
||
`iwooos_posture_projection_v1` 定義 IwoooS 如何把既有資安網資料投影到前端。
|
||
|
||
它只允許顯示資安態勢、headline progress、framework / runtime landing、non-blocking lanes、evidence refs 與下一個高層 gate。它不是掃描器、不是修復器、不是 approval gate,也不是 GitHub primary cutover 授權。
|
||
|
||
## 2. 來源
|
||
|
||
IwoooS 首版只讀取或對齊以下已提交 evidence:
|
||
|
||
| 來源 | 用途 |
|
||
|------|------|
|
||
| `security_mirror_status_rollup_v1` | 58% headline、36 contracts、0 active runtime gates、下一個高層 gate |
|
||
| `security_rollout_policy_v1` | 7 條 low-friction non-blocking lanes |
|
||
| `source_control_owner_response_validation_rollup_v1` | owner response 仍為 0、S4.9 下一個收件候選 |
|
||
| `kali_integration_status_v1` | Kali 112 observe-only 整合態勢 |
|
||
| `/iwooos` 前端路由 | 顯示入口,不提供執行按鈕 |
|
||
| 既有前端資安頁面 | 只讀索引,不搬移原頁責任邊界、不新增執行控制 |
|
||
|
||
## 3. 前端可顯示
|
||
|
||
1. Security Posture / Exposure 入口。
|
||
2. 58% headline progress 與框架 / runtime landing 判讀。
|
||
3. 36 個主要契約、33 ready、2 partial、1 contract-only、0 blocked。
|
||
4. 0 active runtime gates。
|
||
5. Exposure、source-control、Kali 112、approval boundary 四個面向。
|
||
6. 7 條 non-blocking lanes。
|
||
7. evidence refs 與下一個高層 gate。
|
||
8. 10 個既有前端資安相關頁面索引。
|
||
9. 4 個前端資安責任面與 5 個重疊 / 衝突控制。
|
||
|
||
## 3.1 既有前端資安頁面整合
|
||
|
||
S2.10 將前端原本已存在的資安相關頁面收進 IwoooS,只作為 route / source / read-only mode 索引。
|
||
|
||
| Route | 來源 | IwoooS 呈現 |
|
||
|-------|------|-------------|
|
||
| `/security-compliance` | `SecurityPanel` / `CompliancePanel` | 安全合規整合頁 |
|
||
| `/security` | `apps/web/src/app/[locale]/security/page.tsx` | 既有安全監控頁 |
|
||
| `/compliance` | `apps/web/src/app/[locale]/compliance/page.tsx` | 既有合規頁 |
|
||
| `/alerts` | `useIncidents` / `IncidentCard` | 告警管理 |
|
||
| `/errors` | `ErrorsPanel` | 錯誤與 UX 稽核 |
|
||
| `/authorizations` | `LiveApprovalPanel` | HITL / multi-sig 授權中心 |
|
||
| `/governance` | Governance tabs | AI 治理中樞 |
|
||
| `/alert-operation-logs` | Alert operation log page | 告警操作稽核 |
|
||
| `/awooop/approvals` | AwoooP approvals page | AwoooP 審批佇列 |
|
||
| `/code-review` | Code Review page | AI Code Review 控制面 |
|
||
|
||
這些 route 仍保留原本功能與 owner 邊界;IwoooS 只提供可見索引,不把任何頁面升級成 scan、execute、repair、blocking gate、deploy approval 或 runtime authorization。
|
||
|
||
## 3.2 覆蓋與邊界矩陣
|
||
|
||
S2.11 將 10 個既有前端資安頁面分成四個責任面,讓使用者看懂「訊號在哪裡、人工控制在哪裡、治理稽核在哪裡、工程審查在哪裡」。
|
||
|
||
| 責任面 | Route | 邊界 |
|
||
|--------|-------|------|
|
||
| 訊號與暴露面 | `/security-compliance`、`/security`、`/compliance`、`/alerts`、`/errors` | 顯示風險、事件、錯誤、UX audit 與合規訊號,不把 observation 直接升 blocking |
|
||
| 人工控制邊界 | `/authorizations`、`/awooop/approvals` | 顯示 HITL / multi-sig / AwoooP approvals;不等於資安 runtime gate 已批准 |
|
||
| 治理與稽核 | `/governance`、`/alert-operation-logs` | 顯示治理事件、SLO、補救佇列與操作日誌;audit event 不是執行授權 |
|
||
| 工程審查 | `/code-review` | 顯示 AI Code Review pipeline;review 結果可產生 follow-up,不等於 deploy approval |
|
||
|
||
重疊 / 衝突控制:
|
||
|
||
1. IwoooS 保留原 route owner,不搬移資料寫入權。
|
||
2. 覆蓋矩陣不得升級成 runtime gate。
|
||
3. Code Review link 不等於 deploy approval。
|
||
4. AwoooP approval 狀態不等於資安 approval decision record。
|
||
5. 前端索引不得呼叫 Kali active scan 或 `/execute`。
|
||
|
||
## 4. 仍禁止
|
||
|
||
IwoooS 不得提供下列輸出:
|
||
|
||
1. scan / execute / repair button。
|
||
2. repo creation、visibility change、refs sync / delete / force push。
|
||
3. workflow / webhook / runner / deploy key / branch protection / repository secret 修改。
|
||
4. GitHub primary switch 或 Gitea disable。
|
||
5. production deploy 或 runtime enforcement。
|
||
6. 把 58% progress、contract count、mirror readiness 或前端可見狀態當成授權。
|
||
|
||
## 5. 驗證
|
||
|
||
只讀驗證:
|
||
|
||
```text
|
||
python3 scripts/security/security-mirror-progress-guard.py
|
||
```
|
||
|
||
這個 guard 會確認 IwoooS 投影與 rollup / rollout policy 對齊,且 `runtime_execution_authorized=false`、`action_buttons_allowed=false`、`not_authorization=true`。
|