# Wazuh Agent Visibility Owner Evidence 收件預檢

> 狀態：source-side preflight ready。這不是 owner evidence received、不是 accepted、不是 runtime authorization。

## 目的

Wazuh 用戶端消失事故不能用 Dashboard 畫面、代理服務在線、TCP 連線存在或口頭宣稱結案。IwoooS 需要的是 Wazuh manager registry 的脫敏計數與時間窗，才能判斷代理清單是否真的恢復。

本預檢定義 owner 要提供的欄位、reviewer 要檢查的項目、拒收分流與禁止 payload。它不查 Wazuh、不 SSH、不讀 secret、不保存 raw log、不啟用 active response，也不開任何主機寫入。

## 必要欄位

- `owner_role`
- `team`
- `decision`
- `decision_reason`
- `affected_scope`
- `collection_method`
- `agent_total`
- `agent_active`
- `agent_disconnected`
- `agent_never_connected`
- `last_seen_window_start`
- `last_seen_window_end`
- `registry_collected_at`
- `registry_export_scope_aliases`
- `per_host_registry_matrix`
- `registry_gap_reason_by_alias`
- `registry_export_summary_ref`
- `manager_health_ref`
- `dashboard_api_status_ref`
- `dashboard_api_connection_check_status`
- `dashboard_api_version_check_status`
- `dashboard_index_pattern_statuses`
- `dashboard_api_degradation_root_cause`
- `dashboard_api_repair_postcheck_ref`
- `redacted_evidence_refs`
- `followup_owner`
- `rollback_owner`
- `postcheck_plan`

## Reviewer 檢查

- 欄位齊全且皆為脫敏 metadata。
- `agent_total` 不可小於 `agent_active + agent_disconnected + agent_never_connected`。
- `collection_method` 只能是既有唯讀 API 或 manager 端脫敏 CLI 匯出，不可要求 secret 明文。
- `registry_export_scope_aliases` 必須完整覆蓋 6 個公開節點別名。
- `per_host_registry_matrix` 每列只能使用公開別名，不得包含內網位址、agent 原名或 raw payload。
- `last_seen` 時間窗需能覆蓋事故觀察區間。
- manager health ref 與 dashboard API status ref 不可互相替代。
- Dashboard API connection 若仍是 pending / spinning，不得接受為 Wazuh 可用。
- Dashboard API version 必須獨立驗證；index pattern 三綠勾不可替代 API version。
- index pattern 已通過只能代表索引 pattern 可讀，不可替代 manager registry counts。
- Dashboard API 退化根因必須至少分類為 stored API、RBAC / run_as、rate-limit、TLS trust 或 readonly account scope 其中之一。
- Dashboard API repair postcheck 必須包含 API connection、API version、manager registry counts 與 IwoooS readback。
- redacted evidence refs 不得包含 raw payload、截圖原文或主機完整輸出。
- owner decision 不可直接授權 active response、host write 或 secret rotation。
- rollback owner 與 postcheck plan 必須存在。

## 拒收與隔離

以下內容不得進 repo、前台、LOGBOOK 或 AwoooP 訊息本文：

- raw Wazuh payload、raw log、完整 journal、未脫敏截圖。
- agent 原名、內網位址、完整主機輸出。
- authorization header、token、basic auth、password、cookie、private key、client key。
- raw dashboard request、Dashboard API secret、stored API password、API token。
- 夾帶 active response、host write、firewall change、Nginx reload 或其他 runtime 操作要求。

## Manager registry 脫敏匯出契約

Wazuh manager registry 才是判定「所有用戶端是否仍在」的主要來源。匯出時只能使用下列公開節點別名，不得放內網位址、主機原名、agent 原名或完整 CLI / API 輸出。

| 節點別名 | 用途 |
|---|---|
| `managed_core_node_a` | 核心服務節點 |
| `managed_core_node_b` | 資料服務節點 |
| `managed_dev_node_a` | 開發工作節點 |
| `managed_dev_node_b` | 開發工作節點 |
| `managed_control_node_a` | 控制平面節點 |
| `managed_control_node_b` | 控制平面節點 |

允許的收集方式：

- `wazuh_api_readonly_redacted_counts`
- `manager_agent_control_redacted_export`

逐主機矩陣每列必填欄位：

- `node_alias`
- `scope_role`
- `registry_presence`
- `agent_status_bucket`
- `last_seen_state`
- `manager_group_ref`
- `agent_id_redacted_ref`
- `gap_reason`
- `redacted_evidence_ref`

脫敏要求：

- 只允許公開節點別名，不允許內網位址、主機原名或 agent 原名。
- agent id 僅能用不可逆 evidence ref，不得放完整值、雜湊、前後綴或 client key。
- 每個缺口必須有 gap reason，不得以 Dashboard 空白或口頭說明補成綠燈。
- Dashboard API connection / version / index pattern 必須分欄呈現，不得合併成單一 healthy。
- Dashboard API 修復證明只能收脫敏 ref，不得收 stored API secret、token、密碼或完整 request。
- 只收計數、狀態桶、時間窗與證據 ref，不收 raw API payload、完整 CLI output 或截圖原文。

## 現況計數

| 項目 | 計數 |
|---|---:|
| 必要欄位 | `28` |
| Reviewer 檢查 | `15` |
| 公開節點別名 | `6` |
| 逐主機必填欄位 | `9` |
| Registry export received | `0` |
| Registry export accepted | `0` |
| Outcome lanes | `8` |
| Forbidden payloads | `22` |
| Owner evidence received | `0` |
| Owner evidence accepted | `0` |
| Runtime gate | `0` |

## 驗證

```bash
python3 scripts/security/wazuh-agent-visibility-owner-evidence-preflight.py --root .
```

預期：

```text
WAZUH_AGENT_VISIBILITY_OWNER_EVIDENCE_PREFLIGHT_OK fields=28 checks=15 aliases=6 export_received=0 received=0 accepted=0 runtime_gate=0
```

## 邊界

本預檢通過只代表收件格式和安全邊界已固定，不代表 Wazuh agent registry 已驗收、不代表 Dashboard stored API 已修復、不代表 IwoooS route 已啟用 manager live metadata、不代表主機乾淨，也不授權 active response、host write、Kali active scan、secret rotation、Nginx / Docker / K8s / firewall 操作。
