Files
AWatch-rus/docs/AGENT_ARCHITECTURE_RU.md
T

98 lines
3.5 KiB
Markdown

# AWatch-rus Rust Agent Architecture
Документ описывает агентный слой AWatch-rus v0.3.
## Назначение
`awatch-agent-rs` является собственным Rust-агентом телеметрии для контура:
```text
Agent -> Telemetry -> Analytics -> Risk -> Investigation -> Report
```
Агент собирает техническую и операционную телеметрию рабочего места или сервера и отправляет ее в серверный endpoint `POST /api/telemetry`.
## Границы реализации v0.3
- Linux collector собирает реальные данные через `/proc`, `/sys`, окружение сессии и системные журналы.
- Windows collector формирует `TelemetryRecord` без PowerShell primary collection: identity/session/process/network/resource context через read-only системные источники и командные probe-фолбэки. Глубина WinAPI, ETW, Event Log API и WMI-библиотеки Rust является следующим расширением.
- FreeBSD collector формирует `TelemetryRecord` через read-only системные probe: `uname`, `sysctl`, `ps`, `ifconfig`, `sockstat`, `/var/log/messages`. Глубина `procstat`/`kvm` является следующим расширением.
- PowerShell не является основным механизмом сбора. Он допускается только как будущий `legacy` fallback под feature flag.
- Агент не содержит скрытых функций, драйверов ядра, кейлоггера, записи экрана, перехвата документов и контентного DLP-анализа.
## Crate
```text
adk-rust/crates/awatch-agent-rs
```
Структура:
```text
src/main.rs
src/config.rs
src/telemetry.rs
src/transport.rs
src/collectors/mod.rs
src/collectors/common.rs
src/collectors/linux.rs
src/collectors/windows.rs
src/collectors/freebsd.rs
```
## Единая модель TelemetryRecord
Все платформы должны отдавать один JSON-контракт:
- `agent_id`
- `hostname`
- `os_name`
- `os_version`
- `platform`
- `username`
- `domain`
- `timestamp`
- `uptime_seconds`
- `cpu_usage_percent`
- `memory_total`
- `memory_used`
- `active_sessions`
- `rdp_sessions`
- `ssh_sessions`
- `processes`
- `network_interfaces`
- `network_connections`
- `workforce_activity`
- `security_events`
- `collector_version`
Дополнительные структуры: `SessionInfo`, `ProcessInfo`, `NetworkInterfaceInfo`, `NetworkConnectionInfo`, `WorkforceActivityInfo`, `SecurityEventInfo`.
## Collector trait
`TelemetryCollector` задает единый контракт:
```text
collect_identity()
collect_sessions()
collect_processes()
collect_resources()
collect_network()
collect_security_events()
collect_workforce_activity()
collect_all()
```
Такой интерфейс позволяет расширять Windows, Linux, FreeBSD и pfSense mode без изменения серверного API.
## Транспорт
Транспорт использует JSON over HTTPS:
```text
POST /api/telemetry
x-api-key: <api-key>
```
При недоступности сервера запись не теряется: агент сохраняет JSON в spool и повторно отправляет после восстановления связи.