ER дијаграм
Податочни барања
Ентитети
1. Tenants
Ентитет кој претставува логички изолирана организација (tenant) во системот.
- id (integer, PK)
- name (text, NOT NULL)
- owner_email (text, NOT NULL)
- created_at (datetime)
2. Users
Ентитет кој чува информации за корисници автентицирани преку Google OAuth.
- id (integer, PK)
- email (text, NOT NULL, UNIQUE)
- name (text)
- picture (text)
- created_at (datetime)
3. Memberships
Асоцијативен ентитет кој поврзува корисници со tenants и ја дефинира нивната улога.
- user_id* (integer, PK, FK → Users.id)
- tenant_id* (integer, PK, FK → Tenants.id)
- role (text, DEFAULT 'admin')
- created_at (datetime)
4. Environments
Ентитет кој дефинира логички околини во рамки на еден tenant (пример: default, staging, prod).
- id (integer, PK)
- tenant_id* (integer, FK → Tenants.id, NOT NULL)
- name (text, NOT NULL)
- created_at (datetime)
*Ограничување:* UNIQUE (tenant_id, name)
5. ENV_Tokens
Ентитет кој чува токени за пристап на клиентските агенти во конкретно environment.
- id (integer, PK)
- tenant_id* (integer, FK → Tenants.id, NOT NULL)
- env_name (text, NOT NULL)
- token (text, NOT NULL, UNIQUE)
- created_at (datetime)
- expires_at (datetime)
6. Computers
Ентитет кој чува податоци за клиентските компјутери што испраќаат логови до серверот.
- id (integer, PK)
- tenant_id* (integer, FK → Tenants.id, NOT NULL)
- env_name (text, NOT NULL)
- name (text, NOT NULL)
- user (text)
- ip (text)
- os (text)
- first_seen (datetime)
- last_seen (datetime)
- sysmon_available (boolean, DEFAULT 0)
*Ограничување:* UNIQUE (tenant_id, name)
7. Computer_history
Ентитет кој чува временски перформансни метрики за компјутерите.
- id (integer, PK)
- computer_id* (integer, FK → Computers.id)
- cpu_usage (real)
- ram_usage (real)
- disk_usage (real)
- network_sent_mb (real)
- network_recv_mb (real)
- timestamp (datetime)
8. Computer_processes_current
Ентитет кој чува тековна snapshot состојба на процеси за секој компјутер.
- id (integer, PK)
- computer_id* (integer, FK → Computers.id)
- pid (integer)
- name (text)
- cpu_percent (real)
- memory_mb (real)
- username (text)
- cmdline (text)
- timestamp (datetime)
9. Computer_processes_history
Ентитет кој чува историски податоци за процеси (опционално, контролирано по environment).
- id (integer, PK)
- computer_id* (integer, FK → Computers.id)
- pid (integer)
- name (text)
- cpu_percent (real)
- memory_mb (real)
- username (text)
- cmdline (text)
- timestamp (datetime)
10. Sysmon_events
Ентитет кој чува Sysmon и безбедносни настани испратени од клиентите.
- id (integer, PK)
- computer_id* (integer, FK → Computers.id)
- event_id (integer)
- event_type (text)
- message (text)
- timestamp (datetime)
- details (text – JSON како string)
11. Network_connections
Ентитет кој чува информации за мрежни конекции на компјутерите.
- id (integer, PK)
- computer_id* (integer, FK → Computers.id)
- pid (integer)
- local_address (text)
- remote_address (text)
- status (text)
- process_name (text)
- timestamp (datetime)
12. Security_alerts
Ентитет кој чува аларми за потенцијални безбедносни инциденти.
- id (integer, PK)
- computer_id* (integer, FK → Computers.id)
- alert_type (text)
- severity (text)
- description (text)
- timestamp (datetime)
- resolved (boolean, DEFAULT 0)
13. Env_settings
Ентитет кој чува конфигурации по environment.
- tenant_id* (integer, PK, FK → Tenants.id)
- env_name* (text, PK)
- save_process_history (boolean, DEFAULT 0)
- created_at (datetime)
- updated_at (datetime)
Релации
- Tenants ⟶ Environments (1:N)
Еден tenant може да има повеќе environments.
- Tenants ⟷ Users (M:N преку Memberships)
Корисник може да припаѓа на повеќе tenants со различни улоги.
- Environments ⟶ ENV_Tokens (1:N)
Едно environment може да има повеќе токени за клиентски агенти.
- Environments ⟶ Computers (1:N)
Едно environment содржи повеќе компјутери.
- Computers ⟶ Computer_history (1:N)
Еден компјутер има повеќе временски перформансни записи.
- Computers ⟶ Computer_processes_current (1:N)
Еден компјутер има повеќе тековни процеси.
- Computers ⟶ Computer_processes_history (1:N)
Еден компјутер може да има историски процеси (ако е овозможено).
- Computers ⟶ Sysmon_events (1:N)
Еден компјутер генерира повеќе Sysmon безбедносни настани.
- Computers ⟶ Network_connections (1:N)
Еден компјутер има повеќе активни мрежни конекции.
- Computers ⟶ Security_alerts (1:N)
Еден компјутер може да активира повеќе безбедносни аларми.
Забелешка: Атрибутите означени со * се странски клучеви (Foreign Keys).
Entity-Relationship Model History
Верзија 1
Ова е иницијалната верзија на дијаграмот со соодветните табели.
Верзија 2
Ова е подобрената верија на дијаграмот. Додадени се табелите env_settings, computer_proccess_current и computer_proccess_history. Овие табели се додадени со цел имплементирање на функционалност каде корисникот би можел да одлучи дали сака да ги чува трајно податоците собрани од компјутерот (во тој случај би се зачувале во computer_proccess_history) или пак да се зачуваат привремено и по некое време би се избришале (во тој случај би се зачувале во computer_proccess_current).
Attachments (4)
- ERModel_v01.xml (76.9 KB ) - added by 10 hours ago.
- ERModel_v01.png (564.8 KB ) - added by 10 hours ago.
- ERModel_v02.xml (97.7 KB ) - added by 10 hours ago.
- ERModel_v02.png (751.6 KB ) - added by 10 hours ago.
Download all attachments as: .zip
