feat(aiops): normalize multi-signal alert cards
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m37s
CD Pipeline / build-and-deploy (push) Successful in 5m11s
CD Pipeline / post-deploy-checks (push) Has been cancelled
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m37s
CD Pipeline / build-and-deploy (push) Successful in 5m11s
CD Pipeline / post-deploy-checks (push) Has been cancelled
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
This commit is contained in:
@@ -1,3 +1,46 @@
|
||||
## 2026-06-18|Telegram AIOps 多訊號事件包覆蓋
|
||||
|
||||
**背景**:統帥指出 110 CPU 滿載、orphan Chrome、CI build/test 負載這類問題不應靠人工臨場判讀;AWOOOI / AwoooP / IwoooS 必須把監控、告警、PlayBook、KM、修復候選與 verifier 接成真正 AI 自動化產品。既有 host / runner CPU 告警已可轉成 `ai_automation_alert_card_v1`,本段把同一個最後出口規格擴展到 Wazuh、Kali、Nginx drift、Backup / Restore / Escrow、Provider freshness 與 Supply-chain drift。
|
||||
|
||||
**完成內容**:
|
||||
- `TelegramGateway.normalize_alert_notification_payload()` 新增非 host 類 AIOps signal formatter;`send_alert_notification()`、`send_text()` 與 `_send_request("sendMessage", ...)` 最後出口都會套用,避免 raw signal 直接洗 Telegram。
|
||||
- 新增事件類型與 AI lane 映射:
|
||||
- `wazuh_intrusion_signal` → `security_intrusion_triage`
|
||||
- `kali_assessment_signal` → `security_assessment_review`
|
||||
- `nginx_config_drift` → `public_gateway_config_drift`
|
||||
- `backup_restore_escrow_signal` → `backup_restore_escrow_triage`
|
||||
- `provider_freshness_signal` → `source_provider_freshness_triage`
|
||||
- `supply_chain_drift` → `supply_chain_drift_review`
|
||||
- 所有新卡片都固定顯示 `candidate_only / runtime_write_gate=0`,並把下一步導向 owner evidence、reviewer acceptance、rendered diff / freshness / restore / SIEM readback、KM / PlayBook / Verifier 沉澱。
|
||||
- 新增 Telegram 最後出口脫敏:URL、內網 IP、絕對路徑、Bearer token、token / password / secret / api key 類 assignment 會從 Top evidence 移除或遮罩。
|
||||
- `docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md` 已補多訊號 AI 事件包契約,明確禁止把 Telegram 送達、UI 可見、route 200 或 raw alert 當 runtime 授權。
|
||||
|
||||
**邊界**:
|
||||
- 這是 formatter / product contract / test 覆蓋,不是 live Wazuh block、Kali active scan、`nginx -t`、Nginx reload、backup / restore、remote delete、provider switch、package upgrade、workflow dispatch、Telegram 實發、host write 或 production write。
|
||||
- 新事件包只建立候選、Gate、Verifier 與 Learning 語義;runtime execution、action button、owner response received / accepted 仍全部維持 `0 / false`。
|
||||
|
||||
**Telegram Gateway 橙區審查**:
|
||||
- 變更必要性:CPU / CI / Wazuh / Nginx / backup / provider / supply-chain 類告警若只貼 raw log,仍需要人工臨場判讀,無法成為 AI 自動化產品入口。
|
||||
- 影響範圍:只修改 Telegram 最後出口 formatter;不改 Bot token、chat routing、callback handler、approval button、webhook、outbound mirror、send API 或 secrets。
|
||||
- 替代方案:可只更新文件或只做前端 readback,但 raw signal 仍會在送出時外洩路徑 / 內網 / token 片段,因此必須在最後出口加防護。
|
||||
- 風險緩解:host formatter 優先順序不變;非 host formatter 需要同時命中 source token 與 gate token,降低一般通知被誤轉卡片的機率。
|
||||
- 回滾計畫:回退 `feat(aiops): normalize multi-signal alert cards` 即可恢復既有 host-only formatter。
|
||||
- 測試覆蓋:新增 Wazuh、Nginx、backup、provider freshness、supply-chain、Kali 與最後出口測試;rebase 後 targeted suite `71 passed`。
|
||||
|
||||
**驗證**:
|
||||
- `/Users/ogt/.pyenv/shims/python3.11 -m py_compile apps/api/src/services/telegram_gateway.py apps/api/tests/test_telegram_message_templates.py`:通過。
|
||||
- `DATABASE_URL='postgresql+asyncpg://test:test@localhost/test' /Users/ogt/.pyenv/shims/python3.11 -m pytest apps/api/tests/test_telegram_message_templates.py -q`:`71 passed`。
|
||||
- `git diff --check`:通過。
|
||||
- `python3 scripts/ops/doc-secrets-sanity-check.py docs .gitea`:`DOC_SECRET_SANITY_OK scanned_files=912`。
|
||||
- `python3 scripts/security/source-control-owner-response-guard.py --root .`:`SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`。
|
||||
- `python3 scripts/security/security-mirror-progress-guard.py --root .`:`SECURITY_MIRROR_PROGRESS_GUARD_OK`。
|
||||
- `python3 scripts/security/public-frontend-env-guard.py --root .`:`violations=0 / runtime_gate=0`。
|
||||
|
||||
**完成度同步**:
|
||||
- Telegram AIOps 多訊號事件包覆蓋:本地 `100%`,待正式部署驗證後更新 production readback。
|
||||
- AI 自動化告警產品化:host / runner 已落地;本段補 Wazuh / Kali / Nginx / backup / provider freshness / supply-chain 最後出口卡片,仍需接入 AwoooP Run / Work Item / KM / PlayBook live readback。
|
||||
- IwoooS headline 仍維持 `64%`,active runtime gate 仍 `0`。
|
||||
|
||||
## 2026-06-18|Telegram 主機資源 raw dump 最後出口補洞
|
||||
|
||||
**背景**:統帥貼出 `15:11:26` 的 Telegram raw CPU / root Node.js / Prisma JSON dump,指出這類訊息既難讀又會把內部路徑、套件命令與外部檢查 endpoint 暴露到戰情室。前一段 formatter 已覆蓋 `send_alert_notification()` 與 `send_text()`,但應用內仍可能有人直接呼叫 `TelegramGateway._send_request("sendMessage", payload)`,因此需要把 `_send_request` 也升級成最後出口防線。
|
||||
|
||||
@@ -69,6 +69,20 @@ Host / runner 資源告警的第一版落地:
|
||||
- build 壓力會分流到 `runner_build_resource_pressure`;Prisma / package install 壓力會分流到 `runner_prisma_generate_resource_pressure`;預設都是 `candidate_only / runtime_write_gate=0`。
|
||||
- 這只建立 AI 候選與判讀入口,不代表允許 kill process、restart 服務、改 Nginx、改 firewall 或執行 Kali active scan。
|
||||
|
||||
非 host 維運 / 資安訊號的第一版落地:
|
||||
|
||||
- `TelegramGateway.send_alert_notification()` 與 `send_text()` 現在也會把 Wazuh、Kali、Nginx drift、Backup / Restore / Escrow、Provider freshness、Supply-chain drift 類訊號轉成同一版 `ai_automation_alert_card_v1`。
|
||||
- 事件類型固定映射:
|
||||
- `wazuh_intrusion_signal` → `security_intrusion_triage`
|
||||
- `kali_assessment_signal` → `security_assessment_review`
|
||||
- `nginx_config_drift` → `public_gateway_config_drift`
|
||||
- `backup_restore_escrow_signal` → `backup_restore_escrow_triage`
|
||||
- `provider_freshness_signal` → `source_provider_freshness_triage`
|
||||
- `supply_chain_drift` → `supply_chain_drift_review`
|
||||
- 所有上述卡片都必須顯示 `candidate_only / runtime_write_gate=0`,並把下一步導向 owner evidence、reviewer acceptance、rendered diff / freshness / restore / SIEM readback、KM / PlayBook / Verifier 沉澱。
|
||||
- formatter 會在 Telegram 最後出口脫敏 URL、內網 IP、絕對路徑、Bearer token、token / password / secret / api key 類 assignment;Top evidence 最多保留三行摘要。
|
||||
- 這只把 raw signal 變成 AI 自動化候選,不代表允許 Wazuh 封鎖、Kali active scan、`nginx -t` / reload、backup / restore / remote delete、provider switch、package upgrade、workflow dispatch 或 production write。
|
||||
|
||||
Host / runner 告警卡片必須採用下列第一屏版型:
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user