6.3 KiB
Telegram 通知出口治理清冊
| 項目 | 內容 |
|---|---|
| 日期 | 2026-06-18 |
| 狀態 | inventory_ready_no_runtime_action |
| 工具 | scripts/security/telegram-notification-egress-inventory.py |
| Snapshot | docs/security/telegram-notification-egress-inventory.snapshot.json |
| 模式 | repo-only scan;不讀 secret、不送 Telegram、不改 workflow / script |
| runtime gate | 0 |
1. 目的
TelegramGateway 已經把 send_alert_notification()、send_text() 與 _send_request("sendMessage", ...) 收斂到最後出口 formatter,能把主機資源壓力、Wazuh、Kali、Nginx drift、Backup / Restore / Escrow、Provider freshness 與 supply-chain drift 轉成 ai_automation_alert_card_v1。
目前 repo source 已讀回 0 個 direct Telegram Bot API sendMessage call site。這份清冊保留為防回歸 evidence:若 workflow、ops script 或 API path 再直接呼叫 Bot API,會被視為可能繞過 TelegramGateway formatter、dedup、outbound mirror、KM / PlayBook / Verifier 沉澱與 no-false-green gate 的治理 surface。
此清冊只建立 metadata-only evidence,不代表允許 live Telegram send、workflow 修改、script 修改、secret 讀取或 production write。
2. 固定數字
| 指標 | 數值 | 解讀 |
|---|---|---|
scanned_file_count |
637 |
掃描 .gitea/workflows、scripts/ops、scripts/ci、apps/api/src |
direct_bot_api_file_count |
0 |
目前沒有檔案直接呼叫 Bot API |
direct_bot_api_call_count |
0 |
直接 sendMessage call site 總數 |
workflow_direct_bot_api_call_count |
0 |
Gitea workflow 直送 Telegram |
ops_script_direct_bot_api_call_count |
0 |
ops script 直送 Telegram fallback |
api_direct_bot_api_call_count |
0 |
API direct path 直送 Telegram |
gateway_normalized_callsite_count |
57 |
已進入 TelegramGateway / final-exit formatter 的 call site |
gateway_final_exit_formatter_present_count |
1 |
normalize_telegram_send_message_payload() 已存在 |
required_owner_field_count |
18 |
收斂前需要 owner 補齊的欄位 |
reviewer_check_count |
14 |
reviewer 必檢規則 |
outcome_lane_count |
9 |
收件結果分流 |
blocked_action_count |
22 |
清冊階段明確禁止動作 |
所有 owner_response_received / accepted、formatter convergence accepted、delivery receipt accepted、Telegram send、Bot API call、workflow modification、script modification、secret collection、raw payload storage、production write、runtime gate 與 action button 都維持 0 / false。
3. 目前 direct Bot API surface
| 類別 | Call count | 代表路徑 |
|---|---|---|
| Gitea workflow | 0 |
無 |
| Ops script | 0 |
無 |
| API direct path | 0 |
無 |
若未來任何路徑直接呼叫 Bot API sendMessage,就必須被視為通知出口治理 surface:需有 owner、訊息形狀、redaction、formatter convergence、delivery receipt 與 no-false-green 驗收,並優先回到 AWOOI Alertmanager webhook 或 TelegramGateway final-exit formatter。
4. Owner 必填欄位
每個 direct Bot API surface 收斂前至少需要:
egress_surface_idowner_role_or_teamrouting_purposecurrent_sendertarget_chat_routemessage_shape_contractredaction_contractformatter_convergence_plandelivery_receipt_refdedup_or_fingerprint_planfallback_or_degraded_modemigration_or_exception_reasonmaintenance_windowrollback_ownerpostcheck_evidence_refno_secret_value_attestationno_raw_payload_attestationno_false_green_attestation
所有 evidence 只能是脫敏 ref、commit、run id、job id、artifact pointer 或收件編號;不得貼 Bot token、chat secret、secret hash、partial token、原始訊息 payload、未脫敏 workflow log 或工作視窗內容。
5. Reviewer checks
Reviewer 必須確認:
- direct Bot API surface 已列入 snapshot,不能只靠
rg手工看過。 - owner role / target route / routing purpose 明確。
- 訊息形狀要收斂成
ai_automation_alert_card_v1或有明確例外理由。 - redaction contract、formatter convergence path 與 delivery receipt metadata 存在。
- fallback mode 不會把 raw payload、完整路徑、內網 IP、secret、工作視窗內容或個人 namespace 送出去。
- workflow / script / API 修改需另走 owner approval 與維護窗口。
- 清冊本身沒有送 Telegram、沒有 dispatch workflow、沒有讀 secret。
- 不把 route
200、CD success、UI 可見或 Telegram 送達當成 AI 自動化閉環完成。
6. Outcome lanes
| Lane | 說明 |
|---|---|
waiting_owner_response |
尚未收到 owner 回覆;所有 accepted / runtime count 維持 0 |
request_owner_route_supplement |
缺 owner、target route 或 routing purpose |
request_formatter_convergence_plan |
缺 formatter convergence 或例外理由 |
request_redaction_contract |
缺 redaction / no-raw-payload attestation |
request_delivery_receipt_metadata |
缺 delivery receipt metadata 或 dedup / fingerprint plan |
quarantine_secret_or_raw_payload |
收到 secret value、raw payload、raw log 或未脫敏截圖時隔離 |
reject_false_green_claim |
把 route 200、CD success、UI 可見或 Telegram 送達當驗收時拒收 |
ready_for_notification_egress_review |
metadata 合格後進 reviewer review |
waiting_runtime_gate |
即使 reviewer accepted,runtime send / workflow modification 仍需獨立批准 |
7. 禁止動作
此清冊階段明確禁止 Telegram 實發、Bot API call、workflow 修改、未批准 script 修改、secret value / hash / partial token / chat id 收集、保存 raw message payload、保存未脫敏 workflow log、改 chat route、改 Bot token、rotate secret、workflow dispatch、production deploy、把 route 200 / CD success / UI 可見當通知驗收、跳過 formatter convergence、跳過 redaction review、開 runtime gate 或新增 action button。
8. 下一步
- 維持 no-new-bypass guard,確保 direct egress baseline 保持
0。 - 把 TelegramGateway / AwoooP outbound receipt 接到 KM / PlayBook learning writeback readback。
- 若未來新增 direct endpoint,必須先進 owner request、migration plan、acceptance ledger 與 post-check;不得用本清冊直接改 workflow 或送 Telegram。