| 2 | | |
| 3 | | '''Актер кој го иницира:''' |
| 4 | | * Клиентска апликација (Agent / Collector) |
| 5 | | |
| 6 | | '''Други актери:''' |
| 7 | | * Администратор |
| 8 | | |
| 9 | | '''Опис:''' |
| 10 | | |
| 11 | | Клиентската апликација периодично собира системски, процесни и безбедносни информации и ги испраќа до серверот со користење на X-Env-Token. |
| 12 | | |
| 13 | | == Предуслови == |
| 14 | | |
| 15 | | * Постои Environment. |
| 16 | | * Клиентот поседува валиден X-Env-Token. |
| 17 | | |
| 18 | | == Сценарио == |
| 19 | | |
| 20 | | 1. Клиентската апликација ги собира потребните податоци. |
| 21 | | 2. Испраќа POST барање со X-Env-Token. |
| 22 | | 3. Системот го проверува токенот. |
| 23 | | 4. Системот ги зачувува податоците во базата. |
| 24 | | 5. Системот враќа успешен одговор. |
| 25 | | |
| 26 | | == SQL == |
| 27 | | |
| | 3 | '''Initiating actor:''' Client application (Agent / Collector) |
| | 4 | '''Other actors:''' Administrator |
| | 5 | '''Description:''' |
| | 6 | Клиентската апликација периодично собира системски, процесни и мрежни податоци и ги испраќа до серверот со X-Env-Token. Серверот го проверува токенот, го ажурира записот за компјутерот, ја заменува тековната состојба (snapshot) и по потреба додава во историја според поставките на околината. |
| | 7 | '''Scenario:''' |
| | 8 | 1. Агентот ги собира податоците на компјутерот. |
| | 9 | 2. Агентот испраќа POST барање со заглавие X-Env-Token. |
| | 10 | 3. Системот го проверува токенот: |
| | 18 | 4. Системот го ажурира (или создава) записот за компјутерот: |
| | 19 | {{{ |
| | 20 | INSERT INTO computers (tenant_id, env_name, name, "user", ip, os, first_seen, last_seen, sysmon_available) |
| | 21 | VALUES (1, 'default', 'PC-ADMIN', 'admin', '192.168.1.10', 'Windows 11 Pro', now(), now(), true) |
| | 22 | ON CONFLICT (tenant_id, name) |
| | 23 | DO UPDATE SET last_seen = now(), ip = EXCLUDED.ip, os = EXCLUDED.os; |
| | 24 | }}} |
| | 25 | 5. Системот ја заменува тековната snapshot состојба на метриките: |
| | 26 | {{{ |
| | 27 | DELETE FROM computer_history_current |
| | 28 | WHERE computer_id = (SELECT id FROM computers WHERE tenant_id=1 AND name='PC-ADMIN'); |
| | 29 | INSERT INTO computer_history_current |
| | 30 | (computer_id, cpu_usage, ram_usage, disk_usage, network_sent_mb, network_recv_mb, timestamp) |
| | 31 | VALUES ((SELECT id FROM computers WHERE tenant_id=1 AND name='PC-ADMIN'), 45.0, 62.0, 71.0, 130.0, 100.0, now()); |
| | 32 | }}} |
| | 33 | 6. Системот ги заменува тековните процеси, и додава во историја само ако е овозможено за околината: |
| | 34 | {{{ |
| | 35 | DELETE FROM computer_processes_current |
| | 36 | WHERE computer_id = (SELECT id FROM computers WHERE tenant_id=1 AND name='PC-ADMIN'); |
| | 37 | INSERT INTO computer_processes_current |
| | 38 | (computer_id, pid, name, cpu_percent, memory_mb, username, cmdline, timestamp) |
| | 39 | VALUES ((SELECT id FROM computers WHERE tenant_id=1 AND name='PC-ADMIN'), 1234, 'chrome.exe', 12.5, 350.2, 'admin', 'chrome', now()); |
| | 40 | INSERT INTO computer_processes_history |
| | 41 | (computer_id, pid, name, cpu_percent, memory_mb, username, cmdline, timestamp) |
| | 42 | SELECT (SELECT id FROM computers WHERE tenant_id=1 AND name='PC-ADMIN'), 1234, 'chrome.exe', 12.5, 350.2, 'admin', 'chrome', now() |
| | 43 | WHERE (SELECT save_process_history FROM env_settings WHERE tenant_id=1 AND env_name='default') = true; |
| | 44 | }}} |
| | 45 | 7. Системот зачувува безбедносен/Sysmon настан и враќа успешен одговор: |
| | 46 | {{{ |
| | 47 | INSERT INTO sysmon_events (computer_id, event_id, event_type, message, timestamp, details) |
| | 48 | VALUES ((SELECT id FROM computers WHERE tenant_id=1 AND name='PC-ADMIN'), 1, 'Process Create', 'Process created: chrome.exe', now(), '{}'); |
| | 49 | }}} |