147 lines
7.1 KiB
Markdown
147 lines
7.1 KiB
Markdown
# Information Architecture — Navegação tipo Wazuh, hub `CH-*`
|
|
|
|
**Spec:** 019 · **Decisão Roger:** 2026-06-16 — **Opção A**
|
|
|
|
---
|
|
|
|
## Princípio
|
|
|
|
O **Chamado `CH-*` é o hub de investigação** — equivalente ao «caso» TheHive / incidente Wazuh, mas unificando onboard, suporte e cybersecurity.
|
|
|
|
**Discover** e **Overview** são **portas de entrada**; toda investigação séria **aterriz** no hub e **permanece** lá até fecho.
|
|
|
|
```text
|
|
┌─────────────┐
|
|
│ Overview │ KPIs, funil, alertas recentes
|
|
└──────┬──────┘
|
|
│ click métrica / alerta
|
|
┌──────▼──────┐
|
|
│ Discover │ Busca livre, filtros, saved searches
|
|
└──────┬──────┘
|
|
│ click evento → criar ou abrir CH-*
|
|
┌──────▼──────────────────────────────────────┐
|
|
│ CH-* HUB DE INVESTIGAÇÃO │
|
|
│ Timeline │ Observables │ Assist │ Acções │
|
|
│ Runbooks │ Aprovações │ Links │ Notas │
|
|
└──────┬──────────────────────────────────────┘
|
|
│ drill-down entidade
|
|
┌────────────┼────────────┐
|
|
▼ ▼ ▼
|
|
Tenant Domínio Wazuh deep link
|
|
(agent) scorecard (VM104 nativo)
|
|
```
|
|
|
|
---
|
|
|
|
## Módulos sidebar (Console VM123)
|
|
|
|
| # | Módulo | Inspiração Wazuh | Função |
|
|
|---|--------|------------------|--------|
|
|
| 1 | **Overview** | Threat Hunting overview | Entrada rápida; não substitui o hub |
|
|
| 2 | **Discover** | Explore → Discover | Investigação transversal; sempre liga a `CH-*` |
|
|
| 3 | **Chamados** | — (Ligbox) | Lista de hubs activos; fila de trabalho |
|
|
| 4 | **Hub `CH-*`** | Alert detail + case | **Ecrã principal de investigação** (rota `/chamados/CH-…`) |
|
|
| 5 | **Tenants** | Agent management | Contexto infra; click → filtra Discover ou abre CH |
|
|
| 6 | **Runbooks** | — | Biblioteca; execução sempre no contexto de um `CH-*` |
|
|
| 7 | **Aprovações** | — | Fila global; cada item linka ao hub origem |
|
|
|
|
---
|
|
|
|
## Layout do hub `CH-*` (wireframe textual)
|
|
|
|
```text
|
|
┌────────────────────────────────────────────────────────────────────────┐
|
|
│ CH-2026-00042 [assumido] myvexx.com L12 onboard+wazuh [Assumir]│
|
|
├───────────────────────────────┬────────────────────────────────────────┤
|
|
│ TIMELINE (centro, scroll) │ PAINEL DIREITO (tabs) │
|
|
│ │ │
|
|
│ ● 10:00 wazuh.alert L12 │ [Assist] [Observables] [Infra] [Ações] │
|
|
│ ● 10:05 onboarding.failed │ │
|
|
│ ● 10:06 runbook proposto │ Assist: passo DNS Cloudflare │
|
|
│ ● 10:10 aprovação R1 │ tempo no passo: 142s │
|
|
│ │ último erro: timeout CF │
|
|
│ │ │
|
|
│ │ Observables: │
|
|
│ │ domain: myvexx.com [→] │
|
|
│ │ session_id: abc… [→] │
|
|
│ │ agent: vm112 [→ Wazuh] │
|
|
│ │ rule_id: 5712 [→] │
|
|
├───────────────────────────────┴────────────────────────────────────────┤
|
|
│ Acções: [Executar runbook ▼] [Nota] [Delegar] [Investigar no Wazuh] │
|
|
└────────────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### Tabs do painel direito
|
|
|
|
| Tab | Conteúdo |
|
|
|-----|----------|
|
|
| **Assist** | Opção A — passo wizard, erro, email planeado |
|
|
| **Observables** | Entidades clicáveis (TheHive-style): domain, IP, agent, session, rule |
|
|
| **Infra** | Scorecard 8/14 checks (009/010/011) embutido |
|
|
| **Acções** | Runbooks pendentes, fila aprovação, histórico execuções |
|
|
|
|
---
|
|
|
|
## Regra de navegação contextual (obrigatória)
|
|
|
|
Em **qualquer módulo**, click numa entidade:
|
|
|
|
| Entidade | Acção |
|
|
|----------|-------|
|
|
| `domain` | Abre hub CH aberto desse domínio ou Discover filtrado |
|
|
| `session_id` | Abre hub com essa sessão ou cria CH |
|
|
| `agent` / tenant | Tenants → detalhe → eventos relacionados |
|
|
| `rule_id` | Discover filtrado `rule_id:X` + CHs com mesma regra |
|
|
| `public_id` `CH-*` | Navega para hub |
|
|
| Evento Discover | `POST` attach ou navega para CH existente |
|
|
|
|
**Deep link Wazuh:** botão «Investigar no Wazuh» — URL VM104 com query pré-preenchida (agent + timeframe); **não** iframe.
|
|
|
|
---
|
|
|
|
## Discover → Hub (fluxo)
|
|
|
|
1. Analista filtra eventos em Discover
|
|
2. Selecciona 1+ eventos → **«Abrir em chamado»**
|
|
3. API: encontrar CH existente (agregação) ou criar `CH-*` novo
|
|
4. Eventos ligados em `chamado_eventos`
|
|
5. UI navega para `/chamados/CH-2026-00042`
|
|
6. Investigação continua **só no hub** (timeline, runbooks, fecho)
|
|
|
|
---
|
|
|
|
## O que NÃO é o hub
|
|
|
|
| Não | Porquê |
|
|
|-----|--------|
|
|
| Overview sozinho | Só resumo; sem acções nem timeline completa |
|
|
| Discover sozinho | Porta de entrada; sem runbooks nem estado de resolução |
|
|
| Wazuh dashboard | SIEM puro; sem onboard/Assist/runbooks Ligbox |
|
|
| Ticket MVP antigo | Sem observables nem drill-down unificado |
|
|
|
|
---
|
|
|
|
## Rotas SPA (React Router)
|
|
|
|
| Rota | View |
|
|
|------|------|
|
|
| `/` | Overview |
|
|
| `/discover` | Discover |
|
|
| `/discover?q=…` | Discover com query partilhável |
|
|
| `/chamados` | Lista chamados |
|
|
| `/chamados/:publicId` | **Hub investigação** |
|
|
| `/tenants` | Tenants |
|
|
| `/tenants/:id` | Detalhe tenant |
|
|
| `/aprovacoes` | Fila aprovações |
|
|
| `/runbooks` | Catálogo runbooks |
|
|
|
|
---
|
|
|
|
## Critérios UX (aceite navegação)
|
|
|
|
- [ ] De Discover a hub em ≤ 2 cliques
|
|
- [ ] Qualquer observable no hub navega em ≤ 1 clique
|
|
- [ ] Hub mostra ≥ 1 fonte (onboard + wazuh) na mesma timeline
|
|
- [ ] «Investigar no Wazuh» abre VM104 em novo tab com contexto
|
|
- [ ] URL `/chamados/CH-*` partilhável entre técnicos
|
|
- [ ] Voltar de Tenants para hub preserva scroll timeline (opcional P2)
|