3.5 KiB
AWatch-rus Rust Agent Architecture
Документ описывает агентный слой AWatch-rus v0.3.
Назначение
awatch-agent-rs является собственным Rust-агентом телеметрии для контура:
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 не является основным механизмом сбора. Он допускается только как будущий
legacyfallback под feature flag. - Агент не содержит скрытых функций, драйверов ядра, кейлоггера, записи экрана, перехвата документов и контентного DLP-анализа.
Crate
adk-rust/crates/awatch-agent-rs
Структура:
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_idhostnameos_nameos_versionplatformusernamedomaintimestampuptime_secondscpu_usage_percentmemory_totalmemory_usedactive_sessionsrdp_sessionsssh_sessionsprocessesnetwork_interfacesnetwork_connectionsworkforce_activitysecurity_eventscollector_version
Дополнительные структуры: SessionInfo, ProcessInfo, NetworkInterfaceInfo, NetworkConnectionInfo, WorkforceActivityInfo, SecurityEventInfo.
Collector trait
TelemetryCollector задает единый контракт:
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:
POST /api/telemetry
x-api-key: <api-key>
При недоступности сервера запись не теряется: агент сохраняет JSON в spool и повторно отправляет после восстановления связи.