wiki:ERModel

Version 3 (modified by 231118, 5 days ago) ( diff )

--

Entity-Relationship Model v.04

Diagram

Data requirements

Entities

Tenants

Претставува логички изолирана организација (tenant). Сите останати податоци се партиционираат по tenant, така што податоците на една организација се одвоени од друга. Моделиран е со сурогат клуч бидејќи ниту едно природно поле не е гарантирано единствено и непроменливо.

  • Candidate keys: {id}. Полињата name/owner_email не се доволно единствени, па е избран сурогат id.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • name — text; задолжителен (NOT NULL).
    • owner_email — text; задолжителен (NOT NULL); формат на е-пошта.
    • created_at — date (datetime); опционален.

Users

Корисник автентициран преку Google OAuth. Потребен за најавување и поврзување со tenants преку членства. Моделиран одделно бидејќи ист корисник може да членува во повеќе tenants.

  • Candidate keys: {id} и {email} (email е UNIQUE). Избран е {id} бидејќи е стабилен сурогат; е-поштата може да се промени.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • email — text; задолжителен (NOT NULL, UNIQUE); формат на е-пошта.
    • name — text; опционален.
    • picture — text; опционален; URL до сликата од профилот.
    • created_at — date (datetime); опционален.

Memberships

Асоцијативен ентитет кој ја реализира M:N релацијата меѓу Users и Tenants и ја дефинира улогата на корисникот во даден tenant. Моделиран е како ентитет затоа што носи сопствен атрибут (role).

  • Candidate keys: композитен клуч формиран од учеството во релациите includes (Users) и belongs_to (Tenants), т.е. {user, tenant}.
  • Атрибути:
    • role — text; задолжителен; DEFAULT 'admin'.
    • created_at — date (datetime); опционален.

Environments

Логичка околина во рамки на еден tenant (пр. default, staging, prod). Компјутерите, токените, мрежите и поставките припаѓаат на околина.

  • Candidate keys: {id} и {tenant, name} (името е единствено во рамки на tenant). Избран е {id}; композитниот природен клуч е задржан како ограничување за единственост.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • name — text; задолжителен (NOT NULL); единствено во рамки на еден tenant.
    • created_at — date (datetime); опционален.

ENV_Tokens

Токени за пристап на клиентските агенти во конкретна околина. Секој агент носи токен наместо кориснички податоци. Одделен ентитет затоа што една околина може да има повеќе токени со различни рокови.

  • Candidate keys: {id} и {token} (UNIQUE). Избран е {id}; token се задржува како единствен алтернативен клуч за автентикација.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • token — text; задолжителен (NOT NULL, UNIQUE).
    • created_at — date (datetime); опционален.
    • expires_at — date (datetime); опционален; рок на важност.

Computers

Клиентските компјутери што испраќаат логови. Централен ентитет — сите видови следење се врзани за компјутер.

  • Candidate keys: {id} и {tenant, name}. Избран е {id} бидејќи компјутерот може да се преименува; композитот е задржан како ограничување за единственост.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • name — text; задолжителен (NOT NULL); единствено во рамки на tenant.
    • user — text; опционален; најавен корисник.
    • ip — text; опционален; IP адреса.
    • os — text; опционален; оперативен систем.
    • first_seen — date (datetime); опционален; прв контакт.
    • last_seen — date (datetime); опционален; последен контакт.
    • sysmon_available — numeric (boolean 0/1); задолжителен; DEFAULT 0.

Computer_history_current

Последен снимок на перформансни метрики (искористеност на ресурси) за секој компјутер. При секој извештај, претходниот запис за компјутерот се препишува, така што табелата секогаш го држи само моменталното мерење.

  • Candidate keys: {id} (сурогат). Природен клуч не постои.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • cpu_usage — numeric (real); опционален; процент 0–100.
    • ram_usage — numeric (real); опционален; процент 0–100.
    • disk_usage — numeric (real); опционален; процент 0–100.
    • network_sent_mb — numeric (real); опционален; ≥ 0.
    • network_recv_mb — numeric (real); опционален; ≥ 0.
    • timestamp — date (datetime); опционален.

Computer_history

Историски (трајни) перформансни метрики. Записите се додаваат (append) и се чуваат подолго; запишувањето се контролира преку save_metrics_history во Env_settings.

  • Candidate keys: {id} (сурогат).
  • Атрибути: исти како Computer_history_current (id, cpu_usage, ram_usage, disk_usage, network_sent_mb, network_recv_mb, timestamp).

Computer_processes_current

