Changes between Version 3 and Version 4 of Conceptual_design
- Timestamp:
- 01/21/26 00:33:52 (3 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Conceptual_design
v3 v4 1 1 == ER дијаграм == 2 2 3 [[Image("ERDiagram_NetIntel.drawio (2).png")]]3 [[Image("ERDiagram_NetIntel.drawio.png")]] 4 4 5 5 == Податочни барања == … … 7 7 === Ентитети === 8 8 9 1. ''' Environments''' – ентитет кој чува информации за логички околини (environments) во кои се групираат компјутерите.9 1. '''Tenants''' – ентитет кој претставува логички изолирана организација (tenant) во системот. 10 10 * ''id'' (integer, PK) 11 * ''name'' (text, not null, UNIQUE) 11 * ''name'' (text, not null) 12 * ''owner_email'' (text, not null) 12 13 * ''created_at'' (datetime, not null) 13 14 14 2. '''ENV_Tokens''' – ентитет кој чува токени за пристап на клиентите во конкретно environment. 15 2. '''Users''' – ентитет кој чува информации за корисници автентицирани преку Google OAuth. 16 * ''id'' (integer, PK) 17 * ''email'' (text, not null, UNIQUE) 18 * ''name'' (text) 19 * ''picture'' (text) 20 * ''created_at'' (datetime, not null) 21 22 3. '''Memberships''' – асоцијативен ентитет кој поврзува корисници со tenants и дефинира нивна улога. 23 * ''user_id''* (integer, PK, FK → Users.id) 24 * ''tenant_id''* (integer, PK, FK → Tenants.id) 25 * ''role'' (text, not null) 26 * ''created_at'' (datetime, not null) 27 28 4. '''Environments''' – ентитет кој чува информации за логички околини во рамки на еден tenant. 29 * ''id'' (integer, PK) 30 * ''name'' (text, not null) 31 * ''created_at'' (datetime, not null) 32 * ''tenant_id''* (integer, FK → Tenants.id, not null) 33 * (UNIQUE: tenant_id + name) 34 35 5. '''ENV_Tokens''' – ентитет кој чува токени за пристап на клиентите во конкретно environment. 15 36 * ''id'' (integer, PK) 16 37 * ''env_name''* (text, FK → Environments.name, not null) 38 * ''tenant_id''* (integer, FK → Tenants.id, not null) 17 39 * ''token'' (text, not null, UNIQUE) 18 40 * ''created_at'' (datetime, not null) 19 41 * ''expires_at'' (datetime) 20 42 21 3. '''Admin_sessions''' – ентитет кој чува администраторски сесии за најава.43 6. '''Admin_sessions''' – ентитет кој чува администраторски сесии за управување со системот. 22 44 * ''id'' (integer, PK) 23 45 * ''token'' (text, not null, UNIQUE) 46 * ''tenant_id''* (integer, FK → Tenants.id, not null) 24 47 * ''created_at'' (datetime, not null) 25 48 26 4. '''Computers''' – ентитет кој чува податоци за уредите (клиенти) што испраќаат логови до сервер.49 7. '''Computers''' – ентитет кој чува податоци за уредите (клиенти) што испраќаат логови до серверот. 27 50 * ''id'' (integer, PK) 28 * ''name'' (text, not null , UNIQUE)51 * ''name'' (text, not null) 29 52 * ''user'' (text) 30 53 * ''ip'' (text) … … 33 56 * ''last_seen'' (datetime) 34 57 * ''sysmon_available'' (boolean, default 0) 35 * ''env_name''* (text, FK → Environments.name, default 'default') 58 * ''env_name''* (text, FK → Environments.name, not null) 59 * ''tenant_id''* (integer, FK → Tenants.id, not null) 60 * (UNIQUE: tenant_id + name) 36 61 37 5. '''Computer_history''' – ентитет кој чува временски перформансни метрики за компјутерот.62 8. '''Computer_history''' – ентитет кој чува временски перформансни метрики за компјутерот. 38 63 * ''id'' (integer, PK) 39 64 * ''computer_id''* (integer, FK → Computers.id, not null) … … 45 70 * ''timestamp'' (datetime) 46 71 47 6. '''Computer_processes''' – ентитет кој чува податоци за процеси на компјутерот (во момент на собирање).72 9. '''Computer_processes''' – ентитет кој чува податоци за процеси на компјутерот. 48 73 * ''id'' (integer, PK) 49 74 * ''computer_id''* (integer, FK → Computers.id, not null) … … 56 81 * ''timestamp'' (datetime) 57 82 58 7. '''Sysmon_events''' – ентитет кој чува Sysmon/безбедносни настани испратени од клиентот.59 * ''id'' (integer, PK)60 * ''computer_id''* (integer, FK → Computers.id, not null)61 * ''event_id'' (integer)62 * ''event_type'' (text)63 * ''message'' (text)64 * ''timestamp'' (datetime)65 * ''details'' (text) (JSON како string)83 10. '''Sysmon_events''' – ентитет кој чува Sysmon/безбедносни настани испратени од клиентот. 84 * ''id'' (integer, PK) 85 * ''computer_id''* (integer, FK → Computers.id, not null) 86 * ''event_id'' (integer) 87 * ''event_type'' (text) 88 * ''message'' (text) 89 * ''timestamp'' (datetime) 90 * ''details'' (text) (JSON како string) 66 91 67 8. '''Network_connections''' – ентитет кој чува мрежни конекции детектирани на компјутерот.68 * ''id'' (integer, PK)69 * ''computer_id''* (integer, FK → Computers.id, not null)70 * ''pid'' (integer)71 * ''local_address'' (text)72 * ''remote_address'' (text)73 * ''status'' (text)74 * ''process_name'' (text)75 * ''timestamp'' (datetime)92 11. '''Network_connections''' – ентитет кој чува мрежни конекции детектирани на компјутерот. 93 * ''id'' (integer, PK) 94 * ''computer_id''* (integer, FK → Computers.id, not null) 95 * ''pid'' (integer) 96 * ''local_address'' (text) 97 * ''remote_address'' (text) 98 * ''status'' (text) 99 * ''process_name'' (text) 100 * ''timestamp'' (datetime) 76 101 77 9. '''Security_alerts''' – ентитет кој чува аларми за потенцијални безбедносни инциденти.78 * ''id'' (integer, PK)79 * ''computer_id''* (integer, FK → Computers.id, not null)80 * ''alert_type'' (text)81 * ''severity'' (text)82 * ''description'' (text)83 * ''timestamp'' (datetime)84 * ''resolved'' (boolean, default 0)102 12. '''Security_alerts''' – ентитет кој чува аларми за потенцијални безбедносни инциденти. 103 * ''id'' (integer, PK) 104 * ''computer_id''* (integer, FK → Computers.id, not null) 105 * ''alert_type'' (text) 106 * ''severity'' (text) 107 * ''description'' (text) 108 * ''timestamp'' (datetime) 109 * ''resolved'' (boolean, default 0) 85 110 86 111 ''Забелешка:'' Атрибутите означени со * се странски клучеви (Foreign Keys). … … 88 113 === Релации === 89 114 90 1. ''' contains''' (Environments ↔ Computers, 1:N)91 Ед но environment може да содржи повеќе компјутери, а секој компјутер припаѓа на едно environment.115 1. '''owns''' (Tenants ↔ Environments, 1:N) 116 Еден tenant може да има повеќе environments, а секое environment припаѓа на еден tenant. 92 117 93 2. '''has''' ( Environments ↔ ENV_Tokens, 1:N)94 Ед но environment може да има повеќе токени, а секој токен е издаден за едно environment.118 2. '''has''' (Tenants ↔ Users, M:N преку Memberships) 119 Еден tenant може да има повеќе корисници, а еден корисник може да припаѓа на повеќе tenants со различни улоги. 95 120 96 3. '''records''' (Computers ↔ Computer_history, 1:N) 121 3. '''issues''' (Environments ↔ ENV_Tokens, 1:N) 122 Едно environment може да има повеќе токени за пристап. 123 124 4. '''contains''' (Environments ↔ Computers, 1:N) 125 Едно environment содржи повеќе компјутери, а секој компјутер припаѓа на едно environment. 126 127 5. '''records''' (Computers ↔ Computer_history, 1:N) 97 128 Еден компјутер има повеќе записи со перформансни метрики во текот на времето. 98 129 99 4. '''runs''' (Computers ↔ Computer_processes, 1:N)100 Еден компјутер има повеќе записи за процеси (снимени во различни моменти).130 6. '''runs''' (Computers ↔ Computer_processes, 1:N) 131 Еден компјутер има повеќе записи за процеси. 101 132 102 5. '''generates''' (Computers ↔ Sysmon_events, 1:N)133 7. '''generates''' (Computers ↔ Sysmon_events, 1:N) 103 134 Еден компјутер генерира повеќе безбедносни (Sysmon) настани. 104 135 105 6. '''opens''' (Computers ↔ Network_connections, 1:N)136 8. '''opens''' (Computers ↔ Network_connections, 1:N) 106 137 Еден компјутер може да има повеќе мрежни конекции. 107 138 108 7. '''triggers''' (Computers ↔ Security_alerts, 1:N)109 Еден компјутер може да активира повеќе аларми (alerts) во системот.139 9. '''triggers''' (Computers ↔ Security_alerts, 1:N) 140 Еден компјутер може да активира повеќе безбедносни аларми.
