Changes between Version 3 and Version 4 of Conceptual_design


Ignore:
Timestamp:
01/21/26 00:33:52 (3 weeks ago)
Author:
231118
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Conceptual_design

    v3 v4  
    11== ER дијаграм ==
    22
    3 [[Image("ERDiagram_NetIntel.drawio (2).png")]]
     3[[Image("ERDiagram_NetIntel.drawio.png")]]
    44
    55== Податочни барања ==
     
    77=== Ентитети ===
    88
    9 1. '''Environments''' – ентитет кој чува информации за логички околини (environments) во кои се групираат компјутерите.
     91. '''Tenants''' – ентитет кој претставува логички изолирана организација (tenant) во системот.
    1010   * ''id'' (integer, PK)
    11    * ''name'' (text, not null, UNIQUE)
     11   * ''name'' (text, not null)
     12   * ''owner_email'' (text, not null)
    1213   * ''created_at'' (datetime, not null)
    1314
    14 2. '''ENV_Tokens''' – ентитет кој чува токени за пристап на клиентите во конкретно environment.
     152. '''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
     223. '''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
     284. '''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
     355. '''ENV_Tokens''' – ентитет кој чува токени за пристап на клиентите во конкретно environment.
    1536   * ''id'' (integer, PK)
    1637   * ''env_name''* (text, FK → Environments.name, not null)
     38   * ''tenant_id''* (integer, FK → Tenants.id, not null)
    1739   * ''token'' (text, not null, UNIQUE)
    1840   * ''created_at'' (datetime, not null)
    1941   * ''expires_at'' (datetime)
    2042
    21 3. '''Admin_sessions''' – ентитет кој чува администраторски сесии за најава.
     436. '''Admin_sessions''' – ентитет кој чува администраторски сесии за управување со системот.
    2244   * ''id'' (integer, PK)
    2345   * ''token'' (text, not null, UNIQUE)
     46   * ''tenant_id''* (integer, FK → Tenants.id, not null)
    2447   * ''created_at'' (datetime, not null)
    2548
    26 4. '''Computers''' – ентитет кој чува податоци за уредите (клиенти) што испраќаат логови до сервер.
     497. '''Computers''' – ентитет кој чува податоци за уредите (клиенти) што испраќаат логови до серверот.
    2750   * ''id'' (integer, PK)
    28    * ''name'' (text, not null, UNIQUE)
     51   * ''name'' (text, not null)
    2952   * ''user'' (text)
    3053   * ''ip'' (text)
     
    3356   * ''last_seen'' (datetime)
    3457   * ''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)
    3661
    37 5. '''Computer_history''' – ентитет кој чува временски перформансни метрики за компјутерот.
     628. '''Computer_history''' – ентитет кој чува временски перформансни метрики за компјутерот.
    3863   * ''id'' (integer, PK)
    3964   * ''computer_id''* (integer, FK → Computers.id, not null)
     
    4570   * ''timestamp'' (datetime)
    4671
    47 6. '''Computer_processes''' – ентитет кој чува податоци за процеси на компјутерот (во момент на собирање).
     729. '''Computer_processes''' – ентитет кој чува податоци за процеси на компјутерот.
    4873   * ''id'' (integer, PK)
    4974   * ''computer_id''* (integer, FK → Computers.id, not null)
     
    5681   * ''timestamp'' (datetime)
    5782
    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)
     8310. '''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)
    6691
    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)
     9211. '''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)
    76101
    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)
     10212. '''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)
    85110
    86111''Забелешка:'' Атрибутите означени со * се странски клучеви (Foreign Keys).
     
    88113=== Релации ===
    89114
    90 1. '''contains''' (Environments ↔ Computers, 1:N) 
    91    Едно environment може да содржи повеќе компјутери, а секој компјутер припаѓа на едно environment.
     1151. '''owns''' (Tenants ↔ Environments, 1:N) 
     116   Еден tenant може да има повеќе environments, а секое environment припаѓа на еден tenant.
    92117
    93 2. '''has''' (Environments ↔ ENV_Tokens, 1:N
    94    Едно environment може да има повеќе токени, а секој токен е издаден за едно environment.
     1182. '''has''' (Tenants ↔ Users, M:N преку Memberships
     119   Еден tenant може да има повеќе корисници, а еден корисник може да припаѓа на повеќе tenants со различни улоги.
    95120
    96 3. '''records''' (Computers ↔ Computer_history, 1:N) 
     1213. '''issues''' (Environments ↔ ENV_Tokens, 1:N) 
     122   Едно environment може да има повеќе токени за пристап.
     123
     1244. '''contains''' (Environments ↔ Computers, 1:N) 
     125   Едно environment содржи повеќе компјутери, а секој компјутер припаѓа на едно environment.
     126
     1275. '''records''' (Computers ↔ Computer_history, 1:N) 
    97128   Еден компјутер има повеќе записи со перформансни метрики во текот на времето.
    98129
    99 4. '''runs''' (Computers ↔ Computer_processes, 1:N) 
    100    Еден компјутер има повеќе записи за процеси (снимени во различни моменти).
     1306. '''runs''' (Computers ↔ Computer_processes, 1:N) 
     131   Еден компјутер има повеќе записи за процеси.
    101132
    102 5. '''generates''' (Computers ↔ Sysmon_events, 1:N) 
     1337. '''generates''' (Computers ↔ Sysmon_events, 1:N) 
    103134   Еден компјутер генерира повеќе безбедносни (Sysmon) настани.
    104135
    105 6. '''opens''' (Computers ↔ Network_connections, 1:N) 
     1368. '''opens''' (Computers ↔ Network_connections, 1:N) 
    106137   Еден компјутер може да има повеќе мрежни конекции.
    107138
    108 7. '''triggers''' (Computers ↔ Security_alerts, 1:N) 
    109    Еден компјутер може да активира повеќе аларми (alerts) во системот.
     1399. '''triggers''' (Computers ↔ Security_alerts, 1:N) 
     140   Еден компјутер може да активира повеќе безбедносни аларми.