Тековен снимок на процеси по компјутер. При секој извештај претходната состојба се брише и се запишува новата.

  • Candidate keys: {id} (сурогат). pid не е стабилен (се реупотребува).
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • pid — numeric (integer); опционален.
    • name — text; опционален.
    • cpu_percent — numeric (real); опционален; ≥ 0.
    • memory_mb — numeric (real); опционален; ≥ 0.
    • username — text; опционален.
    • cmdline — text; опционален.
    • timestamp — date (datetime); опционален.

Computer_processes_history

Историски (трајни) записи за процеси. Append; се контролира преку save_process_history во Env_settings; старите записи периодично се бришат.

  • Candidate keys: {id} (сурогат).
  • Атрибути: исти како Computer_processes_current.

Network_connections_current

Тековен снимок на активни мрежни конекции по компјутер. При секој извештај се препишува.

  • Candidate keys: {id} (сурогат).
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • pid — numeric (integer); опционален.
    • local_address — text; опционален; локална адреса:порта.
    • remote_address — text; опционален; далечна адреса:порта.
    • status — text; опционален; пр. ESTABLISHED, LISTEN.
    • process_name — text; опционален.
    • timestamp — date (datetime); опционален.

Network_connections_history

Историски (трајни) записи за мрежни конекции. Append; се контролира преку save_network_history во Env_settings.

  • Candidate keys: {id} (сурогат).
  • Атрибути: исти како Network_connections_current.

Sysmon_events

Sysmon и безбедносни настани испратени од клиентите (append лог).

  • Candidate keys: {id} (сурогат). event_id е тип на настан, не идентификатор.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • event_id — numeric (integer); опционален; Sysmon Event ID.
    • event_type — text; опционален.
    • message — text; опционален.
    • timestamp — date (datetime); опционален.
    • details — text; опционален; JSON како стринг.

Security_alerts

Аларми за потенцијални безбедносни инциденти детектирани на компјутер.

  • Candidate keys: {id} (сурогат).
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • alert_type — text; опционален.
    • severity — text; опционален; пр. low/medium/high/critical.
    • description — text; опционален.
    • timestamp — date (datetime); опционален.
    • resolved — numeric (boolean 0/1); задолжителен; DEFAULT 0.

Env_settings

Конфигурации по околина — политика за чување историја за секој вид следење (процеси, метрики, мрежни конекции).

  • Candidate keys: идентификуван преку релацијата configured_by со Environments (1:1); во релациска шема клучот е {tenant_id, env_name}.
  • Атрибути:
    • save_process_history — numeric (boolean 0/1); задолжителен; DEFAULT 0.
    • save_metrics_history — numeric (boolean 0/1); задолжителен; DEFAULT 0.
    • save_network_history — numeric (boolean 0/1); задолжителен; DEFAULT 0.
    • created_at — date (datetime); опционален.
    • updated_at — date (datetime); опционален.

Networks

Мрежни сегменти/подмрежи во рамки на околина. Потребен за моделирање на мрежната инфраструктура и групирање на компјутери и уреди по подмрежа.

  • Candidate keys: {id} и {cidr} (единствен во рамки на околина). Избран е {id}.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • name — text; задолжителен.
    • cidr — text; задолжителен; формат CIDR (пр. 192.168.1.0/24).
    • gateway_ip — text; опционален; IP на портата.
    • vlan — numeric (integer); опционален.

Network_devices

Мрежни уреди што не се компјутери (рутери, свичеви, пристапни точки, firewall). Потребен за следење на мрежната инфраструктура.

  • Candidate keys: {id} и {mac} (MAC е единствен). Избран е {id}.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • name — text; задолжителен.
    • device_type — text; задолжителен; пр. router/switch/ap/firewall.
    • ip — text; опционален.
    • mac — text; опционален; MAC адреса.
    • status — text; опционален; up/down.

Network_services

Активни мрежни сервиси/порти што ги изложува компјутер. Потребен за следење на достапни сервиси.

  • Candidate keys: {id} и {computer, port, protocol}. Избран е {id}.
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • service_name — text; опционален; пр. SSH, HTTP.
    • port — numeric (integer); задолжителен; интервал 1–65535.
    • protocol — text; задолжителен; TCP/UDP.
    • status — text; опционален; listening/open/closed.
    • last_checked — date (datetime); опционален.

Service_availability

Историја на достапност (up/down проверки) на мрежен сервис. Потребен за следење на достапноста низ време.

  • Candidate keys: {id} (сурогат).
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • is_available — numeric (boolean 0/1); задолжителен.
    • response_time_ms — numeric (integer); опционален; ≥ 0.
    • timestamp — date (datetime); задолжителен.

Computer_groups

