Files
awoooi/docs/security/MONITORING-OWNER-REQUEST-DRAFT.md

128 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IwoooS Monitoring / Alerting / Observability owner request draft
| 項目 | 內容 |
|------|------|
| 日期 | 2026-06-14 |
| 狀態 | `owner_request_draft_ready_not_dispatched` |
| 工具 | `scripts/security/monitoring-owner-request-draft.py` |
| Snapshot | `docs/security/monitoring-owner-request-draft.snapshot.json` |
| Source inventory | `docs/security/monitoring-alerting-observability-inventory.snapshot.json` |
| runtime gate | `0` |
## 1. 目的
本文件把 Monitoring / Alerting / Observability repo-only 清冊中的 60 個 surface 轉成人工送件前 owner request draft讓 Prometheus、Alertmanager、Grafana、SigNoz、Sentry、Langfuse、OTEL、Telegram / notification policy、deploy / reload script 與 alert chain smoke script 都有一致的 owner 回覆欄位。
本階段仍是 metadata-only request draft不連 live Prometheus、不 reload Alertmanager、不套用 Grafana / SigNoz、不部署 Sentry、不改 Langfuse、不 reload OTEL、不改 receiver route、不建立 silence、不送 Telegram、不 fire live alert、不跑 alert chain smoke、不 SSH、不 kubectl、不讀 secret value、不寫 production。
## 2. 摘要
| 指標 | 目前值 | 說明 |
|------|--------|------|
| request draft | `60` | 全部由 committed monitoring inventory surface 轉換 |
| write-capable request draft | `11` | 可能 reload、deploy、send notification、fire alert 或 restart exporter 的 surface |
| live evidence required request | `60` | 每份 request 都需要 owner 提供脫敏 live evidence ref |
| request field | `24` | 每份草稿固定欄位數 |
| required owner field | `14` | owner 必須補齊的欄位數 |
| blocked action | `24` | 驗收前全部禁止 |
| request sent / recipient confirmed | `0 / 0` | 尚未送件,收件人也未確認 |
| owner response received / accepted | `0 / 0` | 不得假性拉高 |
| live evidence received | `0` | 未收到 live config hash、receiver diff 或 route smoke proof |
| reload / receiver / route smoke accepted | `0 / 0 / 0` | 未授權 reload、receiver route change 或 live smoke |
| runtime gate / action button | `0 / 0` | 不開任何執行入口 |
## 3. Request Draft 類型
| 類型 | 範圍 | 目前邊界 |
|------|------|----------|
| Prometheus config / rules | base config、remote write、generated target、service registry、alert rules、drift guard | 只收 owner ref不 reload、不 remote write change |
| Alertmanager receiver | route、receiver、grouping source | 只收 receiver owner / diff ref不改 receiver、不 reload |
| Grafana dashboard / rules | dashboard JSON、alert rule | 只收 dashboard owner / rollback ref不 import、不 apply |
| SigNoz / OTEL | alert rule、log rule、API client、collector config | 只收 pipeline owner / data export boundary不 apply、不 reload |
| Sentry / Langfuse | compose、deploy、webhook receiver、API client、runbook | 只收 live hash / upgrade window不 deploy、不 restart |
| Telegram / notification | gateway service、failure-only policy、notification matrix、recurrence notifier | 只收 receiver / receipt / noise budget owner不送訊息 |
| deploy / reload scripts | Alertmanager、Prometheus、Sentry、exporter deploy 或 reload-capable script | 只建立 request draft不執行腳本 |
| alert smoke | live alert、test alert、alert chain smoke | 只收 allowed receiver、execution window、cleanup owner不 fire alert |
## 4. Owner 必填欄位
| 欄位 | 說明 |
|------|------|
| `owner_role_or_team` | 負責角色或團隊 |
| `decision` | owner 對此 surface 的判定 |
| `decision_reason` | 決策理由摘要,不得包含機敏值 |
| `affected_scope` | 受影響的 monitoring / notification / product scope |
| `redacted_evidence_refs` | 脫敏 evidence id、文件路徑、ticket id 或 hash |
| `live_config_hash_ref` | 脫敏 live config hash 或 owner-provided ref |
| `reload_owner` | reload / deploy decision owner |
| `receiver_owner` | receiver / route / receipt owner |
| `route_smoke_plan` | route smoke 或 receipt proof 計畫 |
| `maintenance_window` | 維護窗口或禁止窗口 |
| `rollback_owner` | rollback 負責人與 rollback ref |
| `validation_plan` | 驗證與 post-check plan |
| `noise_budget_owner` | 告警噪音、silence、dedup 與測試通知負責人 |
| `followup_owner` | 後續補件或決策負責人 |
## 5. 禁止動作
```text
prometheus_reload
alertmanager_reload
grafana_dashboard_apply
signoz_rule_apply
sentry_deploy
langfuse_config_change
otel_collector_reload
receiver_route_change
silence_policy_change
telegram_send
notification_route_change
webhook_receiver_change
remote_write_change
exporter_deploy
live_alert_fire
alert_chain_smoke
ssh_read
ssh_write
kubectl_action
secret_value_collection
host_write
active_scan
production_write
runtime_gate_open
```
## 6. 指令
固定 committed snapshot 時間:
```bash
python3 scripts/security/monitoring-owner-request-draft.py \
--root . \
--inventory-report docs/security/monitoring-alerting-observability-inventory.snapshot.json \
--output docs/security/monitoring-owner-request-draft.snapshot.json \
--generated-at 2026-06-14T23:25:00+08:00
```
只讀 guard
```bash
python3 scripts/security/security-mirror-progress-guard.py --root .
python3 scripts/security/source-control-owner-response-guard.py --root .
```
## 7. 完成度
| 工作 | 完成度 | 說明 |
|------|--------|------|
| owner request draft artifact | `100%` | 60 份 request draft 已由 committed inventory 產生 |
| request dispatch | `0%` | 尚未送件recipient 未確認 |
| owner response received / accepted | `0%` | 尚未收到或接受任何 owner response |
| live evidence collection | `0%` | 未讀 live monitoring stack |
| reload / receiver / route smoke acceptance | `0%` | 未授權、未執行 |
| runtime / production write | `0%` | 無 action button無 production write |
## 8. 邊界
這份 owner request draft 不是資安批准、不是 runtime approval、不是 alert chain smoke proof也不是 live monitoring truth。不得把 request draft、snapshot、IwoooS UI、AwoooP approval、LOGBOOK 或 committed source visibility 解讀成 Prometheus reload、Alertmanager reload、Grafana import、SigNoz apply、Sentry deploy、Langfuse change、OTEL reload、receiver route change、silence change、Telegram send、live alert fire、alert chain smoke、SSH、kubectl、active scan、secret collection、host write 或 production write 授權。