Организациска структура на компјутери (оддели/локации/тимови) со поддршка за хиерархија преку рекурзивна релација. Потребен за организациско групирање на машините.

  • Candidate keys: {id} и {name} (во рамки на tenant). Избран е {id}; хиерархијата се изразува преку релацијата parent_of (наместо атрибут-клуч).
  • Атрибути:
    • id — numeric (integer); задолжителен; примарен клуч, автоинкремент.
    • name — text; задолжителен.
    • description — text; опционален.

Relationships

Поврзаноста меѓу ентитетите е изразена преку именувани релации; надворешните клучеви што ги реализираат се воведуваат при преминот кон релациска шема (види долу).

  • has — Tenants (1) : Environments (N). Tenant поседува околини.
  • includes — Memberships (N) : Users (1). Членството се однесува на еден корисник.
  • belongs_to — Memberships (N) : Tenants (1). Членството припаѓа на еден tenant. (includes + belongs_to заедно ја реализираат M:N меѓу Users и Tenants.)
  • issues — Environments (1) : ENV_Tokens (N). Околина издава токени за агенти.
  • contains — Environments (1) : Computers (N). Околина логички содржи компјутери.
  • configured_by — Environments (1) : Env_settings (1). Секоја околина има точно еден запис со поставки.
  • has_networks — Environments (1) : Networks (N). Околина содржи мрежни сегменти.
  • contains_devices — Networks (1) : Network_devices (N). Подмрежа содржи мрежни уреди.
  • on_network — Networks (1) : Computers (N). Компјутер е поврзан на подмрежа.
  • records_current — Computers (1) : Computer_history_current (N). Последни перформансни метрики.
  • records_history — Computers (1) : Computer_history (N). Историски перформансни метрики.
  • runs — Computers (1) : Computer_processes_current (N). Тековни процеси.
  • logs — Computers (1) : Computer_processes_history (N). Историски процеси.
  • opens_current — Computers (1) : Network_connections_current (N). Тековни мрежни конекции.
  • opens_history — Computers (1) : Network_connections_history (N). Историски мрежни конекции.
  • generates — Computers (1) : Sysmon_events (N). Безбедносни/Sysmon настани.
  • triggers — Computers (1) : Security_alerts (N). Безбедносни аларми.
  • exposes — Computers (1) : Network_services (N). Компјутер изложува мрежни сервиси.
  • monitored_by — Network_services (1) : Service_availability (N). Сервисот се проверува за достапност низ време.
  • belongs_to_group — Computers (N) : Computer_groups (1). Компјутер припаѓа на организациска група.
  • parent_of — Computer_groups (1) : Computer_groups (N). Рекурзивна релација за хиерархија на групи (една група има подгрупи).

Релациска шема (надворешни клучеви)

  • Memberships(user_id → Users.id, tenant_id → Tenants.id), PK(user_id, tenant_id)
  • Environments(tenant_id → Tenants.id), UNIQUE(tenant_id, name)
  • ENV_Tokens(tenant_id → Tenants.id, env_name)
  • Computers(tenant_id → Tenants.id, env_name), UNIQUE(tenant_id, name)
  • Env_settings(tenant_id → Tenants.id, env_name), PK(tenant_id, env_name)
  • Networks(tenant_id → Tenants.id, env_name)
  • Network_devices(network_id → Networks.id)
  • Network_services(computer_id → Computers.id)
  • Service_availability(service_id → Network_services.id)
  • Computer_groups(tenant_id → Tenants.id, parent_id → Computer_groups.id)
  • Computer_history_current / Computer_history(computer_id → Computers.id)
  • Computer_processes_current / Computer_processes_history(computer_id → Computers.id)
  • Network_connections_current / Network_connections_history(computer_id → Computers.id)
  • Computers(group_id → Computer_groups.id), network_id → Networks.id
  • Sysmon_events / Security_alerts(computer_id → Computers.id)

Entity-Relationship Model History

  • v.01 — Иницијална верзија со основните ентитети.
  • v.02 — Додадени Env_settings, Computer_processes_current и Computer_processes_history за избор помеѓу трајно и тековно чување процеси.
  • v.03 — Формална исправка: отстранета табелата Computer_processes; сите врски претворени во именувани релации со кардиналности; надворешните клучеви извадени од дијаграмот; исправени имиња (tenants, process).
  • v.04 — Напредни проширувања: раздвојување тековна/историска состојба за сите видови следење (Computer_history и Network_connections добиваат _current/_history, со нови знамиња save_metrics_history и save_network_history); следење активни мрежни сервиси и достапност (Network_services, Service_availability); мрежна инфраструктура (Networks, Network_devices); организациска структура на компјутери со хиерархија (Computer_groups со рекурзивна parent_of).

Attachments (8)

Note: See TracWiki for help on using the wiki.