ETİMAD
Vahid İnformasiya Təhlükəsizliyi, Uyğunluq və İnsan Risklərinin İdarəedilməsi Platforması
Sənəd tipi: Product Requirements Document (PRD) + Sistem Arxitekturası + Prioritetləşdirilmiş Backlog Versiya: 0.9 (Draft for Review) Tarix: 2026-09-14 Status: Discovery / Architecture Baseline — təsdiq üçün Hədəf auditoriya: Dövlət qurumunun İT və İnformasiya Təhlükəsizliyi rəhbərliyi, GRC komandası, development komandası, daxili audit, satınalma Məxfilik: Daxili istifadə üçün
0. Sənəd haqqında
0.1 Repository analizi
Təqdim olunmuş işçi qovluq (/root/etimad) boşdur — mövcud kod bazası, texnologiya stack-i, migration və ya konfiqurasiya faylı yoxdur.
Nəticə: Layihə greenfield-dir. Buna görə bu sənəd mövcud arxitekturanın analizi bölməsini deyil, sıfırdan texnologiya seçimi və əsaslandırması bölməsini ehtiva edir (bax: §9).
Gələcəkdə repository doldurulduqda bu sənədin §9–§14 bölmələri "as-built" sənədə çevrilməli, hər dəyişiklik ADR (Architecture Decision Record) ilə müşayiət olunmalıdır.
0.2 Necə oxunmalıdır
| Rol | Oxunmalı bölmələr |
|---|---|
| Rəhbərlik / sifarişçi | §1, §2, §22, §23, §26, §27 |
| GRC / Compliance Officer | §3, §4 (M3–M9), §6, §15, §17 |
| Təhlükəsizlik memarı | §9, §10, §11, §12, §20, §19 |
| Development komandası | §4–§14, §21, §24, §25 |
| QA | §6, §15, §21, §25 |
| Daxili audit | §16, §15, §17, §20 |
0.3 Terminologiya (AZ ↔ EN)
Platformanın bütün UI mətnləri Azərbaycan dilində olacaq. Aşağıdakı lüğət normativdir — kod, API və UI-da eyni terminlər istifadə olunmalıdır.
| Azərbaycan dilində | English | İzah |
|---|---|---|
| Nəzarət tədbiri | Control | Framework tələbinin daxili realizasiyası |
| Tələb | Requirement | Framework-in normativ bəndi |
| Uyğunluq | Compliance | Framework tələblərinə cavab vermə |
| Tətbiq oluna bilənlik bəyannaməsi | Statement of Applicability (SoA) | ISO 27001 Annex A üzrə |
| Risk reyestri | Risk Register | |
| Qalıq risk | Residual Risk | |
| İlkin risk | Inherent Risk | |
| Risk emalı | Risk Treatment | |
| Uyğunsuzluq | Nonconformity | Audit tapıntısı növü |
| Tapıntı | Finding | |
| Düzəldici tədbir | Corrective Action | |
| Sübut | Evidence | |
| Aktiv | Asset | |
| Təchizatçı | Vendor / Supplier | |
| Təsnifat | Classification | Məlumat təsnifatı |
| Həssas məlumat | Sensitive Data | |
| Məlumat sızması | Data Leakage | |
| Hadisə | Incident | |
| İstisna | Exception | Policy/DLP istisnası |
| Etiraf / Tanışlıq təsdiqi | Acknowledgement | Policy ilə tanışlığın təsdiqi |
| Maarifləndirmə təlimi | Awareness Training | |
| Fişinq simulyasiyası | Phishing Simulation | |
| İnsan riski göstəricisi | Human Risk Score | |
| Tapşırıq | Task | |
| İş axını | Workflow | |
| Eskalasiya | Escalation | |
| Səlahiyyət | Permission | |
| Rol | Role | |
| Audit izi | Audit Trail |
0.4 Qəbul edilmiş fərziyyələr (Assumptions)
Aşağıdakı fərziyyələr işi dayandırmamaq üçün qəbul edilib. Hər biri §27-də açıq qərar kimi təkrar qeyd olunub və təsdiq tələb edir.
| # | Fərziyyə | Əsas | Səhv olarsa təsiri |
|---|---|---|---|
| A1 | Qurumda Microsoft Active Directory (Windows Server 2016+) mövcuddur, LDAPS (636) aktivdir | Dövlət qurumlarında ən yayılmış | AD sync modulu FreeIPA/OpenLDAP adapteri tələb edər (orta) |
| A2 | İlkin istifadəçi sayı 2 000 – 10 000, eyni anda aktiv 300–800 | Orta ölçülü dövlət qurumu | Capacity planning yenidən (aşağı) |
| A3 | Deployment tam on-premise, VMware/Proxmox virtual mühit və ya bare-metal Kubernetes | On-prem tələbi | Helm chart-lar dəyişər (aşağı) |
| A4 | Qurumun daxili SMTP relay-i və ya Exchange serveri var; fişinq üçün ayrıca çıxış relay-i ayrılacaq | Zəruri | Fişinq modulu ayrıca MTA tələb edər (orta) |
| A5 | İnternet çıxışı məhdud/proxy arxasındadır; heç bir modul xarici SaaS-dan asılı olmamalıdır | Dövlət tələbi | — |
| A6 | ISO/IEC 27001:2022 mətni qurumun lisenziyalı nüsxəsidir; platforma tam mətni saxlamır, yalnız bənd nömrəsi + qısa başlıq saxlayır | Müəllif hüququ | Hüquqi risk (yüksək) |
| A7 | DLP üçün endpoint/email agent-i üçüncü tərəf məhsuludur (və ya sonrakı fazada qurulur); ETİMAD policy orchestration + incident management qatıdır, agent deyil | MVP realizmi | Faza 3 skoupu 3–4 dəfə artar (kritik) |
| A8 | SSO üçün ADFS/Keycloak vasitəsilə SAML 2.0 və ya OIDC; Kerberos SPNEGO ikinci mərhələdə | Praktiklik | Auth flow dəyişər (aşağı) |
| A9 | Məlumat rezidentliyi: bütün data qurumun data mərkəzində; heç bir telemetriya xaricə getmir | Dövlət tələbi | — |
| A10 | Multi-tenant deyil, lakin multi-organization (mərkəzi aparat + regional qurumlar) bir instansiyada | Struktur | Schema-da organization_id onsuz da var (aşağı) |
| A11 | Dil dəstəyi: AZ (default), EN, RU. Tərcümə qurum tərəfindən təmin olunur | Tələb | — |
| A12 | Rəsmi sertifikatlaşdırma (ISO 27001 audit) platforma ilə deyil, platformanın dəstəyi ilə aparılır — platforma auditor alət deyil, sübut bazasıdır | Skoup | — |
1. Executive Summary
1.1 Problem
Dövlət qurumunda informasiya təhlükəsizliyinin idarə edilməsi hazırda parçalanmış vəziyyətdədir:
- Sənədlər — paylaşılan qovluqlarda Word/PDF faylları; hansı versiyanın qüvvədə olduğu, kimin oxuduğu bilinmir.
- Uyğunluq (ISO 27001) — Excel cədvəllərində SoA və nəzarət tədbirləri; audit ərəfəsində sübutlar əl ilə toplanır, 3–6 həftə vaxt aparır.
- Risklər — ayrıca Excel reyestri; qalıq risk hesablanması subyektivdir, yenilənmə tezliyi aşağıdır.
- İnsan amili — maarifləndirmə təlimləri epizodikdir, iştirak sübutu zəifdir; fişinq simulyasiyası ya aparılmır, ya da açıq kodlu alətlə (GoPhish) nəzarətsiz aparılır.
- Məlumat sızması — məlumat təsnifatı rəsmiləşdirilməyib; DLP tətbiqi üçün zəruri olan təsnifat taksonomiyası, həssas məlumat kataloqu və siyasət idarəetməsi yoxdur.
- Audit izi — kim nəyi nə vaxt dəyişdi sualına cavab yoxdur.
Nəticədə: audit hazırlığı bahalı, risk mənzərəsi qeyri-şəffaf, insan riski ölçülməz, məlumat sızması riski idarəolunmazdır.
1.2 Həll
ETİMAD — on-premise, Active Directory ilə inteqrasiya olunmuş, modulyar vahid platformadır. O, 15 funksional istiqaməti bir məlumat modeli və bir iş axını mühərriki ətrafında birləşdirir.
Platformanın fərqləndirici xüsusiyyəti — modulların bir-birini məlumatla qidalandırması:
Fişinq nəticəsi ──▶ İnsan Riski Profili ──▶ Risk Reyestri (BEC riski) ──▶ Düzəldici tapşırıq
│ │ │
└──▶ Mikro-təlim ◀───┘ Audit sübutu
│
DLP hadisəsi ──▶ Məlumat Riski ──▶ Nəzarət tədbirinin effektivliyi ──▶ SoA ──▶ Audit hazırlığı
│
└──▶ Təsnifat siyasətinin pozulması ──▶ Policy istisnası / Təlim təyinatı1.3 Əsas nəticələr (Business Outcomes)
| Nəticə | Ölçü | Baza (indi) | Hədəf (12 ay) |
|---|---|---|---|
| Audit hazırlığı müddəti | gün | 25–40 | ≤ 5 |
| Sübut toplama əməyi | adam-saat / audit | 200+ | ≤ 40 |
| ISO 27001 nəzarət tədbirlərinin sənədləşdirilmiş icra faizi | % | ~30 (naməlum) | ≥ 85 |
| Policy ilə tanışlıq təsdiqi | % işçi | naməlum | ≥ 95 |
| Fişinq klik nisbəti | % | ölçülmür | ≤ 5 (12 ay) |
| Fişinq bildirmə nisbəti | % | ~0 | ≥ 40 |
| Təlim tamamlanması | % | naməlum | ≥ 95 |
| Vaxtı keçmiş risk baxışı | ədəd | naməlum | 0 |
| Məlumat təsnifatı tətbiq olunmuş kritik sistemlər | % | 0 | 100 |
| DLP hadisələrinin triage müddəti (MTTT) | saat | — | ≤ 4 |
1.4 Skoup sərhədləri
Platforma EDİR:
- Siyasət, risk, nəzarət tədbiri, sübut, audit, təchizatçı, aktiv idarəetməsi
- Təlim və imtahan (LMS funksiyası)
- Fişinq simulyasiyası (öz mail göndərici ilə)
- Məlumat təsnifatı taksonomiyası və həssas məlumat kataloqu
- DLP siyasətlərinin dizaynı, təsdiqi, versiyalaşdırılması və hadisələrinin idarə edilməsi
- AD-dən oxuma, iş axını, tapşırıq, bildiriş, hesabat, audit izi
Platforma ETMİR (MVP-də və ya ümumiyyətlə):
- ❌ Endpoint agent / kernel driver (DLP enforcement) — üçüncü tərəf məhsulu ilə inteqrasiya (bax A7)
- ❌ Email gateway / proxy kimi trafik kəsmə
- ❌ SIEM əvəzləyicisi (log toplama və korrelyasiya) — inteqrasiya var, əvəzləmə yox
- ❌ Vulnerability scanner / pentest aləti
- ❌ Tam CMDB (yalnız GRC üçün yüngül aktiv reyestri)
- ❌ HR sistemi (AD/HR-dən oxuyur, yazmır)
- ❌ AD-yə yazma (default olaraq read-only)
- ❌ Rəsmi ISO 27001 mətninin yayımlanması
1.5 Arxitektura qərarı — bir cümlə ilə
Modular Monolith (.NET 9 / ASP.NET Core + PostgreSQL 16 + Redis + RabbitMQ + OpenSearch + MinIO, React 19 frontend, Keycloak IAM), Docker Compose (kiçik quraşdırma) və ya Kubernetes (HA) üzərində, modul sərhədləri kod səviyyəsində bərk şəkildə təmin olunur ki, gələcəkdə istənilən modul ayrıca servisə çıxarıla bilsin. Əsaslandırma: §9.3.
1.6 Mərhələlər və müddət (yüksək səviyyə)
| Faza | Məzmun | Müddət | Komanda |
|---|---|---|---|
| Faza 0 | Discovery, arxitektura, RBAC nüvəsi, audit log, design system | 8 həftə | 5 nəfər |
| Faza 1 | MVP: AD/SSO, təlim, imtahan, fişinq, siyasət, ISO 27001 + SoA, risk reyestri, əsas sübut, tapşırıq/bildiriş, dashboard | 20 həftə | 8–9 nəfər |
| Faza 2 | GRC genişlənməsi: audit, tapıntı, düzəldici tədbir, aktiv, təchizatçı, mapping, executive hesabatlar | 16 həftə | 8 nəfər |
| Faza 3 | Təsnifat + DLP: taksonomiya, həssas məlumat tipləri, DLP rule builder, hadisələr, konnektorlar | 18 həftə | 9 nəfər |
| Faza 4 | Avtomatlaşdırma: avtomatik sübut, təkmil risk skorinq, anomaliya, AI köməkçilər | 14 həftə | 7 nəfər |
Ümumi: ~76 həftə (≈18 ay) tam funksionallıq üçün; istifadəyə yararlı MVP 28 həftədən sonra.
2. Məhsulun məqsədi
2.1 Missiya
Dövlət qurumunda informasiya təhlükəsizliyinin idarə olunan, ölçülən və audit edilə bilən prosesə çevrilməsini təmin edən vahid platforma yaratmaq.
2.2 Məhsul prinsipləri (normativ)
| # | Prinsip | Praktiki nəticə |
|---|---|---|
| P1 | On-premise və internetsiz işləmə | Heç bir CDN, xarici font, xarici API çağırışı. Bütün asılılıqlar daxili registry-də. Offline lisenziya. |
| P2 | AD həqiqət mənbəyidir | İstifadəçi, departament, rəhbər münasibəti AD-dən gəlir; platformada əl ilə yaradılan istifadəçi istisnadır (break-glass, vendor). |
| P3 | Secure by default | Hər yeni obyekt ən məhdud görünürlüklə yaranır. Hər yeni rol sıfır səlahiyyətlə başlayır. Hər DLP siyasəti Monitor rejimində başlayır. |
| P4 | Dəyişdirilə bilməyən audit izi | Heç bir rol audit logunu redaktə/silə bilmir; hash zənciri ilə bütövlük yoxlanışı. |
| P5 | Modul deyil, əlaqə | Hər modulun ən azı 2 çıxış inteqrasiya nöqtəsi olmalıdır (bax §5). Təcrid olunmuş modul qəbul edilmir. |
| P6 | Ölçülə bilənlik | Hər modulun §4-də sadalanan metrikləri dashboard-da real vaxtda olmalıdır. |
| P7 | Etik insan riski | İstifadəçini utandıran, ictimai siyahıya salan, cəzalandıran heç bir mexanizm yoxdur (bax §4.2.9). |
| P8 | Ən az səlahiyyət + SoD | Yaradan təsdiqləyə bilməz; administrator məxfi məzmunu avtomatik görmür. |
| P9 | API-first | Hər UI əməliyyatı arxasında sənədləşdirilmiş API var; UI API-nin yeganə istifadəçisi deyil. |
| P10 | Konfiqurasiya > kod | Risk matrisi, təsnifat səviyyələri, iş axını mərhələləri, bildiriş şablonları — hamısı admin panelindən dəyişdirilə bilər. |
| P11 | Genişlənə bilən uyğunluq | Yeni framework əlavə etmək kod dəyişikliyi tələb etməməlidir — yalnız framework import faylı. |
| P12 | Azərbaycan dili birinci | Bütün default məzmun, şablon, bildiriş və hesabat AZ dilində; EN/RU tərcümə qatı. |
| P13 | Məlumat minimallaşdırılması | DLP analitiki lazım olandan artıq həssas məzmunu görmür; maskalama defaultdur. |
| P14 | Accessibility | WCAG 2.2 AA; status heç vaxt yalnız rənglə ifadə olunmur. |
| P15 | Açıq standartlar | LDAP, SAML, OIDC, SCIM, OpenAPI, xAPI, CEF/LEEF, STIX (gələcək), SPDX SBOM. Vendor lock-in yoxdur. |
2.3 Uğur meyarları (Definition of Success)
Faza 1 (MVP) uğurlu sayılır, əgər:
- 100% işçi AD SSO ilə daxil ola bilir, rolları avtomatik təyin olunur.
- Ən azı 3 məcburi siyasət nəşr olunub və ≥ 90% tanışlıq təsdiqi toplanıb.
- ISO 27001:2022 Annex A-nın 93 nəzarət tədbirinin hamısı sistemdə mövcuddur və SoA generasiya olunur (PDF/XLSX).
- Ən azı 1 fişinq kampaniyası təhlükəsiz şəkildə keçirilib, heç bir real parol saxlanılmayıb (təsdiq: təhlükəsizlik testi).
- Risk reyestrində ≥ 30 risk, hər birinin sahibi və qalıq riski var.
- Bütün kritik əməliyyatlar audit logunda; log bütövlüyü yoxlaması keçir.
- Negative authorization testlərinin 100%-i keçir.
3. Əsas istifadəçi rolları
3.1 Persona-lar
P1 — Adi əməkdaş (Elnur, 38, baş məsləhətçi)
- Nə edir: İldə 4–6 təlim, siyasətlərlə tanışlıq, şübhəli email bildirmək.
- Ağrı nöqtəsi: "Mənə nə lazımdır?" sualına cavab tapmaq. 15 modul onu qorxudur.
- Ehtiyac: Tək səhifə — "Mənim vəzifələrim", 3 klikdən çox olmayan axın, Azərbaycan dilində aydın dil.
- Uğur meyarı: İlk girişdən 60 saniyə ərzində nə etməli olduğunu başa düşür.
P2 — Şöbə müdiri (Aygün, 45, şöbə müdiri)
- Nə edir: Öz şöbəsinin təlim/siyasət statusunu izləyir, eskalasiyaları qəbul edir, təsdiqlər verir.
- Ağrı nöqtəsi: Kimin geciktiyini bilmək və xatırlatmaq üçün vaxt sərf etmək.
- Ehtiyac: Şöbə dashboard-u, bir kliklə xatırlatma, öz strukturundan kənarı görməmək.
P3 — Təhlükəsizlik / GRC mütəxəssisi (Rəşad, 33, aparıcı mütəxəssis)
- Nə edir: Nəzarət tədbirləri, risklər, sübutlar, fişinq kampaniyaları, DLP hadisələri.
- Ağrı nöqtəsi: Excel-lər arasında əlaqəni əl ilə saxlamaq.
- Ehtiyac: Hər obyektdən əlaqəli obyektlərə keçid, toplu əməliyyatlar, güclü filtr, saxlanmış görünüşlər.
P4 — Compliance Officer (Nigar, 41)
- Nə edir: SoA, gap analiz, audit hazırlığı, framework mapping.
- Ehtiyac: Bir nəzarət tədbirinin bütün framework-lərdə əksini görmək, sübut boşluqlarını dərhal tapmaq.
P5 — Daxili auditor (Kamran, 50)
- Nə edir: Audit planı, checklist, müsahibə, tapıntı, düzəldici tədbirin yoxlanışı.
- Ehtiyac: Sübutu dəyişdirmədən görmək, öz iş kağızlarını ayrıca saxlamaq, tapıntının tam tarixçəsi.
- SoD tələbi: Auditor öz yoxladığı nəzarət tədbirinin sahibi ola bilməz.
P6 — DLP analitiki (Tural, 29, SOC)
- Nə edir: DLP hadisələrinin triage-ı, yanlış pozitivlərin işarələnməsi, eskalasiya.
- Ağrı nöqtəsi: Həddindən artıq hadisə, çox yanlış pozitiv.
- Ehtiyac: Maskalanmış önizləmə, tam məzmun üçün səbəb tələb edən ayrıca icazə, toplu triage.
P7 — Data Owner (Səbinə, 44, HR şöbə müdiri)
- Nə edir: HR məlumatlarının təsnifatını təsdiqləyir, DLP istisnalarını rəy verir.
- Ehtiyac: Texniki olmayan dil, sadə təsdiq ekranı.
P8 — Rəhbərlik (Müavin, 55)
- Nə edir: Rüblük baxış, qərar.
- Ehtiyac: 1 ekran, 8 göstərici, trend, drill-down opsional. PDF hesabat.
P9 — Platform administratoru (İT, 35)
- Nə edir: AD sinxronizasiyası, rol təyinatı, konfiqurasiya, monitorinq.
- Məhdudiyyət: Məxfi sübut məzmununu və DLP hadisə məzmununu görmür.
P10 — Xarici auditor (müvəqqəti)
- Nə edir: Yalnız oxuyur, yalnız ona açılan audit skoupunda, müddətli hesabla.
3.2 Rol kataloqu
| # | Rol (sistem adı) | AZ adı | Təyinat mənbəyi | Skoup |
|---|---|---|---|---|
| R01 | employee | Əməkdaş | Avtomatik (hər AD istifadəçisi) | Özü |
| R02 | department_manager | Şöbə müdiri | AD manager atributu / əl ilə | Öz OU alt ağacı |
| R03 | training_manager | Təlim meneceri | Əl ilə | Qurum |
| R04 | phishing_manager | Fişinq kampaniya meneceri | Əl ilə | Qurum |
| R05 | policy_author | Siyasət müəllifi | Əl ilə | Təyin olunmuş sənədlər |
| R06 | policy_reviewer | Siyasət rəyçisi | Əl ilə | Təyin olunmuş sənədlər |
| R07 | policy_approver | Siyasət təsdiqləyicisi | Əl ilə | Təyin olunmuş sənədlər |
| R08 | compliance_officer | Uyğunluq üzrə məsul | Əl ilə | Qurum |
| R09 | risk_owner | Risk sahibi | Obyekt üzrə təyinat | Öz riskləri |
| R10 | risk_manager | Risk meneceri | Əl ilə | Qurum |
| R11 | internal_auditor | Daxili auditor | Əl ilə | Təyin olunmuş auditlər |
| R12 | external_auditor | Xarici auditor | Əl ilə, müddətli | Yalnız audit skoupu |
| R13 | evidence_owner | Sübut sahibi | Obyekt üzrə | Öz sübutları |
| R14 | data_owner | Məlumat sahibi | Obyekt üzrə | Öz məlumat aktivləri |
| R15 | dlp_analyst | DLP analitiki | Əl ilə | DLP hadisələri (maskalanmış) |
| R16 | dlp_admin | DLP administratoru | Əl ilə | DLP siyasətləri (məzmunsuz) |
| R17 | security_incident_analyst | Hadisə analitiki | Əl ilə | Təhlükəsizlik hadisələri |
| R18 | vendor_manager | Təchizatçı meneceri | Əl ilə | Təchizatçılar |
| R19 | executive_viewer | Rəhbərlik (baxış) | Əl ilə | Qurum, aqreqat |
| R20 | platform_admin | Platforma administratoru | Əl ilə | Konfiqurasiya (məzmunsuz) |
| R21 | readonly_auditor | Yalnız oxuma auditoru | Əl ilə | Qurum, oxuma |
| R22 | content_author | Təlim məzmunu müəllifi | Əl ilə | Təlim kataloqu |
| R23 | asset_owner | Aktiv sahibi | Obyekt üzrə | Öz aktivləri |
| R24 | control_owner | Nəzarət tədbirinin sahibi | Obyekt üzrə | Öz nəzarət tədbirləri |
| R25 | break_glass_admin | Fövqəladə administrator | Lokal, seyfdə | Tam (MFA + 2 nəfər + alarm) |
3.3 Segregation of Duties (SoD) qaydaları — normativ
Sistem aşağıdakı kombinasiyaları bloklamalıdır (rol təyinatı zamanı xəbərdarlıq + təsdiq tələbi, və ya tam blok):
| # | Qadağan olunmuş kombinasiya | Səviyyə | Səbəb |
|---|---|---|---|
| SoD-1 | Eyni sənəddə policy_author + policy_approver | Blok (obyekt səviyyəsi) | Özünü təsdiq |
| SoD-2 | Eyni riskdə risk_owner + risk qəbulunu təsdiqləyən | Blok | Özünə risk qəbulu |
| SoD-3 | internal_auditor + audit olunan nəzarət tədbirinin control_owner | Blok (obyekt səviyyəsi) | Özünü audit |
| SoD-4 | dlp_admin + dlp_analyst | Xəbərdarlıq + təsdiq | Siyasəti yaradan hadisəni gizlədə bilər |
| SoD-5 | platform_admin + compliance_officer | Xəbərdarlıq | Konfiqurasiya ilə uyğunluğu manipulyasiya |
| SoD-6 | platform_admin + hər hansı *_approver | Xəbərdarlıq + təsdiq | Səlahiyyət toplanması |
| SoD-7 | Eyni tapıntıda düzəldici tədbiri icra edən + yoxlayan auditor | Blok | Özünü yoxlama |
| SoD-8 | vendor_manager + təchizatçı risk qiymətləndirməsini təsdiqləyən | Xəbərdarlıq | |
| SoD-9 | Eyni sübutda evidence_owner + sübutu təsdiqləyən reviewer | Blok | |
| SoD-10 | phishing_manager + kampaniyanı təsdiqləyən | Blok | Nəzarətsiz kampaniya |
Realizasiya: sod_rule cədvəli (konfiqurasiya edilə bilən), rol təyinatı və obyekt təyinatı zamanı SoDEvaluator xidməti. Blok halında əməliyyat rədd edilir və SOD_VIOLATION_BLOCKED audit hadisəsi yazılır. Xəbərdarlıq halında ikinci administratorun təsdiqi (dual control) tələb olunur və SOD_OVERRIDE_APPROVED yazılır.
4. Funksional modullar
4.0 Modul xəritəsi
| Kod | Modul | Faza | Kritiklik |
|---|---|---|---|
| M01 | Maarifləndirmə Təlimi (Awareness Training) | 1 | Yüksək |
| M02 | Fişinq Simulyasiyası və İnsan Riski | 1 | Yüksək |
| M03 | Siyasət və Sənəd İdarəetməsi | 1 | Kritik |
| M04 | Uyğunluq İdarəetməsi (ISO 27001 + framework-lər) | 1 | Kritik |
| M05 | Risk İdarəetməsi | 1 | Kritik |
| M06 | Audit İdarəetməsi | 2 | Yüksək |
| M07 | Sübut İdarəetməsi | 1 (əsas) / 2 (təkmil) | Kritik |
| M08 | Aktiv və Sahiblik Reyestri | 2 | Orta |
| M09 | Təchizatçı Riskinin İdarəetməsi | 2 | Orta |
| M10 | Məlumat Təsnifatı | 3 | Yüksək |
| M11 | Həssas Məlumatın Aşkarlanması (Discovery) | 3 | Orta |
| M12 | DLP Siyasətlərinin İdarəetməsi | 3 | Yüksək |
| M13 | DLP Hadisələrinin İdarəetməsi | 3 | Yüksək |
| M14 | Active Directory və IAM | 0/1 | Kritik (bünövrə) |
| M15 | Təhlükəsizlik Hadisələrinin Bildirilməsi | 1 | Orta |
| M16 | Dashboard və Hesabatlar | 1 (əsas) / 2 (executive) | Yüksək |
| M17 | İş Axını və Tapşırıq Mühərriki | 0/1 | Kritik (bünövrə) |
| M18 | Platforma Administrasiyası və Audit İzi | 0 | Kritik (bünövrə) |
Bünövrə modulları (M14, M17, M18) Faza 0/1-in əvvəlində hazır olmalıdır — bütün digər modullar onlardan asılıdır.
4.1 M01 — Maarifləndirmə Təlimi
4.1.1 Məqsəd
İşçilərin informasiya təhlükəsizliyi üzrə bilik səviyyəsini planlı, rola uyğun və sübut edilə bilən şəkildə artırmaq; ISO 27001 A.6.3 (Information security awareness, education and training) tələbinə sübut bazası yaratmaq.
4.1.2 İstifadəçilər
| Rol | Fəaliyyət |
|---|---|
| Əməkdaş | Təlimi keçir, imtahan verir, sertifikat alır |
| Şöbə müdiri | Şöbənin statusunu görür, xatırladır |
| Təlim meneceri | Proqram və kampaniya qurur, təyinat qaydaları yazır |
| Məzmun müəllifi | Dərs, sual bankı yaradır, tərcümə edir |
| Compliance Officer | Tamamlanmanı sübut kimi istifadə edir |
4.1.3 Funksiyalar
Məzmun (Content)
- Dərs tipləri:
text(rich text),image(şəkilli slayd),video(MP4/WebM, daxili saxlama, xarici hosting YOXDUR),interactive(ssenari/branching),micro(≤ 5 dəq),scorm(SCORM 1.2 / 2004 paketi),xapi - Dərs kateqoriyaları (ierarxik): Fişinq, Parol, Məxfi məlumat, Sosial mühəndislik, Fiziki təhlükəsizlik, Uzaqdan iş, Mobil cihaz, Hadisə bildirilməsi, Rola xas mövzular
- Versiyalaşdırma: hər dərsin versiyası; yayımlanmış versiya dəyişdirilə bilməz, yeni versiya yaradılır
- Çoxdillilik:
lesson_translation— AZ/EN/RU; tərcümə olmadıqda default dilə fallback + görünən xəbərdarlıq - Media: video üçün altyazı (WebVTT) məcburi (accessibility), transkript opsional
- SCORM/xAPI: SCORM paketi daxili player-də (offline, CDN-siz); xAPI ifadələri daxili LRS-ə (
xapi_statementcədvəli). Qiymətləndirmə: SCORM Faza 2-ə köçürülür — MVP-də native dərs formatı kifayətdir, SCORM əsasən hazır kommersiya məzmunu üçün lazımdır.
Proqram və kampaniya
TrainingProgram— dərslərin sıralı və ya sərbəst ardıcıllığı + imtahan + keçid şərtiTrainingCampaign— proqramın konkret auditoriyaya, konkret müddətə təyinatı- Təkrarlanan kampaniya (illik məcburi təlim): cron ifadəsi ilə
İmtahan
- Sual bankı:
multiple_choice(tək/çox cavab),true_false,scenario(situasiya + variantlar),ordering,matching - Sual metadata: çətinlik (1–5), kateqoriya, dil, izah (cavabdan sonra göstərilir)
- Təsadüfi seçim: "N sualdan M-ni seç", kateqoriya üzrə kvota (məs. Fişinq: 4, Parol: 3)
- Variantların qarışdırılması (shuffle)
- Minimum keçid balı (proqram səviyyəsində, default 80%)
- Vaxt limiti (dəqiqə), serverdə yoxlanılır (klient saatına güvənilmir)
- Təkrar cəhd: maksimum sayı, cəhdlər arası gözləmə müddəti (cooldown)
- Nəticənin göstərilməsi: bal, keçdi/keçmədi, səhv cavabların izahı (konfiqurasiya edilə bilər)
Təyinat (Assignment)
- Əl ilə təyinat (istifadəçi / qrup / şöbə)
- Qayda əsaslı avtomatik təyinat —
AssignmentRule:
`` ŞƏRT (AD qrupu ∈ {...}) VƏ (departament ∈ {...}) VƏ (vəzifə LIKE '%...%') VƏ (human_risk_band ∈ {high, critical}) VƏ (əvvəlki nəticə < 80) ⇒ TƏYİN ET proqram X, müddət 14 gün, prioritet: yüksək ``
- Tetikleyicilər: yeni işçi (AD-də yaranma), şöbə dəyişikliyi, AD qrupuna əlavə olunma, fişinq uğursuzluğu, DLP hadisəsi, siyasət nəşri, risk səviyyəsinin artması
- Rola görə məcburi proqramlar (bax 4.1.4)
İzləmə və eskalasiya
- Deadline, xatırlatma cədvəli (məs. −7, −3, −1 gün, +1, +3 gün)
- Eskalasiya: gecikmə +N gün → şöbə müdiri; +M gün → müdirin müdiri; +K gün → HR/Təhlükəsizlik
- Tamamlanma sübutu:
TrainingResult+ PDF sertifikat (unikal nömrə, QR ilə doğrulama linki — daxili) - Tam tarixçə: kim, nə vaxt, hansı versiyanı, neçə dəqiqə, hansı cəhddə
4.1.4 Rola görə məcburi təlim matrisi (default, konfiqurasiya edilə bilər)
| Rol / qrup | Proqramlar | Tezlik |
|---|---|---|
| Adi əməkdaş | Əsas maarifləndirmə, Fişinq, Parol, Məlumat təsnifatı | İllik |
| Rəhbərlik | Əsas + BEC/CEO fraud + Risk qərarları | İllik |
| HR | Əsas + Şəxsi məlumatların qorunması + Sosial mühəndislik | İllik |
| Maliyyə | Əsas + BEC/ödəniş fırıldağı + Sənəd təsnifatı | 6 ay |
| Hüquq | Əsas + Məxfilik + Müqavilə təhlükəsizliyi | İllik |
| Developer | Əsas + Secure Coding (OWASP Top 10) + Secret management | 6 ay |
| System administrator | Əsas + Privileged access + Log və monitorinq + Backup | 6 ay |
| Helpdesk | Əsas + Şəxsiyyətin doğrulanması + Vishing/sosial mühəndislik | 6 ay |
| Security team | Əsas + Hadisələrə cavab + Forensics əsasları | 6 ay |
| Privileged user | Əsas + PAM qaydaları | 6 ay |
| Regional qurum əməkdaşı | Əsas (AZ dilində, sadələşdirilmiş) | İllik |
| Vendor / müvəqqəti | Qısa məcburi brifinq + NDA tanışlığı | Giriş zamanı + illik |
4.1.5 Məlumat obyektləri
Lesson, LessonVersion, LessonTranslation, LessonCategory, MediaAsset, TrainingProgram, ProgramItem, TrainingCampaign, AssignmentRule, TrainingAssignment, TrainingProgress, Exam, ExamQuestionPool, Question, QuestionOption, QuestionTranslation, ExamAttempt, ExamAnswer, TrainingResult, Certificate, XapiStatement
4.1.6 İş axını
Dərs: Draft → Review → Published → (Superseded) → Archived
Kampaniya: Draft → Scheduled → Active → Completed → Archived
Təyinat: Assigned → In Progress → Exam Pending → Passed | Failed → (Retake) → Completed
└─(deadline keçdi)→ Overdue → Escalated4.1.7 Səlahiyyətlər
| Əməliyyat | employee | dept_manager | training_manager | content_author | compliance_officer |
|---|---|---|---|---|---|
| Öz təyinatını görmək | ✅ | ✅ | ✅ | — | — |
| Başqasının nəticəsini görmək | ❌ | Yalnız öz alt ağacı | ✅ | ❌ | ✅ (aqreqat + fərdi) |
| Dərs yaratmaq/redaktə | ❌ | ❌ | ✅ | ✅ | ❌ |
| Dərsi nəşr etmək | ❌ | ❌ | ✅ | ❌ | ❌ |
| Kampaniya yaratmaq | ❌ | ❌ | ✅ | ❌ | ❌ |
| Deadline uzatmaq | ❌ | ✅ (öz alt ağacı, səbəblə) | ✅ | ❌ | ❌ |
| İmtahan cavablarını görmək | Yalnız öz | ❌ | ✅ | ✅ | ❌ |
| Sertifikat yükləmək | Öz | Alt ağac | ✅ | ❌ | ✅ |
| Nəticəni əl ilə dəyişmək | ❌ | ❌ | ⚠️ Səbəb + dual control | ❌ | ❌ |
4.1.8 Audit log hadisələri
TRAINING_LESSON_CREATED, TRAINING_LESSON_PUBLISHED, TRAINING_CAMPAIGN_LAUNCHED, TRAINING_ASSIGNED, TRAINING_STARTED, TRAINING_COMPLETED, EXAM_STARTED, EXAM_SUBMITTED, EXAM_RESULT_OVERRIDDEN, CERTIFICATE_ISSUED, TRAINING_DEADLINE_EXTENDED, TRAINING_ESCALATED, TRAINING_RESULT_VIEWED (başqasının nəticəsi), ASSIGNMENT_RULE_CHANGED
4.1.9 API
GET /api/v1/trainings/my # öz təyinatlarım
GET /api/v1/trainings/my/{assignmentId}
POST /api/v1/trainings/my/{assignmentId}/start
POST /api/v1/trainings/my/{assignmentId}/progress # {lessonId, position, completed}
GET /api/v1/lessons?category=&lang=&status=
POST /api/v1/lessons
PUT /api/v1/lessons/{id}
POST /api/v1/lessons/{id}/publish
POST /api/v1/lessons/{id}/translations
GET /api/v1/training-programs
POST /api/v1/training-programs
GET /api/v1/training-campaigns
POST /api/v1/training-campaigns
POST /api/v1/training-campaigns/{id}/launch
POST /api/v1/training-campaigns/{id}/pause
GET /api/v1/training-campaigns/{id}/statistics
POST /api/v1/training-assignments/bulk # toplu təyinat
PATCH /api/v1/training-assignments/{id}/deadline # {newDate, justification}
GET /api/v1/assignment-rules
POST /api/v1/assignment-rules
POST /api/v1/assignment-rules/{id}/simulate # neçə nəfərə təsir edəcək
GET /api/v1/exams/{id}/attempt # aktiv cəhd (server-side timer)
POST /api/v1/exams/{id}/attempts
POST /api/v1/exams/attempts/{attemptId}/answers
POST /api/v1/exams/attempts/{attemptId}/submit
GET /api/v1/questions?category=&difficulty=
POST /api/v1/questions/import # CSV/XLSX
GET /api/v1/certificates/{id}/download # PDF
GET /api/v1/certificates/verify/{code} # daxili doğrulama
GET /api/v1/reports/training-completion4.1.10 UI səhifələri
| Səhifə | Marşrut | Təsvir |
|---|---|---|
| Mənim təlimlərim | /trainings/my | Kart siyahısı: proqram adı, irəliləyiş barı, deadline (gün sayı + rəng + ikon), "Davam et" |
| Dərs pleyeri | /trainings/my/{id}/play | Sol: dərs siyahısı (tamamlanma işarəsi); orta: məzmun; alt: "Növbəti"; avtosave hər 15 s |
| İmtahan | /exams/{id}/attempt | Yuxarıda serverdən gələn taymer, sual naviqasiyası, "Təsdiq et" dialoqu |
| İmtahan nəticəsi | /exams/attempts/{id}/result | Bal, keçid statusu, səhvlərin izahı, sertifikat düyməsi |
| Sertifikatlarım | /trainings/my/certificates | Siyahı + PDF |
| Təlim kataloqu (admin) | /admin/trainings/lessons | Cədvəl: ad, kateqoriya, tip, dillər, versiya, status |
| Dərs redaktoru | /admin/trainings/lessons/{id} | Tab-lar: Məzmun, Media, Tərcümələr, Versiyalar |
| Proqramlar | /admin/trainings/programs | |
| Kampaniyalar | /admin/trainings/campaigns | Cədvəl + "Yeni kampaniya" sihirbazı (4 addım: Proqram → Auditoriya → Cədvəl → Baxış) |
| Kampaniya detalı | /admin/trainings/campaigns/{id} | Statistika, hədəf siyahısı, xatırlatma tarixçəsi |
| Sual bankı | /admin/trainings/questions | |
| Təyinat qaydaları | /admin/trainings/assignment-rules | Qayda qurucusu + "Simulyasiya et" |
| Şöbə görünüşü | /trainings/team | Müdir üçün: işçi, proqram, status, deadline, "Xatırlat" |
4.1.11 Metriklər
- Təlim tamamlanma faizi (ümumi / şöbə / proqram / kampaniya)
- Vaxtında tamamlanma faizi
- Orta imtahan balı, ilk cəhddən keçmə faizi
- Orta tamamlanma müddəti (təyinatdan bitməyə)
- Gecikmiş təyinatların sayı və yaşı
- Ən çox səhv cavablanan suallar (məzmun təkmilləşdirməsi üçün)
- Kateqoriya üzrə zəiflik xəritəsi (şöbə × mövzu)
4.1.12 Digər modullarla əlaqə
| İstiqamət | Əlaqə |
|---|---|
| M02 → M01 | Fişinq uğursuzluğu avtomatik mikro-təlim təyinatı yaradır |
| M01 → M02 | Təlim tamamlanması Human Risk Score-u azaldır |
| M03 → M01 | Siyasət nəşri → siyasət üzrə qısa test təyinatı |
| M01 → M04 | Tamamlanma statistikası A.6.3 nəzarət tədbirinə avtomatik sübut |
| M01 → M07 | Kampaniya hesabatı sübut obyekti kimi saxlanılır |
| M14 → M01 | AD qrup dəyişikliyi → təyinat qaydalarının yenidən hesablanması |
| M05 → M01 | Risk səviyyəsi yüksək şöbəyə əlavə təlim |
| M13 → M01 | DLP hadisəsi → hədəflənmiş təlim |
4.1.13 Qəbul meyarları (Acceptance Criteria)
- Yeni AD istifadəçisi sinxronizasiyadan sonra ≤ 15 dəqiqə ərzində rola uyğun məcburi proqramlar təyin olunur.
- İmtahan taymeri serverdə saxlanılır; brauzer bağlanıb açıldıqda qalan vaxt düzgün göstərilir; vaxt bitdikdə cavab qəbul edilmir (HTTP 409).
- İmtahan sualları və düzgün cavablar heç bir halda klient API cavabında düzgünlük bayrağı ilə göndərilmir (test: response body-də
isCorrectyoxdur). - Eyni istifadəçi eyni imtahanda paralel iki cəhd aça bilmir.
- Sertifikat PDF-i unikal nömrə, verilmə tarixi, proqram adı, versiya və doğrulama kodu ilə yaranır; kod ilə doğrulama səhifəsi işləyir.
- Deadline uzadılması səbəbsiz mümkün deyil; səbəb audit logunda saxlanılır.
- Şöbə müdiri başqa şöbənin nəticəsini API vasitəsilə birbaşa ID ilə də ala bilmir (negative authorization testi HTTP 403 qaytarır).
- AZ tərcüməsi olmayan dərs AZ interfeysdə açıq xəbərdarlıq ilə default dildə göstərilir.
- Video dərsdə altyazı faylı yoxdursa dərs
Publishedstatusuna keçə bilmir. - Kampaniya 5 000 istifadəçiyə ≤ 5 dəqiqə ərzində təyin olunur (background job, idempotent).
4.2 M02 — Fişinq Simulyasiyası və İnsan Riskinin İdarəetməsi
4.2.1 Məqsəd
İşçilərin sosial mühəndislik hücumlarına real davranışını təhlükəsiz, etik və ölçülə bilən şəkildə qiymətləndirmək; nəticəni hədəflənmiş təlimə və risk reyestrinə bağlamaq.
Fərq (GoPhish-dən irəli): təsdiq iş axını, fövqəladə dayandırma, real parolun texniki olaraq saxlanmasının qeyri-mümkünlüyü, AD-əsaslı hədəfləmə, insan riski profili, avtomatik remediasiya, SIEM inteqrasiyası, məlumat minimallaşdırılması və etik nəticə paylaşımı.
4.2.2 İstifadəçilər
Fişinq kampaniya meneceri (qurur), Təhlükəsizlik rəhbəri (təsdiqləyir), Şöbə müdiri (öz şöbəsinin aqreqat nəticəsini görür), Əməkdaş (yalnız öz nəticəsini + təlimini görür), SOC (bildirilən emailləri qəbul edir).
4.2.3 Funksiyalar
Şablon və məzmun
- Email şablon qurucusu: vizual (drag-and-drop bloklar) + HTML mənbə redaktoru + düz mətn alternativi
- Dəyişənlər:
{{FirstName}},{{LastName}},{{Department}},{{Position}},{{ManagerName}},{{Date}},{{TrackingUrl}},{{QrCode}},{{AttachmentName}} - Şablon versiyalaşdırılması, çətinlik səviyyəsi (1–5), dil, kateqoriya (BEC, təchizatçı hesab-fakturası, İT dəstəyi, HR, kuryer, dövlət qurumu bildirişi)
- Landing page qurucusu: təlim səhifəsi, "bu simulyasiya idi" izahı, kredensial formu simulyasiyası
- Şablon kitabxanası: AZ dilində ≥ 25 hazır şablon (dövlət qurumu kontekstinə uyğun)
Göndərmə infrastrukturu
SenderProfile: göndərən adı, from/reply-to, SMTP host/port/TLS/auth, göndərmə sürəti (msg/dəq)TrackingDomain: ayrıca domen/subdomen, sertifikat, marşrut; əsas qurum domenindən fərqli olmalıdır- Email gateway inteqrasiyası: allowlist (simulyasiya IP/domeni spam filtrindən keçsin), header-lə işarələmə (
X-ETIMAD-Simulation: <campaignToken>) — real hücumdan ayırd etmək üçün - Göndərmə pəncərəsi: iş saatları, təsadüfi paylanma (məs. 4 saat ərzində bərabər), vaxt zonası nəzərə alınmaqla
Hədəfləmə
- Mənbələr: AD qrupu, OU, departament, vəzifə, risk bandı, əvvəlki kampaniya nəticəsi, əl ilə siyahı, CSV
- İstisna siyahısı (
ExclusionList): rəhbərlik (opsional), xəstəliyə görə məzuniyyətdə olanlar, HR-in müəyyən etdiyi həssas hallar, təhlükəsizlik komandası (opsional), xidməti hesablar (həmişə istisna) - Suppression list: son N gün ərzində kampaniyada iştirak edənlər (təlim yorğunluğunun qarşısı)
- Hədəf sayının önizləməsi və "kimlər" siyahısı (təsdiqdən əvvəl)
Kampaniya tipləri
- Link simulyasiyası (klik izlənir)
- Kredensial simulyasiyası (form göndərilməsi izlənir — dəyər YOX)
- Qoşma simulyasiyası (təhlükəsiz fayl: makro OLMAYAN docx/pdf, açılış izlənir tracking pixel və ya daxili link ilə)
- QR fişinq (email və ya çap üçün QR kod, skan izlənir)
- Yalnız bildirmə testi (report-only: məqsəd klik deyil, bildirmə nisbətini ölçmək)
İdarəetmə
- Təsdiq iş axını (bax 4.2.6) — təsdiqsiz kampaniya göndərilə bilməz
- Planlaşdırma, təkrarlanan kampaniyalar (rüblük)
- Fövqəladə dayandırma (Emergency Stop): bir düymə → növbə boşaldılır, landing page-lər "kampaniya dayandırıldı" səhifəsinə yönlənir, SOC-a bildiriş. Səlahiyyət: kampaniya meneceri, təhlükəsizlik rəhbəri, platform admin.
- Test göndərişi: kampaniyadan əvvəl özünə/test qutusuna
- Real vaxtda izləmə paneli
Bildirmə (Reporting) inteqrasiyası
- Outlook add-in / M365 "Report Phishing" düyməsi: bildirilən email ETİMAD-a göndərilir; header token varsa → simulyasiya kimi tanınır, dərhal "Təşəkkür, bu bizim simulyasiyamız idi" cavabı; token yoxdursa → real şübhəli email kimi M15-ə hadisə açılır
- Gmail Report Phishing (opsional, əgər Google Workspace varsa)
- Fallback:
phishing-report@qurum.gov.azpoçt qutusunun IMAP ilə oxunması
Real fişinqin təlim nümunəsinə çevrilməsi
- SOC real fişinq emailini M15-dən "Şablona çevir" düyməsi ilə götürür
- Sanitizasiya boru xətti (məcburi, avtomatik):
- Bütün xarici linklər
#və ya simulyasiya URL-i ilə əvəzlənir - Bütün qoşmalar silinir (yalnız adı və tipi saxlanılır)
- Bütün
<script>,<iframe>,<object>, event handler-lər silinir (HTML allowlist sanitizer) - Remote resurslar (şəkil, font) daxili proxy-yə köçürülür və ya silinir
- Real qurbanın məlumatları (email, ad) maskalanır
- Nəticə insan tərəfindən nəzərdən keçirilir və təsdiqlənir
original_source_incident_idsaxlanılır (audit üçün)
4.2.4 Toplanan hadisələr
| Hadisə | Necə toplanır | Saxlanılan məlumat |
|---|---|---|
EMAIL_SENT | MTA-dan | vaxt, hədəf id |
EMAIL_DELIVERED | SMTP 250 / bounce yoxlanışı | vaxt, status |
EMAIL_BOUNCED | bounce | səbəb kodu |
EMAIL_OPENED | 1×1 tracking pixel | vaxt, UA, IP (maskalanmış) |
LINK_CLICKED | tracking URL redirect | vaxt, UA, IP (maskalanmış) |
QR_SCANNED | QR → tracking URL (fərqli token) | vaxt, UA |
ATTACHMENT_OPENED | sənəd daxilindəki tracking resurs | vaxt |
DATA_SUBMITTED | landing form POST | yalnız hadisə faktı + sahə adlarının sayı |
PHISHING_REPORTED | add-in / poçt qutusu | vaxt, kanal |
TRAINING_STARTED | M01-dən | vaxt |
TRAINING_COMPLETED | M01-dən | vaxt, bal |
Törəmə metrik: time_to_click = clicked_at − delivered_at, time_to_report = reported_at − delivered_at
4.2.5 🔒 Kredensial simulyasiyasının təhlükəsizlik dizaynı (KRİTİK)
Bu bölmə normativdir və dəyişdirilə bilməz.
| Tələb | Realizasiya | Yoxlama |
|---|---|---|
| Real parol heç vaxt saxlanmır | Landing form <input> dəyərləri serverə ümumiyyətlə göndərilmir. Səhifədəki JS submit hadisəsini kəsir, preventDefault() edir və yalnız POST /t/{token}/submitted {"fieldCount": n} göndərir | DAST + kod review + şəbəkə trafikinin yoxlanışı |
| Server tərəfdə müdafiə | Landing endpoint-i application/x-www-form-urlencoded və multipart body-ni oxumur; yalnız application/json və yalnız fieldCount sxemi qəbul edir. Digər body-lər dərhal atılır (parse edilmədən) | Unit + inteqrasiya testi: parol sahəsi ilə POST → body heç yerdə loglanmır |
| Loglara sızma qadağası | Reverse proxy-də bu marşrut üçün access_log body yazmır; tətbiq log filtri password, pass, pwd, otp, pin, token açar sözlərini redaktə edir; POST body heç bir log səviyyəsində yazılmır | Log inspeksiya testi (avtomatlaşdırılmış) |
| HTTPS məcburi | Landing yalnız TLS; HSTS | Konfiqurasiya testi |
| Səhifə brauzer saxlamasına düşməsin | autocomplete="off", Cache-Control: no-store, parol menecerinə işarə verməmək üçün name atributları neytral | Manual test |
| Dərhal açıqlama | Form göndərildikdən sonra dərhal təlim səhifəsi: "Bu təhlükəsizlik simulyasiyası idi. Daxil etdiyiniz məlumat saxlanılmadı." | UAT |
| Parol dəyişikliyi tövsiyəsi | Səhifədə: "Ehtiyatlı olmaq üçün parolunuzu dəyişməyiniz tövsiyə olunur" + daxili parol dəyişmə linki | UAT |
| Kod izolyasiyası | Landing page servisi ayrıca deployment vahididir, əsas verilənlər bazasına yazma girişi yoxdur — yalnız hadisə növbəsinə (RabbitMQ) yazır | Arxitektura review |
Test halı (məcburi, hər relizdə): avtomatlaşdırılmış test kredensial səhifəsinə password=P@ssw0rd123! göndərir; sonra bütün DB cədvəlləri, bütün log faylları, mesaj növbəsi və fayl saxlamasında bu sətir axtarılır → 0 nəticə tələb olunur. Nəticə 0 deyilsə → build fail.
4.2.6 İş axını
Kampaniya:
Draft
→ Ready for Review (menecer təqdim edir)
→ Security Review (təhlükəsizlik rəyi: şablon, hədəf, etika)
→ Approved (təhlükəsizlik rəhbəri; SoD: yaradan təsdiqləyə bilməz)
→ Scheduled
→ Running (Pause / EMERGENCY STOP mümkündür)
→ Completed
→ Report Issued
→ Archived
Rədd yolu: Security Review → Rejected → DraftTəsdiq üçün məcburi yoxlama siyahısı (sistem avtomatik yoxlayır):
- <input type="checkbox" disabled> Hədəf sayı və siyahısı nəzərdən keçirilib
- <input type="checkbox" disabled> Xidməti hesablar istisna edilib
- <input type="checkbox" disabled> Suppression list tətbiq olunub
- <input type="checkbox" disabled> Şablon sanitizasiyadan keçib (əgər real emaildən götürülübsə)
- <input type="checkbox" disabled> Tracking domeni əsas domendən fərqlidir
- <input type="checkbox" disabled> Email gateway allowlist konfiqurasiya olunub
- <input type="checkbox" disabled> SOC xəbərdar edilib (kampaniya pəncərəsi bildirilib)
- <input type="checkbox" disabled> Landing page kredensial saxlamır (avtomatik yoxlama nəticəsi: PASS)
- <input type="checkbox" disabled> Təlim təyinatı konfiqurasiya olunub
- <input type="checkbox" disabled> HR/hüquq razılığı (qurum siyasətinə görə tələb olunursa)
4.2.7 İnsan Riski Profili (Human Risk Score)
Məqsəd: işçinin davranış riskini vahid, izah edilə bilən, etik göstərici ilə ifadə etmək.
Formula (konfiqurasiya edilə bilən, default):
HRS = 100 − (w1·P + w2·T + w3·R + w4·D + w5·A) → 0..100, yüksək = yüksək riskƏslində müsbət risk toplusu kimi hesablanır:
| Komponent | Çəki (default) | Hesablama |
|---|---|---|
P Fişinq davranışı | 40% | Son 12 ayda: klik = +10, qoşma açma = +15, kredensial göndərmə = +25, bildirmə = −15 (hər hadisə, zamanla sönən) |
T Təlim uyğunluğu | 20% | Gecikmiş təlim = +10/ədəd; ilk cəhddən keçməmə = +5; vaxtında tamamlama = −5 |
D DLP davranışı | 20% | Təsdiqlənmiş DLP hadisəsi: aşağı = +5, orta = +10, yüksək = +20; yanlış pozitiv = 0 |
A Giriş/imtiyaz konteksti | 10% | Privileged qrup üzvlüyü = +10; həssas məlumata giriş = +5 |
R Müsbət davranış | 10% | Şübhəli email bildirməsi, hadisə bildirməsi = −5/ədəd (maks −20) |
Zaman sönməsi (time decay): hər hadisənin çəkisi exp(−age_days / 180) ilə azalır — 6 aylıq yarı ömür. Bu, işçinin "əbədi damğalanmasının" qarşısını alır (P7 prinsipi).
Bandlar: Aşağı (0–24), Orta (25–49), Yüksək (50–74), Kritik (75–100)
Şəffaflıq tələbi: hər HRS dəyəri üçün HumanRiskScoreBreakdown saxlanılır — hansı hadisə nə qədər əlavə etdi. İstifadəçi öz balının izahını görə bilər.
Aqreqatlar: Şöbə Riski = üzvlərin ölçülmüş ortası (kritiklik çəkisi ilə); Qurum HRS = şöbələrin ortası.
4.2.8 Metriklər
| Metrik | Düstur |
|---|---|
| Klik nisbəti | clicked / delivered |
| Kredensial göndərmə nisbəti | submitted / delivered |
| Qoşma açma nisbəti | attachment_opened / delivered |
| Bildirmə nisbəti | reported / delivered |
| Orta bildirmə müddəti | avg(reported_at − delivered_at) |
| Təkrar uğursuzluq nisbəti | ardıcıl 2+ kampaniyada uğursuz olanlar / iştirakçılar |
| Təlim tamamlanması (post-fişinq) | completed / assigned |
| Şöbə risk balı | §4.2.7 |
| Kampaniya təkmilləşmə nisbəti | (əvvəlki klik% − cari klik%) / əvvəlki klik% |
| Resilience Ratio | bildirmə% / klik% (>1 sağlam) |
| Pre/post müqayisə | eyni auditoriya, eyni çətinlik səviyyəsi |
4.2.9 ⚖️ Etika və məxfilik qaydaları (normativ)
| # | Qayda | Realizasiya |
|---|---|---|
| E1 | "Repeat Offender" kimi alçaldıcı terminlər qadağandır | Kod bazasında və UI-da bu terminlər yoxdur. İcazə verilən: "Əlavə Dəstək Qrupu", "Əlavə Təlim Tələb Olunur", "Yüksək İnsan Riski" |
| E2 | İctimai leaderboard yoxdur | Heç bir ekranda şəxs adları ilə reytinq cədvəli olmur. Şöbə səviyyəsində müqayisə var, fərd səviyyəsində yox |
| E3 | İstifadəçi yalnız öz nəticəsini görür | RBAC: phishing_event üzərində own skoupu |
| E4 | Müdir yalnız öz alt ağacını, aqreqat şəkildə görür | Fərdi ad yalnız təlim təyinatı üçün; kim klik etdi siyahısı yalnız phishing_manager və security üçün |
| E5 | Nəticələr intizam tədbiri üçün istifadə olunmur | Hesabatın başlığında normativ qeyd; HR-ə fərdi ixrac ayrıca icazə tələb edir və audit olunur |
| E6 | Şəffaflıq | Qurum siyasətində simulyasiyaların aparıldığı əvvəlcədən elan olunur (fərdi kampaniya vaxtı yox) |
| E7 | Həssas mövzular qadağandır | Şablon kitabxanasında qadağan siyahısı: maaş artımı vədi, işdən çıxarılma bildirişi, sağlamlıq, ailə, pandemiya, hərbi çağırış, ölüm xəbəri. Şablon yaradarkən açar söz yoxlaması + rəyçi təsdiqi |
| E8 | Dərhal açıqlama | Klik/göndərmədən sonra dərhal izah səhifəsi, cəzalandırıcı ton olmadan |
| E9 | Məlumat saxlama müddəti | Fərdi fişinq hadisələri 24 ay, sonra anonimləşdirilmiş aqreqata çevrilir |
| E10 | IP maskalama | Son oktet maskalanır (10.20.30.0), tam IP yalnız təhlükəsizlik istintaqı üçün ayrıca icazə ilə |
4.2.10 Səlahiyyətlər
| Əməliyyat | employee | dept_manager | phishing_manager | security_lead | platform_admin |
|---|---|---|---|---|---|
| Öz nəticəsini görmək | ✅ | ✅ | ✅ | ✅ | ❌ |
| Şöbə aqreqatı | ❌ | ✅ (öz alt ağacı) | ✅ | ✅ | ❌ |
| Fərdi nəticə siyahısı | ❌ | ❌ | ✅ | ✅ | ❌ |
| Şablon yaratmaq | ❌ | ❌ | ✅ | ✅ | ❌ |
| Kampaniya yaratmaq | ❌ | ❌ | ✅ | ✅ | ❌ |
| Kampaniya təsdiqi | ❌ | ❌ | ❌ (SoD) | ✅ | ❌ |
| Fövqəladə dayandırma | ❌ | ❌ | ✅ | ✅ | ✅ |
| SMTP/domen konfiqurasiyası | ❌ | ❌ | ❌ | ❌ | ✅ |
| HRS izahını görmək | Öz | Alt ağac (aqreqat) | ✅ | ✅ | ❌ |
| HR-ə fərdi ixrac | ❌ | ❌ | ⚠️ səbəb + təsdiq | ⚠️ | ❌ |
4.2.11 Audit log hadisələri
PHISHING_TEMPLATE_CREATED, PHISHING_TEMPLATE_SANITIZED, PHISHING_CAMPAIGN_CREATED, PHISHING_CAMPAIGN_SUBMITTED, PHISHING_CAMPAIGN_APPROVED, PHISHING_CAMPAIGN_REJECTED, PHISHING_CAMPAIGN_LAUNCHED, PHISHING_CAMPAIGN_PAUSED, PHISHING_CAMPAIGN_EMERGENCY_STOPPED, PHISHING_TARGET_LIST_VIEWED, PHISHING_INDIVIDUAL_RESULTS_EXPORTED, PHISHING_EXCLUSION_CHANGED, HRS_RECALCULATED, HRS_BREAKDOWN_VIEWED, SENDER_PROFILE_CHANGED, TRACKING_DOMAIN_CHANGED
4.2.12 API
GET /api/v1/phishing/templates
POST /api/v1/phishing/templates
POST /api/v1/phishing/templates/{id}/sanitize-preview
POST /api/v1/phishing/templates/from-incident/{incidentId}
GET /api/v1/phishing/landing-pages
POST /api/v1/phishing/landing-pages
GET /api/v1/phishing/sender-profiles
POST /api/v1/phishing/sender-profiles/{id}/test
GET /api/v1/phishing/tracking-domains
GET /api/v1/phishing-campaigns
POST /api/v1/phishing-campaigns
POST /api/v1/phishing-campaigns/{id}/preview-targets # sayı + siyahı
POST /api/v1/phishing-campaigns/{id}/send-test
POST /api/v1/phishing-campaigns/{id}/submit-for-approval
POST /api/v1/phishing-campaigns/{id}/approve # SoD yoxlanır
POST /api/v1/phishing-campaigns/{id}/reject
POST /api/v1/phishing-campaigns/{id}/schedule
POST /api/v1/phishing-campaigns/{id}/pause
POST /api/v1/phishing-campaigns/{id}/emergency-stop
GET /api/v1/phishing-campaigns/{id}/events?type=&from=
GET /api/v1/phishing-campaigns/{id}/statistics
GET /api/v1/phishing-campaigns/{id}/report?format=pdf|xlsx
GET /api/v1/human-risk/me
GET /api/v1/human-risk/me/breakdown
GET /api/v1/human-risk/users/{id} # səlahiyyət tələb edir
GET /api/v1/human-risk/departments/{id}
POST /api/v1/human-risk/recalculate # admin/job
GET /api/v1/phishing/exclusions
POST /api/v1/phishing/exclusions
# Publik (autentifikasiyasız, ayrıca servis, rate-limited):
GET /t/{token}/o.gif # open pixel
GET /t/{token}/c # click redirect
GET /t/{token}/q # QR
GET /t/{token}/a # attachment open
POST /t/{token}/submitted # YALNIZ {"fieldCount": n}
GET /t/{token}/training # açıqlama + mikro-təlim4.2.13 UI səhifələri
| Səhifə | Marşrut |
|---|---|
| Kampaniyalar siyahısı | /phishing/campaigns — status çipləri, klik%, bildirmə% |
| Kampaniya sihirbazı | /phishing/campaigns/new — 6 addım: Şablon → Landing → Göndərən → Hədəf → Cədvəl → Baxış və təsdiqə göndər |
| Kampaniya detalı | /phishing/campaigns/{id} — Xülasə / Hadisə axını (real vaxt) / Hədəflər / Təlim statusu / Hesabat |
| Fövqəladə dayandırma | Kampaniya detalında qırmızı düymə + təsdiq dialoqu (səbəb məcburi) |
| Şablon kitabxanası | /phishing/templates — önizləmə, çətinlik, dil, kateqoriya |
| Şablon redaktoru | /phishing/templates/{id} — Vizual / HTML / Mətn / Dəyişənlər / Önizləmə (desktop+mobil) |
| Landing qurucusu | /phishing/landing-pages/{id} — üstündə daimi banner: "Bu səhifə heç bir daxil edilmiş dəyəri saxlamır" |
| Göndərən profilləri | /admin/phishing/senders |
| İstisna siyahıları | /admin/phishing/exclusions |
| İnsan riski (mənim) | /my/risk — bal, band, izah, "necə azaldım" tövsiyələri |
| İnsan riski (şöbə) | /human-risk/departments — istilik xəritəsi (rəng + rəqəm + naxış) |
| Bildirilən emaillər | /phishing/reported — simulyasiya / real ayrımı |
4.2.14 Digər modullarla əlaqə
M01 (mikro-təlim təyinatı), M05 (BEC/sosial mühəndislik riskinin yenidən qiymətləndirilməsi), M13 (DLP davranışı HRS-ə), M14 (AD hədəfləmə), M15 (real fişinq bildirişi → hadisə), M16 (dashboard), M17 (remediasiya tapşırığı), M07 (kampaniya hesabatı → sübut).
4.2.15 Qəbul meyarları
- Kredensial testi: simulyasiya formuna unikal test sətri göndərilir; DB, log, növbə və fayl saxlamasında həmin sətir tapılmır (avtomatlaşdırılmış test, CI-də bloklayıcı).
- Təsdiqlənməmiş kampaniya API ilə də başladıla bilmir (HTTP 409).
- Kampaniyanı yaradan şəxs onu təsdiqləyə bilmir (HTTP 403,
SOD_VIOLATION_BLOCKEDlogu). - Fövqəladə dayandırma ≤ 30 saniyə ərzində bütün gözləyən emailləri ləğv edir və landing səhifələrini neytral səhifəyə yönləndirir.
- Xidməti hesablar (AD
servicePrincipalNameolan və ya konfiqurasiya olunmuş OU) heç bir kampaniyaya daxil edilmir — hədəf önizləməsində də görünmür. - Bütün simulyasiya emailləri
X-ETIMAD-Simulationheader-i daşıyır və bu header SIEM tərəfindən tanınır. - Şöbə müdiri başqa şöbənin fərdi nəticə siyahısını ala bilmir (403).
- HRS-in izahı istifadəçiyə hansı hadisələrin neçə bal əlavə etdiyini göstərir.
- UI-da və kod bazasında "repeat offender" / "təkrar günahkar" ifadəsi yoxdur (avtomatlaşdırılmış lint qaydası).
- Real emaildən yaradılan şablonda heç bir xarici link, skript və ya qoşma qalmır (sanitizasiya testi).
- Tracking domeni əsas qurum domeni ilə eynidirsə kampaniya təsdiqə göndərilə bilmir.
- 5 000 emailin göndərilməsi konfiqurasiya olunmuş sürət limitini aşmır və 4 saatlıq pəncərəyə bərabər paylanır.
4.3 M03 — Siyasət və Sənəd İdarəetməsi
4.3.1 Məqsəd
Qurumun informasiya təhlükəsizliyi sənədlərinin (siyasət, prosedur, təlimat, standart, qayda) tam həyat dövrünü — yaradılmadan arxivləşdirməyə qədər — idarə etmək, işçilərin tanışlığını sübut etmək və sənədləri nəzarət tədbirləri, risklər və sübutlarla əlaqələndirmək. ISO 27001 bənd 5.2, 7.5 və A.5.1 tələblərinə cavab verir.
4.3.2 İstifadəçilər
Siyasət müəllifi, rəyçi, təsdiqləyici, Compliance Officer, hüquq şöbəsi, bütün əməkdaşlar (tanışlıq), auditor (oxuma).
4.3.3 Sənəd tipləri və ierarxiya
Siyasət (Policy) — "nə" və "niyə", rəhbərlik təsdiqi
└─ Prosedur (Procedure) — "kim, nə vaxt, necə", addım-addım
└─ Təlimat (Instruction) — konkret texniki addımlar
└─ Standart (Standard) — məcburi texniki parametrlər
└─ Guideline — tövsiyə xarakterli
└─ Forma/Şablon (Form) — doldurulası sənədlər
└─ Reyestr (Register) — siyahı sənədləriHər sənədin parent_document_id sahəsi ilə ierarxiya qurulur; sənəd ağacı UI-da göstərilir.
4.3.4 Funksiyalar
Redaktə
- Web əsaslı rich-text redaktor (başlıq səviyyələri, cədvəl, siyahı, şəkil, daxili keçid, sənədlərarası keçid, dipnot)
- Struktur şablonları: Məqsəd / Əhatə dairəsi / Terminlər / Rollar və məsuliyyətlər / Tələblər / İstisnalar / Əlaqəli sənədlər / Nəzarət tədbirləri / Baxış qaydası / Versiya tarixçəsi
- Avtosave (30 saniyə + fokus itkisi), qeyd olunmamış dəyişiklik xəbərdarlığı
- Draft idarəetməsi: eyni anda bir aktiv draft; başqası redaktə edərkən kilid (optimistic lock + "X redaktə edir" göstəricisi)
- Şablon kitabxanası: ISO 27001 üçün hazır 20+ AZ şablonu (İT istifadəsi siyasəti, Parol siyasəti, Giriş nəzarəti, Aktivlərin idarəolunması, Hadisələrə cavab, Fiziki təhlükəsizlik, Təchizatçı təhlükəsizliyi, Şifrələmə, Backup, Uzaqdan iş, Mobil cihazlar, Məlumat təsnifatı, Təmiz masa, Log və monitorinq, Dəyişikliklərin idarəolunması, Fasiləsizlik, ...)
Versiyalaşdırma
- Semantik versiya:
major.minor(məs. 2.1). Major = məzmun dəyişikliyi → yenidən tanışlıq tələb olunur; minor = redaktə/orfoqrafiya → tanışlıq tələb olunmur (konfiqurasiya edilə bilər) - Hər versiya dəyişməzdir (immutable) nəşrdən sonra
- Dəyişiklik tarixçəsi: nə, kim, nə vaxt, niyə (change summary məcburi)
- Sənəd müqayisəsi (diff): iki versiya yan-yana, əlavə/silinmiş hissələr işarələnir (rəng +
+/−işarəsi, yalnız rəng yox)
Əməkdaşlıq
- Rəy sorğusu (parallel və ya ardıcıl rəyçilər)
- Şərhlər (mətn parçasına bağlı, thread), həll olundu işarəsi
- @qeyd (mention) → bildiriş
- Rəy müddəti və xatırlatma
Nəşr və tanışlıq
- Effektiv tarix (gələcək tarix üçün planlanmış nəşr)
- Tətbiq dairəsi: bütün qurum / departament / AD qrupu / vəzifə / rol
- Tanışlıq (acknowledgement): "Oxudum və başa düşdüm" + opsional qısa test (3–5 sual, keçid balı)
- Tanışlıq izləmə: kim, hansı versiyanı, nə vaxt, hansı IP-dən, nə qədər vaxt sərf etdi (minimum oxuma müddəti konfiqurasiya edilə bilər)
- Yenidən tanışlıq: major versiya, illik təkrar, rol dəyişikliyi
- Geri çəkilmə (withdrawal), əvəzlənmə (superseded by), arxivləşdirmə
- Baxış tarixi (review date) — çatanda sahibə tapşırıq yaranır
- Bitmə tarixi (expiration) — keçəndə status
Expired, dashboard-da xəbərdarlıq
İxrac və nəşr formatı
- PDF (rəsmi tərtibat: gerb/loqo, başlıq, altbaşlıq, səhifə nömrəsi, versiya, təsnifat etiketi, su nişanı), DOCX, HTML
- Su nişanı: draft üçün "LAYİHƏ", məhdud sənədlər üçün istifadəçi adı + tarix (sızma izlənməsi üçün)
- Çap üçün QR: sənədin daxili linki və versiyası (çap edilmiş nüsxənin aktuallığını yoxlamaq üçün)
Əlaqələr Siyasət ↔ Prosedur, ↔ Nəzarət tədbiri (M04), ↔ Risk (M05), ↔ Sübut (M07), ↔ Aktiv (M08), ↔ Təsnifat səviyyəsi (M10), ↔ Təlim (M01)
4.3.5 İş axını
Draft
→ Internal Review (müəllifin şöbəsi / mövzu üzrə ekspert)
→ Security Review (İT təhlükəsizliyi)
→ Legal/Compliance Review (hüquq + uyğunluq)
→ Pending Approval
→ Approved
→ Published (effektiv tarixdə avtomatik)
→ Acknowledgement Campaign (aktiv)
→ Active
→ Under Periodic Review (baxış tarixində avtomatik)
→ (Revised → yeni versiya Draft) | (Withdrawn) | (Archived)
Rədd yolları: hər review mərhələsindən → Changes Requested → DraftMərhələlər konfiqurasiya edilə bilər — qurum "Legal Review"-u ləğv edə və ya "Rəhbərlik baxışı" əlavə edə bilər (M17 iş axını mühərriki).
4.3.6 Siyasət istisnası (Policy Exception)
| Sahə | Təsvir |
|---|---|
| Exception ID | EXC-YYYY-NNNN |
| Başlıq, təsvir | |
| Əlaqəli siyasət / bənd | Hansı tələbdən istisna |
| Əlaqəli nəzarət tədbiri | |
| Biznes əsaslandırması | Məcburi, min 100 simvol |
| Risk təsviri | |
| Risk qiymətləndirməsi | M05-ə bağlanır (istisna avtomatik risk yaradır) |
| Kompensasiya edən nəzarət | Məcburi sahə (boş ola bilməz — əks halda əlavə təsdiq) |
| Sorğu verən | |
| Risk sahibi | |
| Təsdiqləyici(lər) | Risk səviyyəsinə görə: aşağı → şöbə müdiri; orta → CISO; yüksək → rəhbərlik |
| Başlanğıc / bitmə tarixi | Maksimum müddət konfiqurasiya edilir (default 12 ay) |
| Dövri baxış | 3/6 ay |
| Uzadılma sorğusu | Yeni əsaslandırma + təkrar təsdiq tələb edir |
| Status | Draft → Submitted → Risk Review → Approved / Rejected → Active → Expiring → Expired / Extended / Revoked |
| Avtomatik bitmə | Bitmə tarixində status Expired, bildiriş, kompensasiya nəzarətinin silinməsi tapşırığı |
Qayda: Aktiv istisna olan nəzarət tədbiri SoA-da və uyğunluq hesabatında görünən şəkildə işarələnir ("İstisna ilə").
4.3.7 ISO mətninin hüquqi statusu (KRİTİK)
| Saxlanılır ✅ | Saxlanılmır ❌ |
|---|---|
| Framework adı, versiyası | ISO standartının tam mətni |
Bənd/nəzarət ID-si (məs. A.8.12) | Bəndin tam normativ mətni |
| Rəsmi qısa başlıq (məs. "Data leakage prevention") | Tətbiq göstərişləri (ISO 27002 mətni) |
| Qurumun öz sözləri ilə yazdığı təsvir | |
| Qurumun tətbiq təsviri, sübutları, testləri |
- Framework strukturu
read-only referencekimi işarələnir — istifadəçi bənd nömrəsini və rəsmi başlığı dəyişə bilmir. - Sistemdə açıq qeyd: "ISO/IEC standartlarının tam mətni müəllif hüququ ilə qorunur. Platforma standartın mətnini yaymır. Rəsmi mətn üçün qurumun lisenziyalı nüsxəsinə müraciət edin."
- Qurum lisenziya alıbsa, tam mətn opsional əlavə modul kimi, məhdud girişlə (yalnız lisenziya əhatəsindəki istifadəçilər) yüklənə bilər — bu, konfiqurasiya qərarıdır, default söndürülüb.
4.3.8 Məlumat obyektləri
Document, DocumentVersion, DocumentTranslation, DocumentTemplate, DocumentComment, DocumentReviewRequest, DocumentApproval, DocumentApplicability, PolicyAcknowledgement, PolicyQuiz, PolicyQuizResult, PolicyException, PolicyExceptionApproval, DocumentLink (polimorf əlaqələr)
4.3.9 Səlahiyyətlər
| Əməliyyat | employee | policy_author | policy_reviewer | policy_approver | compliance_officer | auditor |
|---|---|---|---|---|---|---|
| Nəşr olunmuş sənədi oxumaq | ✅ (tətbiq dairəsində) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Draft görmək | ❌ | ✅ (öz) | ✅ (təyin olunan) | ✅ | ✅ | ❌ |
| Yaratmaq/redaktə | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
| Rəy vermək | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| Təsdiqləmək | ❌ | ❌ (SoD) | ❌ | ✅ | ❌ | ❌ |
| Nəşr etmək | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Geri çəkmək | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Tanışlıq təsdiqi | ✅ (öz) | ✅ | ✅ | ✅ | ✅ | ❌ |
| Tanışlıq hesabatı | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ (oxuma) |
| İstisna sorğusu | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| İstisna təsdiqi | ❌ | ❌ | ❌ | ✅ (səviyyəyə görə) | ⚠️ | ❌ |
4.3.10 Audit hadisələri
DOCUMENT_CREATED, DOCUMENT_UPDATED, DOCUMENT_VERSION_CREATED, DOCUMENT_SUBMITTED_FOR_REVIEW, DOCUMENT_REVIEWED, DOCUMENT_APPROVED, DOCUMENT_REJECTED, DOCUMENT_PUBLISHED, DOCUMENT_WITHDRAWN, DOCUMENT_ARCHIVED, DOCUMENT_VIEWED (məhdud təsnifatlı sənədlər üçün), DOCUMENT_EXPORTED, POLICY_ACKNOWLEDGED, POLICY_QUIZ_COMPLETED, POLICY_EXCEPTION_REQUESTED, POLICY_EXCEPTION_APPROVED, POLICY_EXCEPTION_REJECTED, POLICY_EXCEPTION_EXPIRED, POLICY_EXCEPTION_EXTENDED, POLICY_EXCEPTION_REVOKED, DOCUMENT_APPLICABILITY_CHANGED
4.3.11 API
GET /api/v1/policies?type=&status=&department=&search=
POST /api/v1/policies
GET /api/v1/policies/{id}
PUT /api/v1/policies/{id} # If-Match (ETag) tələb olunur
GET /api/v1/policies/{id}/versions
GET /api/v1/policies/{id}/versions/{v}
GET /api/v1/policies/{id}/diff?from=1.0&to=2.0
POST /api/v1/policies/{id}/submit-review
POST /api/v1/policies/{id}/review # {decision, comments}
POST /api/v1/policies/{id}/approve
POST /api/v1/policies/{id}/publish # {effectiveDate, requireAck}
POST /api/v1/policies/{id}/withdraw
GET /api/v1/policies/{id}/export?format=pdf|docx
GET /api/v1/policies/{id}/comments
POST /api/v1/policies/{id}/comments
GET /api/v1/policies/my/pending-acknowledgements
POST /api/v1/policies/{id}/acknowledge # {versionId, quizAttemptId?}
GET /api/v1/policies/{id}/acknowledgements # hesabat
GET /api/v1/policy-exceptions
POST /api/v1/policy-exceptions
POST /api/v1/policy-exceptions/{id}/approve
POST /api/v1/policy-exceptions/{id}/reject
POST /api/v1/policy-exceptions/{id}/extend
POST /api/v1/policy-exceptions/{id}/revoke
GET /api/v1/document-templates4.3.12 UI səhifələri
| Səhifə | Marşrut | Qeyd |
|---|---|---|
| Sənəd kataloqu | /policies | Ağac + cədvəl görünüşü, filtr: tip, status, şöbə, baxış tarixi |
| Sənəd oxuma | /policies/{id} | Sağda: metadata, əlaqəli obyektlər, versiya seçimi; altda "Oxudum və başa düşdüm" |
| Redaktor | /policies/{id}/edit | Sol: struktur ağacı; orta: redaktor; sağ: şərhlər |
| Versiya müqayisəsi | /policies/{id}/diff | Yan-yana |
| Təsdiq növbəsi | /policies/approvals | Mənə gələn rəy/təsdiq sorğuları |
| Tanışlıq hesabatı | /policies/{id}/acknowledgements | Kim oxudu / oxumadı, xatırlatma düyməsi |
| Mənim sənədlərim | /my/policies | Oxumalı olduğum (deadline ilə) |
| İstisnalar | /policy-exceptions | Cədvəl + bitmə tarixinə görə xəbərdarlıq |
| İstisna forması | /policy-exceptions/new | Addımlı forma: Siyasət → Əsaslandırma → Risk → Kompensasiya → Təsdiqçilər |
| Şablonlar | /admin/policies/templates |
4.3.13 Metriklər
Tanışlıq faizi (ümumi/şöbə/sənəd), vaxtı keçmiş sənədlər, baxış tarixi yaxınlaşan sənədlər, təsdiq gözləmə müddəti (orta), aktiv istisnaların sayı və risk cəmi, sənəd-nəzarət tədbiri əhatəsi (neçə A.x nəzarət tədbirinin sənədi var).
4.3.14 Digər modullarla əlaqə
M04 (nəzarət tədbiri ↔ siyasət), M05 (istisna → risk), M07 (nəşr olunmuş siyasət = sübut), M01 (siyasət testi), M08 (aktivə aid siyasət), M10 (təsnifat siyasəti), M14 (AD qrupu → tətbiq dairəsi), M17 (təsdiq iş axını).
4.3.15 Qəbul meyarları
- Nəşr olunmuş versiya heç bir rol tərəfindən redaktə edilə bilmir (403); dəyişiklik yalnız yeni versiya ilə.
- Müəllif öz sənədini təsdiqləyə bilmir (SoD-1, 403 + audit).
- Major versiya nəşr olunduqda tətbiq dairəsindəki bütün istifadəçilərə yenidən tanışlıq tapşırığı yaranır.
- Tanışlıq qeydi sənədin konkret versiya ID-si ilə saxlanılır.
- Effektiv tarixi gələcək olan sənəd həmin tarixə qədər əməkdaşlara görünmür, avtomatik həmin gün görünür.
- Baxış tarixi çatan sənəd üçün sahibə tapşırıq və bildiriş yaranır; 30 gün gecikdikdə müdirə eskalasiya.
- PDF ixracında versiya, effektiv tarix, təsnifat etiketi və su nişanı mövcuddur.
- İstisna bitmə tarixində avtomatik
Expiredolur və əlaqəli nəzarət tədbirinin statusuna təsir edir. - Kompensasiya edən nəzarət göstərilməyən istisna əlavə (yüksək səviyyəli) təsdiq tələb edir.
- ISO framework bəndinin rəsmi başlığı və nömrəsi UI-da redaktə edilə bilmir (input disabled + API 403).
- Sənəd üzərində eyni anda iki redaktə cəhdi optimistic lock ilə qarşısı alınır (HTTP 412).
4.4 M04 — Uyğunluq İdarəetməsi
4.4.1 Məqsəd
Bir və ya bir neçə uyğunluq çərçivəsinin (framework) tələblərini qurumun daxili nəzarət tədbirləri ilə əlaqələndirmək, icra statusunu izləmək, boşluqları aşkarlamaq və Tətbiq Oluna Bilənlik Bəyannaməsini (SoA) avtomatik yaratmaq.
4.4.2 Əsas konsepsiya — Unified Control Framework
Framework (ISO 27001:2022)
└─ Domain (A.5 Organizational controls)
└─ Requirement (A.5.1 Policies for information security)
▲
│ ControlMapping (N:M, versiyalanmış)
▼
İnternal Control (CTL-0012 "Təhlükəsizlik siyasətlərinin idarə olunması")
├─ ControlAssessment (dövri qiymətləndirmə)
├─ Evidence[] (M07)
├─ Policy[] (M03)
├─ Risk[] (M05)
├─ Asset[] (M08)
└─ Task[] (remediasiya, M17)Prinsip: Qurumun bir daxili nəzarət tədbiri bir neçə framework tələbini ödəyə bilər. Bu, ikinci framework əlavə edildikdə işin 60–80%-nin təkrarlanmasının qarşısını alır.
4.4.3 Framework idarəetməsi
- Framework strukturu JSON/YAML import faylı ilə yüklənir (kod dəyişikliyi yoxdur — P11)
```yaml framework: { code: ISO27001, version: "2022", name_az: "...", authority: "ISO/IEC" } domains:
- code: A.5
name_az: "Təşkilati nəzarət tədbirləri" requirements:
- code: A.5.1
title_en: "Policies for information security" title_az: "İnformasiya təhlükəsizliyi siyasətləri" type: preventive attributes: { cia: [C,I,A], concepts: [Govern], capabilities: [Governance] } ```
- Framework versiyalaşdırılması: ISO 27001:2013 → 2022 keçidi üçün
requirement_crosswalkcədvəli - Faza 1: ISO/IEC 27001:2022 (bənd 4–10 + Annex A 93 nəzarət tədbiri) + lokal normativ tələblər
- Faza 2+: NIST CSF 2.0, CIS Controls v8.1, PCI DSS 4.0, SOC 2 (TSC), GDPR, ISO 22301, ISO 27701, ISO 42001
Lokal normativ tələblər — ayrıca "framework" kimi modelləşdirilir: Azərbaycan Respublikasının informasiya təhlükəsizliyi üzrə normativ aktları, dövlət informasiya sistemləri üzrə tələblər, fərdi məlumatlar haqqında qanunvericilik. Bəndlər qurum tərəfindən daxil edilir (hüquqi mətn saxlanılmır, istinad saxlanılır).
4.4.4 Nəzarət tədbirinin (Control) sahələri
| Sahə | Tip | Qeyd |
|---|---|---|
control_id | string | CTL-NNNN, avtomatik |
title_az / title_en | string | Daxili başlıq |
description | text | Qurumun öz sözləri ilə |
control_type | enum | preventive / detective / corrective / deterrent / compensating |
nature | enum | manual / automated / hybrid |
frequency | enum | continuous / daily / weekly / monthly / quarterly / annual / event-driven |
applicability | enum | applicable / not_applicable |
applicability_justification | text | not_applicable üçün məcburi (SoA tələbi) |
implementation_status | enum | bax 4.4.5 |
implementation_percentage | int 0–100 | |
implementation_description | text | Necə icra olunur |
owner_user_id | FK | Nəzarət tədbirinin sahibi (məsuliyyət) |
operator_user_id | FK | İcraçı (gündəlik işləyən) |
reviewer_user_id | FK | Yoxlayan |
effectiveness | enum | not_tested / effective / partially_effective / ineffective |
effectiveness_score | int 0–100 | Test nəticələrindən hesablanır |
last_review_date, next_review_date | date | |
test_procedure | text | Necə test olunur |
last_test_date, last_test_result | ||
gap_description | text | |
maturity_level | int 1–5 | Opsional (CMMI bənzəri) |
cost_estimate | decimal | Opsional |
related_* | links | policy, risk, asset, evidence, task, finding |
4.4.5 Statuslar
| Status | Məna | SoA-da |
|---|---|---|
not_assessed | Hələ qiymətləndirilməyib | Boşluq |
applicable | Tətbiq olunur, icra başlamayıb | Daxil |
not_applicable | Tətbiq olunmur (əsaslandırma məcburi) | Xaric, əsaslandırma ilə |
not_implemented | Tətbiq olunur, icra edilməyib | Daxil, boşluq |
planned | Plan var, tarix var | Daxil |
partially_implemented | Qismən (faiz göstərilir) | Daxil |
implemented | İcra olunub, hələ test edilməyib | Daxil |
operating_effectively | İcra olunub və test effektiv | Daxil ✅ |
ineffective | İcra olunub, lakin test uğursuz | Daxil, boşluq ⚠️ |
retired | Artıq istifadə olunmur | Tarixçə |
4.4.6 Statement of Applicability (SoA)
Ayrıca modul + hesabat. ISO 27001 bənd 6.1.3 d) tələbi.
SoA sətri: Annex A nəzarət tədbiri | Tətbiq olunur? (Bəli/Xeyr) | Tətbiq/xaric etmə əsaslandırması | Daxili nəzarət tədbiri (mapping) | İcra statusu | Sübut mövcudluğu | İstisna varmı | Sahib | Son baxış
Funksiyalar:
- SoA versiyalaşdırılır və dondurulur (baseline): audit üçün "2026-10-01 tarixinə SoA" dəyişməz nüsxə kimi saxlanılır (hash ilə)
- SoA təsdiqi: rəhbərlik imzası (elektron təsdiq + audit qeydi)
- İki SoA versiyasının müqayisəsi (nə dəyişdi)
- İxrac: PDF (rəsmi tərtibat), XLSX
- Doldurulmamış əsaslandırmalar dərhal görünən şəkildə işarələnir
4.4.7 Control Mapping
control_mapping (control_id, requirement_id, coverage, rationale, mapped_by, mapped_at, version, valid_from, valid_to)coverage:full/partial/supporting- Bir tələb bir neçə nəzarət tədbiri ilə ödənilə bilər; bir nəzarət tədbiri bir neçə tələbi ödəyə bilər
- Versiyalaşdırma: mapping dəyişikliyi köhnə sətri
valid_toilə bağlayır, yenisini yaradır — heç nə silinmir - Mapping təklifi (Faza 4): oxşar mətn/atribut əsasında avtomatik təklif, insan təsdiqi ilə
- Cross-framework görünüşü: bir nəzarət tədbiri seçilir → hansı framework-lərin hansı bəndlərini ödədiyi göstərilir
4.4.8 Uyğunluq balı (Compliance Score) — şəffaf hesablama
Tələb balı:
not_applicable → tələb bala daxil edilmir (məxrəcdən çıxarılır)
operating_effectively → 100
implemented → 80
partially_implemented → implementation_percentage × 0.8
planned → 20
not_implemented → 0
ineffective → 10
not_assessed → 0 (və "qiymətləndirilməyib" sayğacına düşür)
Düzəlişlər:
− Sübut yoxdursa və ya vaxtı keçibsə: × 0.7
− Aktiv istisna varsa: × 0.8
− Baxış tarixi 90+ gün gecikibsə: × 0.9
− Açıq major nonconformity varsa: balı 40-la məhdudlaşdır
Framework balı = Σ(tələb balı) / (tətbiq olunan tələb sayı)Hər bal UI-da "?" ikonu ilə izah edilə bilər: hansı düzəliş tətbiq olundu və nəyə görə.
4.4.9 Məlumat obyektləri
Framework, FrameworkVersion, Domain, Requirement, RequirementCrosswalk, Control, ControlMapping, ControlAssessment, ControlTest, SoA, SoAVersion, SoAItem, ComplianceSnapshot (trend üçün gündəlik)
4.4.10 İş axını
Nəzarət tədbiri:
Draft → Active → Under Assessment → Assessed → (Remediation Required → Remediation In Progress) → Active
→ Retired
Qiymətləndirmə (ControlAssessment):
Planned → In Progress → Evidence Collection → Reviewed → Approved → Closed
SoA:
Draft → Review → Approved → Baselined (frozen) → Superseded4.4.11 Səlahiyyətlər
| Əməliyyat | compliance_officer | control_owner | control_operator | auditor | executive |
|---|---|---|---|---|---|
| Framework import | ✅ | ❌ | ❌ | ❌ | ❌ |
| Framework strukturunu dəyişmək | ❌ (read-only reference) | ❌ | ❌ | ❌ | ❌ |
| Nəzarət tədbiri yaratmaq | ✅ | ❌ | ❌ | ❌ | ❌ |
| Öz nəzarət tədbirini yeniləmək | ✅ | ✅ | Yalnız icra qeydi | ❌ | ❌ |
| Mapping dəyişmək | ✅ | ❌ | ❌ | ❌ | ❌ |
| Applicability dəyişmək | ✅ (əsaslandırma ilə) | ⚠️ təklif | ❌ | ❌ | ❌ |
| SoA baseline etmək | ✅ | ❌ | ❌ | ❌ | ⚠️ təsdiq |
| Effektivlik qiymətləndirməsi | ✅ | ✅ | ❌ | Rəy | ❌ |
| Oxumaq | ✅ | Öz + ümumi | Öz | ✅ | Aqreqat |
4.4.12 Audit hadisələri
FRAMEWORK_IMPORTED, CONTROL_CREATED, CONTROL_UPDATED, CONTROL_OWNER_CHANGED, CONTROL_APPLICABILITY_CHANGED, CONTROL_STATUS_CHANGED, CONTROL_MAPPING_CREATED, CONTROL_MAPPING_REMOVED, CONTROL_ASSESSMENT_STARTED, CONTROL_ASSESSMENT_COMPLETED, CONTROL_TEST_RECORDED, SOA_GENERATED, SOA_BASELINED, SOA_EXPORTED, COMPLIANCE_SCORE_RECALCULATED
4.4.13 API
GET /api/v1/frameworks
POST /api/v1/frameworks/import # YAML/JSON
GET /api/v1/frameworks/{id}/requirements
GET /api/v1/frameworks/{id}/coverage # hansı tələb örtülüb
GET /api/v1/controls?framework=&status=&owner=&applicability=
POST /api/v1/controls
GET /api/v1/controls/{id}
PUT /api/v1/controls/{id}
GET /api/v1/controls/{id}/mappings
POST /api/v1/controls/{id}/mappings # {requirementId, coverage, rationale}
DELETE /api/v1/controls/{id}/mappings/{mid} # soft, valid_to
GET /api/v1/controls/{id}/evidence
POST /api/v1/controls/{id}/assessments
POST /api/v1/controls/{id}/tests
GET /api/v1/controls/{id}/related # risk, policy, asset, finding
GET /api/v1/soa?frameworkId=&versionId=
POST /api/v1/soa/generate
POST /api/v1/soa/{id}/baseline # dondurma + hash
GET /api/v1/soa/{id}/export?format=pdf|xlsx
GET /api/v1/soa/compare?from=&to=
GET /api/v1/compliance/score?frameworkId=
GET /api/v1/compliance/score/explain?requirementId=
GET /api/v1/compliance/gaps?frameworkId=
GET /api/v1/compliance/trend?frameworkId=&from=&to=4.4.14 UI səhifələri
| Səhifə | Marşrut | Təsvir |
|---|---|---|
| Uyğunluq xülasəsi | /compliance | Framework kartları: bal, boşluq sayı, trend sparkline |
| Framework baxışı | /compliance/frameworks/{id} | Domain ağacı + hər tələb üçün status çipi |
| Tələb detalı | /compliance/requirements/{id} | Mapped nəzarət tədbirləri, sübutlar, boşluq, tapşırıqlar |
| Nəzarət tədbirləri | /compliance/controls | Cədvəl: ID, başlıq, sahib, status, effektivlik, sübut sayı, sonrakı baxış |
| Nəzarət tədbiri detalı | /compliance/controls/{id} | Tab-lar: Ümumi / Mapping / Sübutlar / Testlər / Risklər / Siyasətlər / Aktivlər / Tarixçə |
| Mapping matrisi | /compliance/mapping | Matris: sətir = daxili nəzarət, sütun = framework tələbi, xana = coverage |
| SoA | /compliance/soa | Cədvəl + "Baseline yarat" + ixrac |
| SoA müqayisəsi | /compliance/soa/compare | |
| Boşluq analizi | /compliance/gaps | Prioritetləşdirilmiş boşluq siyahısı + "Tapşırıq yarat" |
| Framework import | /admin/compliance/frameworks |
4.4.15 Metriklər
Framework uyğunluq balı, tətbiq olunan/olunmayan tələb sayı, sübutu olmayan nəzarət tədbirləri, effektiv olmayan nəzarət tədbirləri, vaxtı keçmiş baxışlar, mapping əhatəsi (%), açıq boşluqlar və orta yaşı, audit hazırlığı balı (M06 ilə birgə).
4.4.16 Digər modullarla əlaqə
M03 (siyasət = nəzarət tədbirinin sənədləşdirilməsi), M05 (nəzarət tədbiri riski azaldır → qalıq risk), M06 (tapıntı nəzarət tədbirinə bağlanır), M07 (sübut), M08 (aktivə tətbiq olunan nəzarət), M09 (təchizatçı nəzarətləri), M10/M12 (təsnifat və DLP nəzarət tədbirləri A.5.12, A.5.13, A.8.12), M01 (A.6.3 sübutu), M16 (dashboard).
4.4.17 Qəbul meyarları
- ISO 27001:2022-nin 93 Annex A nəzarət tədbiri + bənd 4–10 tələbləri import faylı ilə yüklənir; heç bir kod dəyişikliyi tələb olunmur.
not_applicablestatusu əsaslandırma olmadan saxlanıla bilmir (400).- SoA bütün Annex A tədbirlərini əhatə edir; heç biri siyahıdan düşmür.
- Baseline edilmiş SoA dəyişdirilə bilmir; hash ilə bütövlüyü yoxlanıla bilir.
- Bir nəzarət tədbiri ≥ 2 framework tələbinə map edildikdə hər iki framework-in balı yenilənir.
- Mapping silindikdə sətir fiziki silinmir,
valid_toqoyulur və audit logunda görünür. - Uyğunluq balının izahı hər tələb üçün UI-da göstərilir.
- Vaxtı keçmiş sübutu olan nəzarət tədbirinin balı avtomatik 0.7 əmsalı ilə azalır və bu izahda görünür.
- Framework strukturunun (bənd nömrəsi, rəsmi başlıq) redaktəsi bütün rollar üçün bağlıdır.
- 93 nəzarət tədbiri üçün SoA PDF-i ≤ 20 saniyədə generasiya olunur.
4.5 M05 — Risk İdarəetməsi
4.5.1 Məqsəd
İnformasiya təhlükəsizliyi risklərinin müəyyən edilməsi, təhlili, qiymətləndirilməsi, emalı və monitorinqi üçün ISO 27001 bənd 6.1 və ISO 27005 metodologiyasına uyğun vahid reyestr yaratmaq.
4.5.2 Risk metodologiyası
Risk identifikasiyası yanaşması: aktiv-təhdid-zəiflik (asset–threat–vulnerability) + ssenari əsaslı hibrid.
Risk = f(Təhdid, Zəiflik, Aktiv, Mövcud nəzarət)
İlkin risk (Inherent) = Ehtimal(nəzarətsiz) × Təsir(nəzarətsiz)
Qalıq risk (Residual) = İlkin risk × (1 − Nəzarətlərin effektivliyi)
Hədəf risk (Target) = Emal planından sonra gözlənilən səviyyəNəzarət effektivliyi M04-dən avtomatik gəlir:
effectiveness = Σ(control.effectiveness_score × coverage_weight) / Σ(coverage_weight)
operating_effectively = 1.0 | implemented = 0.7 | partially = 0.4 | ineffective/not_impl = 0.0Bu avtomatik təklifdir; risk sahibi əl ilə üstündən yaza bilər (əsaslandırma ilə) — dəyər manual_override bayrağı ilə işarələnir.
4.5.3 Konfiqurasiya edilə bilən skorinq
| Parametr | Variantlar |
|---|---|
| Matris ölçüsü | 3×3, 4×4, 5×5, custom N×M |
| Ehtimal şkalası | Ad, təsvir, dəyər, tezlik izahı (məs. "5 — Çox yüksək: ayda bir dəfədən çox") |
| Təsir şkalası | Çox ölçülü: Məxfilik, Bütövlük, Əlçatanlıq, Hüquqi, Maliyyə, Reputasiya |
| Ümumi təsirin hesablanması | max (ən pis hal, default) və ya weighted_avg |
| Risk səviyyə zolaqları | Aşağı / Orta / Yüksək / Kritik — hər biri üçün bal aralığı və rəng |
| Risk iştahı (appetite) | Hər kateqoriya üçün maksimum qəbul edilən qalıq risk |
| Emal tələbi | Hansı səviyyədən yuxarı emal məcburidir |
| Təsdiq səviyyəsi | Hansı səviyyəli riskin qəbulu kim tərəfindən təsdiqlənir |
Default 5×5 matris:
Təsir → 1(Cüzi) 2(Az) 3(Orta) 4(Ciddi) 5(Fəlakətli)
Ehtimal ↓
5 (Çox yüksək) 5 10 15 20 25
4 (Yüksək) 4 8 12 16 20
3 (Orta) 3 6 9 12 15
2 (Aşağı) 2 4 6 8 10
1 (Çox aşağı) 1 2 3 4 5
Zolaqlar: 1–4 Aşağı | 5–9 Orta | 10–15 Yüksək | 16–25 KritikMatris dəyişdirildikdə mövcud risklər avtomatik yenidən hesablanmır — miqrasiya sihirbazı göstərilir və dəyişiklik audit olunur (köhnə/yeni dəyərlər saxlanılır).
4.5.4 Risk sahələri (tam siyahı)
| Qrup | Sahələr |
|---|---|
| İdentifikasiya | risk_id (RSK-YYYY-NNNN), title, description, category, subcategory, source (identifikasiya mənbəyi: audit / hadisə / qiymətləndirmə / təchizatçı / DLP / fişinq) |
| Kontekst | business_process, asset_ids[], department_id, organization_unit_id |
| Təhdid/Zəiflik | threat, threat_source (daxili qəsdli / daxili təsadüfi / xarici / təbii / texniki), vulnerability |
| Mövcud nəzarət | existing_controls[] (M04 FK), control_effectiveness (auto + override) |
| İlkin qiymətləndirmə | inherent_likelihood, inherent_impact_c/i/a/legal/financial/reputational, inherent_score, inherent_level |
| Qalıq | residual_likelihood, residual_impact_*, residual_score, residual_level |
| Hədəf | target_score, target_level, target_date |
| Sahiblik | risk_owner_id, treatment_owner_id, identified_by, approved_by |
| Emal | treatment_option (mitigate/accept/avoid/transfer), treatment_plan, treatment_tasks[], treatment_due_date, treatment_cost |
| Qəbul | acceptance_justification, accepted_by, accepted_at, acceptance_expiry, acceptance_review_date |
| Dövr | status, identified_date, last_review_date, next_review_date, closed_date, closure_reason |
| Əlaqələr | controls[], policies[], assets[], vendors[], incidents[], findings[], exceptions[], evidence[] |
| Digər | comments[], attachments[], tags[], is_key_risk (KRI üçün) |
Risk kateqoriyaları (default): Kiber hücum, Zərərli proqram, Sosial mühəndislik, Daxili təhdid, Məlumat sızması, Giriş nəzarəti, Fiziki təhlükəsizlik, Fasiləsizlik/Fəlakət, Təchizatçı/Üçüncü tərəf, Uyğunluq/Hüquqi, İnsan resursu, Texnoloji köhnəlmə, Konfiqurasiya, Bulud/Hosting, Şəbəkə.
4.5.5 İş axını
Identified
→ Under Assessment
→ Assessed
→ Treatment Planning
→ Treatment In Progress (tapşırıqlar M17-də)
→ Pending Acceptance (qəbul seçilibsə)
→ Accepted (müddətli; bitmə tarixi var)
→ Monitoring
→ Under Review (dövri baxış tarixində avtomatik)
→ Closed (risk aradan qalxıb)
→ ReopenedRisk qəbulu (Risk Acceptance) qaydaları:
- Qalıq risk səviyyəsinə görə təsdiq: Aşağı → risk sahibi; Orta → şöbə müdiri; Yüksək → CISO; Kritik → qurum rəhbərliyi
- Qəbul həmişə müddətlidir (default maks 12 ay) və bitmə tarixində avtomatik
Under Review-a keçir - SoD-2: risk sahibi öz riskinin qəbulunu təsdiqləyə bilməz
- Qəbul edilmiş risklər ayrıca hesabatda (Risk Acceptance Report) və executive dashboard-da
4.5.6 Avtomatik risk siqnalları (Cross-module risk signals)
Bu, platformanın əsas differensiatorudur — konfiqurasiya edilə bilən qayda mühərriki.
Qayda strukturu:
rule:
name: "Maliyyə şöbəsində BEC riskinin artması"
trigger:
source: phishing_campaign_completed
condition: "department == 'Maliyyə' AND credential_submission_rate > 0.15"
actions:
- recalculate_risk: { risk_id: RSK-2026-0014, likelihood_delta: +1, reason_template: "..." }
- notify: { recipients: [risk_owner, ciso], template: risk_signal_alert }
- assign_training: { program: "BEC və ödəniş fırıldağı", audience: department, due_days: 14 }
- create_task: { title: "Maliyyə şöbəsi üçün əlavə nəzarət", owner: risk_owner, due_days: 30 }
- dashboard_alert: { severity: high }
mode: require_approval # auto | require_approval
approver_role: risk_managerHazır siqnal şablonları (default):
| Tetikleyici | Şərt | Nəticə |
|---|---|---|
| Fişinq kampaniyası bitdi | kredensial göndərmə > 15% (şöbə) | BEC riski ehtimal +1, təlim, tapşırıq |
| Fişinq kampaniyası bitdi | klik > 30% (qurum) | Sosial mühəndislik riski yenidən qiymətləndirilsin |
| DLP hadisələri | 30 gündə eyni şöbədə > 10 təsdiqlənmiş hadisə | Məlumat sızması riski ehtimal +1 |
| DLP hadisəsi | kritik təsnifat + xarici destinasiya + blok edilməyib | Dərhal kritik risk siqnalı + hadisə |
| Sübut vaxtı keçdi | nəzarət tədbirinin bütün sübutları vaxtı keçib | Əlaqəli risklərin nəzarət effektivliyi ↓ → qalıq risk ↑ |
Nəzarət tədbiri ineffective | Əlaqəli risklərin qalıq riski yenidən hesablanır | |
| Major nonconformity açıldı | Əlaqəli risk Under Review | |
| Təchizatçı risk balı yüksəldi | Əlaqəli təchizatçı riski yenidən qiymətləndirilsin | |
| Təlim tamamlanması < 70% | şöbə üzrə | İnsan riski artımı |
| Aktivin kritikliyi yüksəldi | Əlaqəli risklərin təsiri yenidən qiymətləndirilsin | |
| Siyasət istisnası təsdiqləndi | Avtomatik risk yaradılır və ya mövcud risk yenilənir |
Vacib: mode: require_approval defaultdur — sistem avtomatik risk balını dəyişmir, risk menecerinə təklif göndərir ("Təklif olunan dəyişiklik: ehtimal 3 → 4. Səbəb: ... Qəbul et / Rədd et"). Qəbul edildikdə dəyişiklik RiskAssessment tarixçəsinə source: automated_signal ilə yazılır.
4.5.7 Vizualizasiya
- Risk istilik xəritəsi: 5×5 matris, hər xanada risk sayı + kliklə drill-down. Accessibility: rəng + rəqəm + naxış (pattern)
- İlkin vs qalıq müqayisəsi (eyni matris üzərində iki nöqtə, oxla birləşdirilmiş)
- Risk trendi (aylıq snapshot əsasında: ümumi risk sayı, yüksək/kritik sayı, orta qalıq bal)
- Şöbə risk profili (radar və ya bar)
- Emal irəliləyişi (burn-down: planlanmış vs icra olunmuş)
- Top 10 risk (executive üçün)
4.5.8 Məlumat obyektləri
Risk, RiskAssessment (tarixçəli qiymətləndirmələr), RiskTreatment, RiskAcceptance, RiskCategory, RiskMatrix, RiskScaleLevel, RiskSignalRule, RiskSignalEvent, RiskComment, RiskAttachment, RiskSnapshot (trend), ThreatCatalog, VulnerabilityCatalog
4.5.9 Səlahiyyətlər
| Əməliyyat | risk_manager | risk_owner | control_owner | dept_manager | auditor | executive |
|---|---|---|---|---|---|---|
| Risk yaratmaq | ✅ | ✅ | ✅ (təklif) | ✅ (öz şöbəsi) | ❌ | ❌ |
| Bütün riskləri görmək | ✅ | ❌ | ❌ | ❌ | ✅ | Aqreqat + Top N |
| Öz riskini redaktə | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Şöbə risklərini görmək | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Qalıq riski dəyişmək | ✅ | ✅ (əsaslandırma) | ❌ | ❌ | ❌ | ❌ |
| Emal planı | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Riski qəbul etmək (təsdiq) | Səviyyəyə görə | ❌ (SoD-2) | ❌ | Aşağı/Orta | ❌ | Kritik |
| Matrisi dəyişmək | ⚠️ platform_admin + compliance | ❌ | ❌ | ❌ | ❌ | ❌ |
| Siqnal qaydası yaratmaq | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Riski bağlamaq | ✅ | ⚠️ təklif | ❌ | ❌ | ❌ | ❌ |
4.5.10 Audit hadisələri
RISK_CREATED, RISK_UPDATED, RISK_ASSESSED, RISK_SCORE_CHANGED (köhnə/yeni dəyərlərlə), RISK_OWNER_CHANGED, RISK_TREATMENT_PLANNED, RISK_TREATMENT_COMPLETED, RISK_ACCEPTED, RISK_ACCEPTANCE_EXPIRED, RISK_CLOSED, RISK_REOPENED, RISK_MATRIX_CHANGED, RISK_SIGNAL_TRIGGERED, RISK_SIGNAL_APPROVED, RISK_SIGNAL_REJECTED, RISK_MANUAL_OVERRIDE (avtomatik hesablamanın üstündən yazma)
4.5.11 API
GET /api/v1/risks?level=&status=&owner=&department=&category=&search=
POST /api/v1/risks
GET /api/v1/risks/{id}
PUT /api/v1/risks/{id}
GET /api/v1/risks/{id}/assessments # tarixçə
POST /api/v1/risks/{id}/assessments
POST /api/v1/risks/{id}/treatment
POST /api/v1/risks/{id}/accept # SoD yoxlanır
POST /api/v1/risks/{id}/close
POST /api/v1/risks/{id}/reopen
GET /api/v1/risks/{id}/related
POST /api/v1/risks/{id}/recalculate # nəzarət effektivliyindən
GET /api/v1/risks/heatmap?department=&category=
GET /api/v1/risks/trend?from=&to=
GET /api/v1/risks/top?n=10
GET /api/v1/risk-matrix
PUT /api/v1/risk-matrix # admin, miqrasiya sihirbazı
GET /api/v1/risk-categories
GET /api/v1/risk-signals/rules
POST /api/v1/risk-signals/rules
GET /api/v1/risk-signals/pending # təsdiq gözləyən təkliflər
POST /api/v1/risk-signals/{id}/approve
POST /api/v1/risk-signals/{id}/reject
GET /api/v1/reports/risk-register?format=xlsx|pdf4.5.12 UI səhifələri
| Səhifə | Marşrut | Təsvir |
|---|---|---|
| Risk reyestri | /risks | Cədvəl: ID, başlıq, kateqoriya, sahib, ilkin, qalıq, hədəf, status, sonrakı baxış. Saxlanmış görünüşlər |
| Risk detalı | /risks/{id} | Tab: Ümumi / Qiymətləndirmə / Emal / Əlaqələr / Tarixçə / Şərhlər |
| Risk qiymətləndirmə sihirbazı | /risks/new | 5 addım: Kontekst → Təhdid/Zəiflik → İlkin qiymətləndirmə → Mövcud nəzarətlər → Qalıq + Emal |
| İstilik xəritəsi | /risks/heatmap | İnteraktiv matris, filtrlər |
| Emal planı | /risks/treatments | Kanban və ya cədvəl: planlanmış/icrada/gecikmiş/tamamlanmış |
| Risk qəbulları | /risks/acceptances | Bitmə tarixinə görə sıralı, xəbərdarlıqlar |
| Siqnal təklifləri | /risks/signals | Təsdiq gözləyən avtomatik təkliflər, "Qəbul et / Rədd et" + izah |
| Risk metodologiyası | /admin/risks/methodology | Matris redaktoru, şkalalar, iştaha, təsdiq səviyyələri |
| Təhdid/zəiflik kataloqu | /admin/risks/catalogs |
4.5.13 Metriklər
Ümumi risk sayı (səviyyə üzrə), orta qalıq bal, iştahadan yuxarı risklərin sayı, emalı gecikmiş risklər, vaxtı keçmiş baxışlar, qəbul edilmiş risklərin sayı və dəyəri, risk azalma trendi (ilkin→qalıq fərqi), şöbə üzrə risk profili, avtomatik siqnalların sayı və qəbul faizi.
4.5.14 Digər modullarla əlaqə
M04 (nəzarət effektivliyi → qalıq risk; risk → nəzarətin əsaslandırılması), M02 (fişinq → insan riski → BEC riski), M13 (DLP hadisə → məlumat riski), M06 (tapıntı → risk), M08 (aktiv kritikliyi → təsir), M09 (təchizatçı riski), M03 (istisna → risk), M17 (emal tapşırıqları), M16 (dashboard).
4.5.15 Qəbul meyarları
- Risk matrisi 3×3, 5×5 və custom formalarda konfiqurasiya edilə bilir; dəyişiklik audit olunur və mövcud risklər avtomatik dəyişmir.
- Qalıq risk nəzarət effektivliyindən avtomatik hesablanır; əl ilə üstündən yazma əsaslandırma tələb edir və
manual_overrideişarəsi ilə görünür. - Risk sahibi öz riskinin qəbulunu təsdiqləyə bilmir (403 + SoD audit qeydi).
- Risk qəbulunun müddəti bitdikdə status avtomatik
Under Reviewolur və bildiriş gedir. - Fişinq kampaniyası bitdikdə konfiqurasiya olunmuş siqnal qaydası işə düşür və
require_approvalrejimində risk balını dəyişmir, yalnız təklif yaradır. - Siqnal təklifi qəbul edildikdə
RiskAssessmenttarixçəsindəsource=automated_signalilə yeni sətir yaranır. - İstilik xəritəsi yalnız rəngə əsaslanmır — hər xanada rəqəm və naxış var (WCAG testi).
- Risk reyestri XLSX ixracında bütün sahələr və əlaqəli obyekt ID-ləri mövcuddur.
- Risk sahibi başqasının riskini API ilə redaktə edə bilmir (403).
- 1 000 riskdən ibarət reyestrdə filtr + sıralama ≤ 1 saniyə cavab verir.
4.6 M06 — Audit İdarəetməsi
4.6.1 Məqsəd
Daxili audit proqramının planlaşdırılması, icrası, tapıntıların idarə edilməsi və düzəldici tədbirlərin izlənməsi (ISO 27001 bənd 9.2 — Daxili audit, bənd 10.2 — Uyğunsuzluq və düzəldici tədbir).
4.6.2 İstifadəçilər
Daxili auditor, audit rəhbəri, auditee (yoxlanan şöbə/nəzarət tədbirinin sahibi), Compliance Officer, xarici auditor (məhdud), rəhbərlik.
4.6.3 Funksiyalar
Planlaşdırma
- İllik audit planı: dövr, əhatə olunacak sahələr, resurs, risk əsaslı prioritetləşdirmə
- Risk əsaslı skoup təklifi: yüksək qalıq riskli sahələr, əvvəlki tapıntıları olan sahələr, son audit tarixindən keçən müddət
- Audit planının təsdiqi (rəhbərlik) və versiyalaşdırılması
- Audit təqvimi (Gantt görünüşü)
Audit (Engagement)
| Sahə | Təsvir |
|---|---|
audit_id | AUD-YYYY-NNN |
title, type | internal / external / supplier / certification / follow-up / thematic |
objective | Audit məqsədi |
scope | Əhatə: şöbələr, proseslər, aktivlər, nəzarət tədbirləri, framework tələbləri |
criteria | Meyar: ISO 27001:2022, daxili siyasətlər, müqavilə tələbləri |
lead_auditor, auditors[] | SoD yoxlanılır |
auditees[] | |
planned_start/end, actual_start/end | |
status | bax 4.6.5 |
methodology | Müsahibə, sənəd baxışı, müşahidə, texniki test, seçmə (sampling) |
İcra
- Audit checklist: nəzarət tədbirlərindən avtomatik generasiya (skoupdakı hər nəzarət üçün bir sətir) + əl ilə əlavə
- Sətir: tələb / sual / test proseduru / nəticə (uyğun / uyğunsuz / qismən / tətbiq olunmur) / qeyd / sübut
- Müsahibə qeydləri: kim, nə vaxt, mövzu, qeydlər, iştirakçılar (məxfi — yalnız audit komandası)
- Sübut sorğusu (Evidence Request): auditor → auditee, deadline, statusla izlənir (M07 ilə inteqrasiya)
- Seçmə (Sampling): populyasiya ölçüsü, seçmə metodu (təsadüfi / sistematik / risk əsaslı), seçmə ölçüsü, seçilmiş elementlər, nəticələr
- İş kağızları (Working papers): auditorun daxili sənədləri — auditee görmür
- Audit vaxt qeydiyyatı (opsional)
Tapıntılar
| Tip | Təsvir | SLA (default) |
|---|---|---|
improvement_opportunity | Təkmilləşdirmə imkanı | 90 gün |
observation | Müşahidə, potensial problem | 60 gün |
minor_nonconformity | Kiçik uyğunsuzluq | 30 gün |
major_nonconformity | Böyük uyğunsuzluq — sistemin işləməməsi | 15 gün (dərhal cavab) |
Tapıntı sahələri: finding_id (FND-YYYY-NNN), başlıq, təsvir, tip, meyar (hansı tələb pozulub), sübut, təsir, risk əlaqəsi, nəzarət tədbiri əlaqəsi, auditee, sahib, deadline, status, aşkarlanma tarixi.
Kök səbəb analizi (RCA): metod seçimi (5 Why / Ishikawa / Fault Tree), addımlar, nəticə kök səbəb, kateqoriya (proses / insan / texnologiya / idarəetmə / xarici).
Düzəldici tədbir planı (CAP):
- Dərhal tədbir (correction) — nəticənin aradan qaldırılması
- Düzəldici tədbir (corrective action) — kök səbəbin aradan qaldırılması
- Profilaktik tədbir (opsional)
- Hər biri üçün: məsul, müddət, resurs, gözlənilən nəticə, tapşırıq (M17)
- Effektivliyin yoxlanması tarixi
4.6.4 Tapıntı iş axını
Draft
→ Auditor Review (audit rəhbərinin yoxlaması)
→ Issued (auditee-yə rəsmi verilir, SLA saatı başlayır)
→ Management Response (auditee razılaşır / etiraz edir, RCA təqdim edir)
├─ Disputed → Auditor Review (yenidən)
→ Corrective Action Planned
→ Corrective Action In Progress
→ Evidence Submitted
→ Auditor Verification
├─ Verified → Closed
└─ Not Verified → Reopened → Corrective Action In Progress
→ Closed
→ (Effectiveness Review, 3–6 ay sonra) → Confirmed Closed | Reopened4.6.5 Audit iş axını
Planned → Scheduled → Opening Meeting → Fieldwork → Findings Drafted
→ Closing Meeting → Draft Report → Report Review → Report Issued
→ Follow-up → Closed4.6.6 Audit hazırlığı balı (Audit Readiness Score) — şəffaf hesablama
Audit Readiness Score (0–100) = Σ(komponent × çəki)
1. Nəzarət tədbirlərinin icrası 30%
= Σ(control implementation score) / control count (M04 §4.4.8 ilə eyni bal)
2. Sübut tamlığı 25%
= (sübutu olan və vaxtı keçməmiş nəzarət tədbirləri) / (tətbiq olunan nəzarət tədbirləri)
3. Sənəd tamlığı 15%
= (aktual, təsdiqlənmiş, baxış tarixi keçməmiş məcburi sənədlər) / (tələb olunan sənədlər)
× tanışlıq faizi (≥95% → 1.0, 80-95% → 0.9, <80% → 0.75)
4. Açıq tapıntılar 15%
= 100 − (major × 20 + minor × 8 + observation × 3), minimum 0
+ gecikmiş tapıntılar üçün əlavə cəza: hər gecikmiş major −10
5. Risk idarəetməsinin aktuallığı 10%
= (baxış tarixi keçməmiş risklər) / (ümumi risklər)
× (emalı gecikməmiş risklər) / (emal tələb edən risklər)
6. Təlim və maarifləndirmə 5%
= məcburi təlimlərin tamamlanma faizi
Düzəliş: aktiv major nonconformity varsa ümumi bal 60-la məhdudlaşdırılır.Şəffaflıq: /compliance/audit-readiness səhifəsində hər komponentin dəyəri, çəkisi, töhfəsi və "nəyi düzəltsəm nə qədər artar" simulyasiyası göstərilir.
4.6.7 Məlumat obyektləri
AuditPlan, Audit, AuditScope, AuditTeamMember, AuditChecklist, AuditChecklistItem, AuditInterview, AuditSample, WorkingPaper, AuditFinding, RootCauseAnalysis, CorrectiveAction, AuditReport, AuditFollowUp, AuditReadinessSnapshot
4.6.8 Səlahiyyətlər
| Əməliyyat | internal_auditor | lead_auditor | auditee | compliance_officer | external_auditor |
|---|---|---|---|---|---|
| Audit planı yaratmaq | ❌ | ✅ | ❌ | ✅ | ❌ |
| Audit yaratmaq | ❌ | ✅ | ❌ | ✅ | ❌ |
| Checklist doldurmaq | ✅ (təyin olunan) | ✅ | ❌ | ❌ | ✅ (öz auditi) |
| İş kağızı yaratmaq/görmək | ✅ (öz) | ✅ (hamısı) | ❌ | ❌ | ✅ (öz) |
| Müsahibə qeydi görmək | ✅ (audit komandası) | ✅ | ❌ | ❌ | ✅ (öz) |
| Tapıntı yaratmaq | ✅ | ✅ | ❌ | ❌ | ✅ |
| Tapıntını rəsmiləşdirmək (Issue) | ❌ | ✅ | ❌ | ❌ | ⚠️ |
| Management response | ❌ | ❌ | ✅ | ❌ | ❌ |
| RCA daxil etmək | ❌ | ❌ | ✅ | ✅ | ❌ |
| Düzəldici tədbiri icra etmək | ❌ | ❌ | ✅ | ❌ | ❌ |
| Tapıntını yoxlamaq/bağlamaq | ✅ (SoD-7: icra edən deyil) | ✅ | ❌ | ❌ | ✅ |
| Sübutu görmək | ✅ (skoupda) | ✅ | Öz | ✅ | ✅ (yalnız skoupda, download loglanır) |
| Sübutu dəyişmək | ❌ | ❌ | ✅ (öz) | ❌ | ❌ |
| Audit hesabatı nəşr | ❌ | ✅ | ❌ | ✅ | ⚠️ |
4.6.9 Audit hadisələri
AUDIT_PLAN_CREATED, AUDIT_PLAN_APPROVED, AUDIT_CREATED, AUDIT_STARTED, AUDIT_SCOPE_CHANGED, AUDITOR_ASSIGNED, CHECKLIST_ITEM_COMPLETED, WORKING_PAPER_CREATED, WORKING_PAPER_VIEWED, INTERVIEW_RECORDED, EVIDENCE_REQUESTED, FINDING_CREATED, FINDING_ISSUED, FINDING_DISPUTED, MANAGEMENT_RESPONSE_SUBMITTED, RCA_SUBMITTED, CORRECTIVE_ACTION_CREATED, CORRECTIVE_ACTION_COMPLETED, FINDING_VERIFIED, FINDING_CLOSED, FINDING_REOPENED, AUDIT_REPORT_ISSUED, EXTERNAL_AUDITOR_ACCESS_GRANTED, EXTERNAL_AUDITOR_ACCESS_REVOKED
4.6.10 API
GET /api/v1/audit-plans
POST /api/v1/audit-plans
POST /api/v1/audit-plans/{id}/approve
GET /api/v1/audits?status=&year=&type=
POST /api/v1/audits
GET /api/v1/audits/{id}
POST /api/v1/audits/{id}/start
GET /api/v1/audits/{id}/checklist
POST /api/v1/audits/{id}/checklist/generate # skoupdan avtomatik
PATCH /api/v1/audits/{id}/checklist/{itemId}
GET /api/v1/audits/{id}/working-papers
POST /api/v1/audits/{id}/working-papers
POST /api/v1/audits/{id}/interviews
POST /api/v1/audits/{id}/samples
POST /api/v1/audits/{id}/evidence-requests
GET /api/v1/audits/{id}/report
POST /api/v1/audits/{id}/report/issue
GET /api/v1/findings?type=&status=&overdue=true&department=
POST /api/v1/findings
POST /api/v1/findings/{id}/issue
POST /api/v1/findings/{id}/response # auditee
POST /api/v1/findings/{id}/rca
POST /api/v1/findings/{id}/corrective-actions
POST /api/v1/findings/{id}/submit-evidence
POST /api/v1/findings/{id}/verify # SoD-7 yoxlanır
POST /api/v1/findings/{id}/close
POST /api/v1/findings/{id}/reopen
GET /api/v1/compliance/audit-readiness
GET /api/v1/compliance/audit-readiness/explain
GET /api/v1/compliance/audit-readiness/simulate?controlId=&newStatus=4.6.11 UI səhifələri
/audits (siyahı + təqvim), /audits/{id} (Ümumi / Skoup / Checklist / Müsahibələr / Seçmələr / İş kağızları / Tapıntılar / Hesabat), /audits/{id}/checklist (iki panelli: sətir siyahısı + detal), /findings (cədvəl, gecikmiş qırmızı + ikon), /findings/{id} (Tapıntı / Cavab / RCA / Düzəldici tədbirlər / Sübut / Yoxlama / Tarixçə), /my/findings (auditee üçün), /compliance/audit-readiness (bal + komponentlər + simulyasiya), /admin/audits/plan.
4.6.12 Metriklər
Planlanmış vs icra olunmuş auditlər, tapıntı sayı (tip üzrə), açıq/gecikmiş tapıntılar, orta bağlanma müddəti, təkrar açılan tapıntı faizi, şöbə üzrə tapıntı sıxlığı, audit hazırlığı balı və trendi, düzəldici tədbirlərin vaxtında icrası.
4.6.13 Digər modullarla əlaqə
M04 (nəzarət tədbiri ← checklist, tapıntı → status), M05 (tapıntı → risk), M07 (sübut sorğusu), M17 (düzəldici tədbir tapşırığı), M03 (siyasət meyarı), M09 (təchizatçı auditi), M16 (dashboard).
4.6.14 Qəbul meyarları
- Audit skoupundan checklist avtomatik generasiya olunur (hər nəzarət tədbiri üçün sətir).
- Auditor öz sahibi olduğu nəzarət tədbirinin auditinə təyin edilə bilmir (SoD-3, 403).
- Düzəldici tədbiri icra edən şəxs onu yoxlaya bilmir (SoD-7, 403).
- İş kağızları və müsahibə qeydləri auditee rolu tərəfindən API ilə də açıla bilmir (403).
- Major nonconformity yaradıldıqda dərhal bildiriş + 15 günlük SLA sayğacı başlayır.
- Tapıntı SLA-nı keçdikdə avtomatik eskalasiya (sahib → müdir → CISO) işə düşür.
- Audit hazırlığı balının hər komponenti izah səhifəsində rəqəmlə göstərilir.
- Xarici auditorun girişi yalnız təyin olunmuş audit skoupu ilə məhdudlaşır və müddəti bitdikdə avtomatik ləğv olunur.
- Xarici auditorun hər sübut baxışı/yükləməsi audit logunda qeyd olunur.
- Audit hesabatı PDF-i tapıntıları, RCA-nı və düzəldici tədbirləri əhatə edir.
4.7 M07 — Sübut İdarəetməsi
4.7.1 Məqsəd
Uyğunluğun sübutunu mərkəzləşdirilmiş, təhlükəsiz, versiyalanmış və bütövlüyü yoxlanıla bilən şəkildə saxlamaq; sübut vaxtı keçdikdə uyğunluq balına və audit hazırlığına avtomatik təsir etmək.
4.7.2 Sübut tipləri
| Tip | Nümunə |
|---|---|
file | Konfiqurasiya çıxarışı, hesabat PDF-i, təsdiq sənədi |
screenshot | Sistem parametrlərinin ekran görüntüsü |
text | Prosesin təsviri, müsahibə nəticəsi |
url_reference | Daxili sistemdə sənədin linki |
system_record | Platforma daxilindəki obyektə istinad (siyasət, təlim hesabatı, audit log çıxarışı) |
api_collected | Avtomatik toplanmış (Faza 4): AD parol siyasəti, backup statusu, antivirus versiyası |
attestation | Sahibin rəsmi təsdiqi ("bu nəzarət tədbiri icra olunur", e-imza ilə) |
4.7.3 Sahələr
evidence_id (EVD-YYYY-NNNNN), başlıq, təsvir, tip, mənbə (source_system), sahib, toplayan, toplanma tarixi, valid_from, valid_until, expiration_date, avtomatik yenilənmə tezliyi, təsnifat səviyyəsi (M10), status, rəyçi, təsdiq tarixi, versiya, file_hash (SHA-256), file_size, mime_type, malware_scan_status, malware_scan_at, əlaqəli nəzarət tədbirləri[], risklər[], siyasətlər[], aktivlər[], auditlər[], tapıntılar[], teqlər[].
4.7.4 Funksiyalar
- Yükləmə: drag-and-drop, çoxlu fayl, toplu metadata təyinatı
- Sübut sorğusu (Evidence Request): auditor/compliance → sahib; deadline, təsvir, tələb olunan format; statusla izlənir; xatırlatma və eskalasiya
- Versiyalaşdırma: eyni sübutun yeni dövr üçün yenilənməsi; köhnə versiya saxlanılır
- Bütövlük: yükləmədə SHA-256 hesablanır və saxlanılır; dövri fon işi (həftəlik) bütün faylların hashını yenidən hesablayır və uyğunsuzluqda kritik alarm yaradır
- Vaxtı bitmə:
valid_until− 30/14/7 gün bildiriş; keçdikdə statusExpired→ əlaqəli nəzarət tədbirinin balı düşür - Təkrar istifadə: bir sübut N nəzarət tədbirinə, M framework tələbinə bağlana bilər
- Önizləmə: PDF/şəkil brauzerdə (sandboxed iframe, ayrıca origin), Office faylları üçün yalnız yükləmə və ya server-side render (Faza 2)
- Axtarış: metadata + fayl mətni (OCR/text extraction, OpenSearch)
- Toplu əməliyyatlar: teq əlavə et, sahib dəyiş, nəzarət tədbirinə bağla, ixrac
4.7.5 🔒 Təhlükəsizlik tələbləri (normativ)
| # | Tələb | Realizasiya |
|---|---|---|
| S1 | Şifrələnmiş saxlama | Obyekt saxlamada (MinIO/S3) SSE-KMS; açarlar HashiCorp Vault-da; hər fayl ayrı data açarı (envelope encryption) |
| S2 | Fayl tipinin yoxlanması | Magic bytes + uzantı + MIME uyğunluğu; allowlist (PDF, PNG, JPG, DOCX, XLSX, PPTX, TXT, CSV, ZIP, EML, MSG, LOG). Uyğunsuzluq → rədd |
| S3 | Zərərli proqram yoxlanışı | ClamAV (ICAP və ya birbaşa) hər yükləmədə; nəticə gözlənilir, clean olmadan fayl əlçatan olmur; infected → karantin + alarm |
| S4 | Ayrı önizləmə/yükləmə icazəsi | evidence:preview və evidence:download ayrı permission-lar |
| S5 | İmzalanmış, qısamüddətli URL | Yükləmə linki 5 dəqiqəlik, bir dəfəlik, istifadəçiyə bağlı token |
| S6 | Hər giriş audit olunur | EVIDENCE_PREVIEWED, EVIDENCE_DOWNLOADED — kim, nə vaxt, hansı IP, hansı səbəb (məhdud təsnifat üçün səbəb məcburi) |
| S7 | Təsnifat tətbiqi | Sübutun təsnifatı M10-dan; Məxfi+ təsnifatlı sübutlar üçün: platform_admin avtomatik giriş almır (P8, ayrıca açıq təyinat lazımdır) |
| S8 | Yükləmə sərhədləri | Fayl ≤ 100 MB (konfiqurasiya), sorğu ≤ 500 MB, istifadəçi başına saatlıq limit |
| S9 | Arxiv yoxlanışı | ZIP daxili yoxlanır (zip bomb müdafiəsi: maks açılmış ölçü, maks dərinlik, maks fayl sayı) |
| S10 | Aktiv məzmunun zərərsizləşdirilməsi | SVG, HTML yüklənmə zamanı sanitizasiya və ya Content-Disposition: attachment + Content-Security-Policy: sandbox |
| S11 | Dəyişməz tarixçə | Sübut silinmir — soft delete + səbəb; fayl saxlamada versiya qalır (retention siyasətinə qədər) |
| S12 | Su nişanı | Məhdud təsnifatlı PDF önizləməsinə istifadəçi adı + tarix su nişanı əlavə olunur |
4.7.6 İş axını
Sübut: Draft → Submitted → Under Review → Approved → Active → Expiring → Expired → Renewed/Archived
└→ Rejected → Draft
Sübut sorğusu: Requested → Acknowledged → In Progress → Submitted → Accepted | Rejected → Closed
└(deadline) → Overdue → Escalated4.7.7 Səlahiyyətlər
| Əməliyyat | evidence_owner | compliance_officer | auditor | control_owner | platform_admin |
|---|---|---|---|---|---|
| Yükləmək | ✅ | ✅ | ❌ | ✅ | ❌ |
| Metadata görmək | ✅ | ✅ | ✅ | ✅ (öz nəzarəti) | ✅ |
| Önizləmə | ✅ (öz) | ✅ | ✅ (skoupda) | ✅ (öz) | ❌ (məxfi üçün) |
| Yükləmək (download) | ✅ (öz) | ✅ | ✅ (loglanır) | ✅ (öz) | ❌ (məxfi üçün) |
| Redaktə (metadata) | ✅ (öz) | ✅ | ❌ | ❌ | ❌ |
| Faylı əvəzləmək | ✅ (yeni versiya) | ✅ | ❌ | ❌ | ❌ |
| Təsdiqləmək | ❌ (SoD-9) | ✅ | ❌ | ✅ (öz deyilsə) | ❌ |
| Silmək | ❌ | ⚠️ soft, səbəbli | ❌ | ❌ | ❌ |
| Retention/saxlama konfiqurasiyası | ❌ | ❌ | ❌ | ❌ | ✅ |
4.7.8 Audit hadisələri
EVIDENCE_UPLOADED, EVIDENCE_METADATA_UPDATED, EVIDENCE_VERSION_CREATED, EVIDENCE_APPROVED, EVIDENCE_REJECTED, EVIDENCE_PREVIEWED, EVIDENCE_DOWNLOADED, EVIDENCE_LINKED, EVIDENCE_UNLINKED, EVIDENCE_EXPIRED, EVIDENCE_DELETED, EVIDENCE_INTEGRITY_CHECK_FAILED, EVIDENCE_MALWARE_DETECTED, EVIDENCE_REQUEST_CREATED, EVIDENCE_REQUEST_FULFILLED, EVIDENCE_REQUEST_OVERDUE, EVIDENCE_CLASSIFICATION_CHANGED
4.7.9 API
GET /api/v1/evidence?control=&risk=&status=&expiring=30d&classification=
POST /api/v1/evidence # multipart; virus scan sinxron/asinxron
GET /api/v1/evidence/{id}
PUT /api/v1/evidence/{id} # metadata
POST /api/v1/evidence/{id}/versions
GET /api/v1/evidence/{id}/preview-url # qısamüddətli imzalı URL
GET /api/v1/evidence/{id}/download-url # ayrıca permission + səbəb
POST /api/v1/evidence/{id}/approve
POST /api/v1/evidence/{id}/reject
POST /api/v1/evidence/{id}/links # {objectType, objectId}
DELETE /api/v1/evidence/{id}/links/{linkId}
GET /api/v1/evidence/{id}/integrity # hash yoxlaması
POST /api/v1/evidence/bulk-link
GET /api/v1/evidence-requests
POST /api/v1/evidence-requests
POST /api/v1/evidence-requests/{id}/fulfill
GET /api/v1/reports/evidence-expiration4.7.10 UI səhifələri
/evidence (cədvəl + filtr: bitmə tarixi, təsnifat, nəzarət tədbiri; sütunda bitmə xəbərdarlığı ikonu), /evidence/{id} (metadata + önizləmə + əlaqələr + versiyalar + giriş tarixçəsi), /evidence/upload (drag-drop + toplu metadata), /evidence/requests (mənə gələn / mənim göndərdiyim), /evidence/expiring (dashboard widget-dən keçid).
4.7.11 Metriklər
Ümumi sübut sayı, sübutu olmayan nəzarət tədbirləri, 30/60/90 gün ərzində bitən sübutlar, vaxtı keçmiş sübutlar, sübut sorğularının orta yerinə yetirilmə müddəti, gecikmiş sorğular, bütövlük yoxlaması uğursuzluqları, avtomatik toplanmış sübut faizi (Faza 4 hədəfi ≥ 40%).
4.7.12 Qəbul meyarları
- Zərərli proqram aşkarlandıqda fayl karantinə alınır, heç bir istifadəçiyə əlçatan olmur və dərhal alarm göndərilir.
- Fayl uzantısı ilə magic bytes uyğun gəlmədikdə yükləmə rədd edilir (400).
- Yükləmə URL-i 5 dəqiqədən sonra işləmir (401/403).
- Məxfi təsnifatlı sübutu
platform_adminavtomatik olaraq önizləyə/yükləyə bilmir (403). - Hər önizləmə və yükləmə audit logunda kim/nə vaxt/IP ilə görünür.
- Fayl hash-ı saxlamada dəyişdikdə həftəlik yoxlama uğursuz olur və kritik alarm yaranır.
- Sübut
Expiredolduqda əlaqəli nəzarət tədbirinin uyğunluq balı avtomatik azalır və izahda görünür. - Sübut sahibi öz sübutunu təsdiqləyə bilmir (SoD-9).
- Zip bomb faylı yükləndikdə sistem qorunur (limitlər tətbiq olunur, xəta qaytarılır).
- Sübut heç bir rol tərəfindən fiziki silinə bilmir; yalnız soft delete + səbəb.
4.8 M08 — Aktiv və Sahiblik Reyestri
4.8.1 Məqsəd
GRC üçün kifayət edən yüngül aktiv reyestri — tam CMDB deyil. Məqsəd: aktiv sahibliyi, kritikliyi, təsnifatı və nəzarət/risk əlaqələrini müəyyən etmək (ISO 27001 A.5.9–A.5.13).
Skoup qərarı: CMDB funksiyaları (avtomatik discovery, konfiqurasiya elementlərinin dərin əlaqələri, dəyişikliklərin idarəolunması) daxil deyil. Mövcud CMDB varsa, ondan import (CSV / API) dəstəklənir.
4.8.2 Aktiv tipləri
application, server, virtual_machine, cloud_service, network_device, database, storage, endpoint_group (fərdi endpoint yox, qrup), information_asset (məlumat toplusu), business_process, physical_location, vendor_service, department, document_repository
4.8.3 Sahələr
asset_id (AST-NNNNN), ad, təsvir, tip, alt-tip, sahib (biznes sahibi), custodian (texniki saxlayıcı), departament, təşkilati vahid, yer, mühit (prod/test/dev/dr), kritiklik (1–5 və ya Aşağı–Kritik), məlumat təsnifatı (M10), CIA tələbləri (C/I/A ayrı-ayrılıqda 1–5), RTO, RPO, əlaqəli risklər[], əlaqəli nəzarət tədbirləri[], əlaqəli təchizatçılar[], əlaqəli siyasətlər[], əlaqəli sübutlar[], həyat dövrü statusu (planned / in_procurement / active / deprecated / decommissioned), istismara verilmə tarixi, baxış tarixi, xarici sistem ID-si (CMDB korrelyasiyası üçün), teqlər.
Kritikliyin avtomatik təklifi: criticality = max(C, I, A) ilə korrelyasiya + əlaqəli biznes prosesinin kritikliyi. Təklif göstərilir, sahib təsdiqləyir.
4.8.4 Funksiyalar
- Əl ilə yaratma + CSV/XLSX import (mapping sihirbazı ilə) + API import
- Aktiv ağacı: biznes prosesi → tətbiq → server → verilənlər bazası (asılılıq əlaqələri, sadə N:M)
- Sahiblik attestasiyası: dövri (illik) — sahibə "bu aktivin sahibi hələ də sizsiniz?" sorğusu; təsdiq və ya ötürmə
- Aktiv üzrə risk və nəzarət əhatəsi göstəricisi ("bu aktiv üçün 0 nəzarət tədbiri var" xəbərdarlığı)
- Həyat dövrünün sonu:
decommissionededildikdə əlaqəli risklərin, sübutların statusunun yoxlanması tapşırığı - Məlumat aktivi üçün əlavə: məlumat tipləri (M11), saxlanma müddəti, məlumat sahibi, hüquqi əsas
4.8.5 Səlahiyyətlər
| Əməliyyat | asset_owner | compliance_officer | platform_admin | auditor | employee |
|---|---|---|---|---|---|
| Reyestri görmək | ✅ | ✅ | ✅ | ✅ | ❌ |
| Aktiv yaratmaq | ✅ | ✅ | ✅ | ❌ | ❌ |
| Öz aktivini redaktə | ✅ | ✅ | ❌ | ❌ | ❌ |
| Kritikliyi dəyişmək | ✅ (əsaslandırma) | ✅ | ❌ | ❌ | ❌ |
| Sahibliyi ötürmək | ✅ (qəbul tələb olunur) | ✅ | ⚠️ | ❌ | ❌ |
| Import | ❌ | ✅ | ✅ | ❌ | ❌ |
| Silmək | ❌ | ⚠️ soft | ❌ | ❌ | ❌ |
4.8.6 Audit hadisələri
ASSET_CREATED, ASSET_UPDATED, ASSET_OWNER_CHANGED, ASSET_CRITICALITY_CHANGED, ASSET_CLASSIFICATION_CHANGED, ASSET_DECOMMISSIONED, ASSET_IMPORTED, ASSET_OWNERSHIP_ATTESTED, ASSET_LINKED
4.8.7 API
GET /api/v1/assets?type=&criticality=&owner=&department=&classification=
POST /api/v1/assets
GET /api/v1/assets/{id}
PUT /api/v1/assets/{id}
GET /api/v1/assets/{id}/related # risk, control, vendor, evidence
POST /api/v1/assets/{id}/transfer-ownership
POST /api/v1/assets/{id}/attest
POST /api/v1/assets/import # CSV/XLSX
GET /api/v1/assets/coverage # nəzarət/risk əhatəsi olmayan aktivlər
GET /api/v1/reports/asset-register?format=xlsx4.8.8 UI səhifələri
/assets (cədvəl + qrup görünüşü), /assets/{id} (Ümumi / CIA / Risklər / Nəzarət tədbirləri / Təchizatçılar / Sübutlar / Tarixçə), /assets/import, /assets/coverage (boşluqlar), /my/assets (sahib üçün + attestasiya sorğuları).
4.8.9 Metriklər
Aktiv sayı (tip/kritiklik üzrə), sahibi olmayan aktivlər, təsnifatı olmayan aktivlər, nəzarət tədbiri olmayan kritik aktivlər, baxış tarixi keçmiş aktivlər, attestasiya tamamlanma faizi.
4.8.10 Qəbul meyarları
- Sahibi və ya təsnifatı olmayan aktiv
activestatusuna keçə bilmir. - Kritik aktivə bağlı ən azı bir nəzarət tədbiri yoxdursa boşluq hesabatında görünür.
- Sahibliyin ötürülməsi yeni sahibin qəbulunu tələb edir (iki addımlı).
- CSV import ≤ 5 000 sətir üçün ≤ 60 saniyə, xəta sətirləri ayrıca hesabatda.
- Aktivin kritikliyi dəyişdikdə əlaqəli risklərin yenidən qiymətləndirilməsi üçün siqnal yaranır.
4.9 M09 — Təchizatçı Riskinin İdarəetməsi
4.9.1 Məqsəd
Üçüncü tərəflərin (təchizatçı, podratçı, xidmət provayderi, bulud provayderi) informasiya təhlükəsizliyi risklərini qiymətləndirmək və izləmək (ISO 27001 A.5.19–A.5.23).
4.9.2 Təchizatçı profili
vendor_id (VND-NNNN), ad, VÖEN/qeydiyyat nömrəsi, kateqoriya (İT xidməti / proqram təminatı / bulud / autsorsinq / konsaltinq / avadanlıq / təmizlik-fiziki giriş / digər), daxili sahib (vendor_owner), əlaqə şəxsləri, göstərilən xidmət, kritiklik (biznes üçün), məlumat girişi səviyyəsi (yoxdur / metadata / daxili / şəxsi məlumat / məxfi / xüsusi əhəmiyyətli), sistem girişi (yoxdur / oxuma / yazma / inzibati / fiziki), hosting yeri (ölkə, data mərkəzi), subprosessorlar, müqavilə nömrəsi/başlanğıc/bitmə/avtomatik uzadılma, NDA (var/yox, tarix), DPA (var/yox, tarix), sertifikatlar (ISO 27001, ISO 9001, SOC 2, PCI DSS — nömrə, orqan, etibarlılıq müddəti, sənəd), SLA, çıxış (offboarding) statusu, risk balı, son qiymətləndirmə tarixi, növbəti qiymətləndirmə tarixi.
4.9.3 Təhlükəsizlik sorğu vərəqəsi (Questionnaire)
- Şablon qurucusu: bölmələr, suallar (bəli/xeyr, çoxvariantlı, sərbəst mətn, fayl tələbi, rəqəm), hər cavab üçün risk çəkisi və bayraq (
red_flag) - Şablon nümunələri: Qısa (25 sual, aşağı kritiklik), Standart (60 sual), Genişləndirilmiş (120+ sual, kritik təchizatçılar), Bulud xidməti üçün xüsusi, Şəxsi məlumat emalı üçün xüsusi
- Şablonlar ISO 27001 Annex A domenlərinə map edilir
- Göndərmə: təchizatçıya xarici portal linki (token ilə, autentifikasiyasız, müddətli) və ya daxili istifadəçi kimi
- Təchizatçı cavabları + sübut faylları yükləyir
- Qismən yadda saxlama, deadline, xatırlatma
- Cavabların rəyi: daxili qiymətləndirici hər cavabı qəbul edir / dəqiqləşdirmə istəyir / tapıntı yaradır
⚠️ Təhlükəsizlik qeydi: xarici portal internetə açıq olmalıdırsa, ayrıca DMZ-də yerləşən, əsas platformadan izolyasiya olunmuş komponent kimi (yalnız API vasitəsilə) yerləşdirilməlidir. Alternativ: sorğu vərəqəsini XLSX kimi göndərmək və cavabı import etmək (internetsiz mühit üçün default).
4.9.4 Risk balı
Vendor Risk Score (0–100) =
0.30 × İnherent risk (kritiklik × məlumat girişi × sistem girişi)
+ 0.40 × Sorğu vərəqəsi balı (100 − Σ(çəkili mənfi cavablar))
+ 0.15 × Sertifikat/sənəd tamlığı (ISO/SOC/NDA/DPA var və etibarlıdır)
+ 0.15 × Açıq tapıntılar (major −25, minor −10 hər biri)
Düzəliş: red_flag cavab varsa → minimum "Yüksək" səviyyə (avtomatik eskalasiya)
Zolaqlar: 0–24 Aşağı | 25–49 Orta | 50–74 Yüksək | 75–100 Kritik4.9.5 İş axını
Təchizatçı: Prospective → Under Assessment → Approved → Active
→ Conditionally Approved (tapıntılarla) → Under Remediation
→ Suspended → Offboarding → Terminated
Qiymətləndirmə: Initiated → Questionnaire Sent → In Progress → Submitted
→ Under Review → Findings Raised → Remediation → Completed → Approved/RejectedOffboarding checklist: girişlərin ləğvi, məlumatların geri qaytarılması/məhvi (sertifikat tələbi), açarların ləğvi, NDA-nın davam edən öhdəlikləri, aktiv reyestrinin yenilənməsi, müqavilənin bağlanması sənədi.
4.9.6 Avtomatik xəbərdarlıqlar
Müqavilə bitməsinə 90/60/30 gün, sertifikat bitməsinə 60/30 gün, illik yenidən qiymətləndirmə tarixi, DPA/NDA yoxdur + şəxsi məlumat girişi var (dərhal), təchizatçı tərəfli təhlükəsizlik hadisəsi qeyd edildi.
4.9.7 Səlahiyyətlər
| Əməliyyat | vendor_manager | vendor_owner | compliance_officer | risk_manager | auditor |
|---|---|---|---|---|---|
| Təchizatçı yaratmaq | ✅ | ✅ | ✅ | ❌ | ❌ |
| Sorğu vərəqəsi göndərmək | ✅ | ✅ | ✅ | ❌ | ❌ |
| Cavabları rəyləndirmək | ✅ | ⚠️ | ✅ | ❌ | ❌ |
| Qiymətləndirməni təsdiqləmək | ⚠️ SoD-8 | ❌ | ✅ | ✅ | ❌ |
| Risk balını əl ilə dəyişmək | ❌ | ❌ | ⚠️ əsaslandırma | ✅ | ❌ |
| Müqavilə sənədlərini görmək | ✅ | ✅ | ✅ | ❌ | ✅ (skoupda) |
| Offboarding başlatmaq | ✅ | ✅ | ❌ | ❌ | ❌ |
4.9.8 Audit hadisələri
VENDOR_CREATED, VENDOR_UPDATED, VENDOR_CRITICALITY_CHANGED, VENDOR_ASSESSMENT_INITIATED, QUESTIONNAIRE_SENT, QUESTIONNAIRE_SUBMITTED, QUESTIONNAIRE_REVIEWED, VENDOR_RISK_SCORE_CHANGED, VENDOR_APPROVED, VENDOR_REJECTED, VENDOR_SUSPENDED, VENDOR_OFFBOARDING_STARTED, VENDOR_OFFBOARDING_COMPLETED, VENDOR_DOCUMENT_UPLOADED, VENDOR_PORTAL_TOKEN_ISSUED, VENDOR_PORTAL_ACCESS
4.9.9 API
GET /api/v1/vendors?criticality=&riskLevel=&category=&contractExpiring=90d
POST /api/v1/vendors
GET /api/v1/vendors/{id}
PUT /api/v1/vendors/{id}
GET /api/v1/vendors/{id}/assessments
POST /api/v1/vendors/{id}/assessments
POST /api/v1/vendors/{id}/assessments/{aid}/send-questionnaire
GET /api/v1/vendors/{id}/documents
POST /api/v1/vendors/{id}/documents
POST /api/v1/vendors/{id}/offboard
GET /api/v1/questionnaire-templates
POST /api/v1/questionnaire-templates
GET /api/v1/reports/vendor-risk?format=xlsx|pdf
# Xarici portal (ayrıca servis, token auth, rate limited):
GET /vendor-portal/{token}
POST /vendor-portal/{token}/answers
POST /vendor-portal/{token}/documents
POST /vendor-portal/{token}/submit4.9.10 UI səhifələri
/vendors (cədvəl: ad, kritiklik, risk balı+zolaq, müqavilə bitmə, son qiymətləndirmə), /vendors/{id} (Profil / Müqavilə / Sənədlər / Qiymətləndirmələr / Tapıntılar / Risklər / Aktivlər / Tarixçə), /vendors/{id}/assessments/{aid} (sorğu cavabları + rəy paneli), /admin/vendors/questionnaires (şablon qurucusu), /vendors/expiring (müqavilə/sertifikat xəbərdarlıqları).
4.9.11 Metriklər
Təchizatçı sayı (kritiklik/risk zolağı üzrə), qiymətləndirilməmiş kritik təchizatçılar, gecikmiş yenidən qiymətləndirmələr, 90 gün ərzində bitən müqavilələr/sertifikatlar, açıq təchizatçı tapıntıları, DPA/NDA olmayan şəxsi məlumat emalçıları, orta təchizatçı risk balı və trendi.
4.9.12 Qəbul meyarları
- Şəxsi məlumata girişi olan təchizatçı DPA olmadan
Approvedstatusuna keçə bilmir. red_flagcavab avtomatik olaraq risk səviyyəsini minimum "Yüksək" edir və bildiriş göndərir.- Sorğu vərəqəsi tokeni müddətli və birdəfəlikdir; müddəti bitdikdən sonra 403.
- Xarici portal əsas platformanın verilənlər bazasına birbaşa girişə malik deyil (arxitektura yoxlaması).
- Sertifikat bitmə tarixi keçdikdə təchizatçının risk balı avtomatik yenilənir.
- Offboarding checklist-inin bütün bəndləri tamamlanmadan təchizatçı
Terminatedolmur.
4.10 M10 — Məlumat Təsnifatı
4.10.1 Məqsəd
DLP-nin bünövrəsi. Qurumun məlumatlarını rəsmi taksonomiya üzrə təsnif etmək, hər səviyyə üçün istifadə qaydalarını müəyyən etmək və bu qaydaları texniki icraya (DLP, şifrələmə, saxlama) çevirmək (ISO 27001 A.5.12, A.5.13, A.5.14).
Kritik prinsip: DLP təsnifat olmadan işləmir. Təsnifat taksonomiyası Faza 3-ün birinci işi, DLP qaydaları isə ikincidir.
4.10.2 Təsnifat səviyyələri (ilkin nümunə — konfiqurasiya edilə bilən)
| # | Ad (AZ) | Kod | Rəng | Etiket | Təsvir | Sızma təsiri |
|---|---|---|---|---|---|---|
| 1 | Açıq | PUBLIC | Yaşıl | AÇIQ | İctimaiyyətə açıq, dərc edilə bilən | Yoxdur |
| 2 | Daxili istifadə üçün | INTERNAL | Mavi | DAXİLİ İSTİFADƏ ÜÇÜN | Qurum daxilində sərbəst | Aşağı |
| 3 | Məhdud girişli | RESTRICTED | Sarı | MƏHDUD GİRİŞLİ | Yalnız müəyyən şöbə/rol | Orta |
| 4 | Məxfi | CONFIDENTIAL | Narıncı | MƏXFİ | Ad-hoc icazə, "bilməli olduğu qədər" | Yüksək |
| 5 | Xüsusi əhəmiyyətli | TOP_SECRET | Qırmızı | XÜSUSİ ƏHƏMİYYƏTLİ | Ən yüksək qorunma, ayrıca reyestr | Kritik |
Konfiqurasiya edilə bilir: səviyyələrin sayı, adları, kodları, rəngləri, ardıcıllığı. Dövlət qurumunun rəsmi terminologiyası (məsələn qanunvericiliklə müəyyən edilmiş "xidməti istifadə üçün" kimi terminlər) tətbiq oluna bilər.
4.10.3 Hər səviyyə üçün siyasət konfiqurasiyası
| Parametr | Tip | Nümunə (Məxfi) |
|---|---|---|
name, code, order, description | ||
color, icon, pattern | Rəng + ikon + naxış (accessibility: yalnız rəng yox) | Narıncı, kilid ikonu, çəpərəki xətlər |
visual_label | Sənəddə görünən etiket | "MƏXFİ" |
header_text, footer_text | Sənəd başlıq/altbaşlığı | "MƏXFİ — İcazəsiz yayılması qadağandır" |
watermark | Su nişanı şablonu | {{classification}} — {{user}} — {{date}} |
allowed_groups[] | AD qrupları | CN=Confidential-Access,... |
allowed_storage_locations[] | İcazəli saxlama | Daxili fayl serveri (şifrələnmiş bölmə), ETİMAD sübut saxlaması |
forbidden_storage_locations[] | Şəxsi bulud, USB, şəxsi poçt | |
allowed_channels[] | Rabitə kanalları | Daxili email (şifrələnmiş), daxili paylaşım |
external_sharing_policy | enum | prohibited / approval_required / encrypted_only / allowed |
email_policy | Xarici göndərmə: bloklanır. Daxili: S/MIME şifrələmə tələb olunur | |
printing_policy | İcazəlidir, su nişanı ilə, çap jurnalı ilə | |
usb_policy | Qadağandır | |
screenshot_policy | Qadağandır (endpoint agent dəstəyi tələb olunur) | |
clipboard_policy | Yalnız icazəli tətbiqlər arasında | |
encryption_requirement | enum | at_rest + in_transit + at_use |
min_encryption_standard | AES-256, TLS 1.3 | |
retention_period | müddət | 10 il |
destruction_requirement | Təsdiqlənmiş məhv aktı ilə, şredder/kripto-silmə | |
approval_requirement | Xaricə ötürmə: məlumat sahibi + CISO | |
access_review_frequency | 6 ay | |
dlp_default_action | enum | block (bax M12) |
mfa_required | bool | Bəli |
offline_access_allowed | bool | Xeyr |
legal_basis | mətn | Hansı normativ akta əsasən |
4.10.4 Təsnifatın tətbiqi
Obyektlər: sənəd (M03), sübut (M07), aktiv (M08), məlumat toplusu (data inventory), DLP hadisəsi (M13), hesabat, ixrac faylı.
Üsullar:
| Üsul | Təsvir |
|---|---|
| Əl ilə (manual) | İstifadəçi yaradarkən seçir; default INTERNAL |
| Təklif (suggested) | Məzmun analizi (M11) əsasında sistem təklif edir, istifadəçi təsdiqləyir |
| Avtomatik (automatic) | Qayda əsaslı: yer, tip, mənbə, açar sözlər → avtomatik təyinat (yalnız konfiqurasiya olunmuş hallarda) |
| İrsən (inherited) | Qovluq/konteynerin təsnifatı yeni obyektə ötürülür |
| Toplu (bulk) | Filtrlə seçilmiş obyektlərə toplu tətbiq (təsdiqlə) |
Yüksəltmə (upgrade): sərbəst — istənilən istifadəçi öz obyektinin təsnifatını yüksəldə bilər. Endirmə (downgrade): həmişə təsdiq tələb edir — məlumat sahibi (data_owner) və ya təsnifat administratoru. Əsaslandırma məcburi. Audit olunur.
Yenidən təsnifat (reclassification): dövri baxış tarixi (səviyyəyə görə), məlumatın aktuallığını itirməsi (məs. 5 ildən sonra CONFIDENTIAL → INTERNAL), avtomatik xatırlatma.
4.10.5 Office/PDF etiket inteqrasiyası (dizayn)
Hədəf: ETİMAD-da müəyyən edilmiş taksonomiya faylların özünə "yapışsın".
| Yanaşma | Təsvir | Faza |
|---|---|---|
| A. Metadata yazma | Office Open XML docProps/custom.xml-ə ETIMAD_Classification, ETIMAD_ClassificationId, ETIMAD_AppliedBy, ETIMAD_AppliedAt, ETIMAD_Integrity (HMAC) sahələri; PDF-də XMP metadata | 3 |
| B. Vizual etiket | Başlıq/altbaşlıq/su nişanının fayla yazılması (server-side, OpenXML SDK / PDFBox) | 3 |
| C. Office add-in | İstifadəçi Word/Excel/Outlook-da birbaşa etiket seçir; ETİMAD API-dən taksonomiyanı çəkir | 3–4 |
| D. Microsoft Purview/MIP uyğunlaşdırılması | Əgər qurumda MIP varsa: ETİMAD taksonomiyası ↔ MIP sensitivity label mapping; ETİMAD siyasət mənbəyi, MIP icraçı | 4 (opsional) |
| E. Etiketin qorunması | Fayl emal edildikdə (konvertasiya, ixrac) etiketin saxlanması; HMAC ilə dəyişdirilməsinin aşkarlanması | 3 |
Qərar: MVP-də (Faza 3) A + B realizasiya olunur — platforma daxilində yaradılan/ixrac edilən bütün fayllar etiketlənir. C və D sonrakı mərhələdə, qurumun endpoint mühitindən asılı olaraq.
4.10.6 Məlumat inventarı və axın xəritəsi (Data Inventory & Flow Mapping)
Məlumat toplusu (DataSet) sahələri:
| Sahə | Nümunə |
|---|---|
| Ad | "Əməkdaşların şəxsi işləri" |
| Təsvir | |
Məlumat sahibi (data_owner) | HR şöbə müdiri |
| Custodian | İT şöbəsi |
| Təsnifat səviyyəsi | Məxfi |
| Həssas məlumat tipləri (M11) | FİN, ad-soyad, ünvan, telefon, bank hesabı, sağlamlıq |
| Şəxsi məlumat? | Bəli |
| Hüquqi əsas | Əmək Məcəlləsi, Fərdi məlumatlar haqqında qanun |
| Saxlanma yeri (aktivlər) | HR sistemi (AST-00123), fayl serveri (AST-00045), arxiv (fiziki) |
| Həcm (təxmini) | ~8 000 qeyd |
| Kim istifadə edir | HR şöbəsi (tam), mühasibatlıq (qismən), rəhbərlik (aqreqat) |
| Hansı sistemlər arasında ötürülür | HR sistemi → Maaş sistemi → Bank (fayl); HR → DÖST/dövlət portalı |
| Ötürmə üsulu və qorunması | Şifrələnmiş fayl, VPN, SFTP |
| Xarici alıcılar | Bank (VND-0012), Dövlət Sosial Müdafiə Fondu |
| Təchizatçı girişi | VND-0007 (HR sistemi dəstəyi) — DPA var |
| Sərhədlərarası ötürmə | Xeyr |
| Saxlanma müddəti | İşdən çıxandan sonra 75 il (arxiv) / aktiv sistemdə 5 il |
| Məhv qaydası | Kriptoqrafik silmə + akt |
| Əlaqəli risklər | RSK-2026-0021 |
| Əlaqəli nəzarət tədbirləri | CTL-0034, CTL-0056 |
| Baxış tarixi | İllik |
Axın xəritəsi (Data Flow): data_flow (id, dataset_id, source_asset_id, destination_asset_id, direction, transfer_method, protection, frequency, volume, is_external, is_cross_border, legal_basis, approved_by, approved_at)
Vizualizasiya: yönlü qraf (sistem → sistem), kənarlar təsnifat rənginə görə; xarici ötürmələr qalın/fərqli naxışla; sərhədlərarası ötürmələr xüsusi ikonla. Bu xəritə həm GDPR/fərdi məlumat uyğunluğu üçün, həm də DLP qaydalarının layihələndirilməsi üçün əsasdır.
4.10.7 Məlumat obyektləri
ClassificationScheme, ClassificationLevel, ClassificationPolicy (səviyyə üzrə qaydalar), ClassificationAssignment (polimorf: obyekt → səviyyə), ClassificationHistory, ClassificationRequest (endirmə sorğusu), DataSet, DataFlow, DataOwnerAttestation, LabelTemplate
4.10.8 İş axını
Təsnifat sxemi: Draft → Review → Approved → Active → Superseded
Endirmə sorğusu: Requested → Data Owner Review → Security Review (səviyyəyə görə) → Approved/Rejected → Applied
Yenidən baxış: Scheduled → Owner Review → Confirmed | Changed
Məlumat toplusu: Draft → Owner Review → Approved → Active → Under Review → Archived4.10.9 Səlahiyyətlər
| Əməliyyat | employee | data_owner | classification_admin (platform_admin) | compliance_officer | dlp_admin |
|---|---|---|---|---|---|
| Taksonomiyanı görmək | ✅ | ✅ | ✅ | ✅ | ✅ |
| Səviyyə yaratmaq/dəyişmək | ❌ | ❌ | ⚠️ təsdiqlə | ✅ | ❌ |
| Öz obyektini təsnif etmək | ✅ | ✅ | ✅ | ✅ | ❌ |
| Təsnifatı yüksəltmək | ✅ | ✅ | ✅ | ✅ | ❌ |
| Təsnifatı endirmək | ❌ (sorğu) | ✅ (öz məlumatı) | ⚠️ | ✅ | ❌ |
| Toplu təsnifat | ❌ | ✅ (öz) | ✅ | ✅ | ❌ |
| Məlumat toplusu yaratmaq | ❌ | ✅ | ✅ | ✅ | ❌ |
| Axın xəritəsini redaktə | ❌ | ✅ | ✅ | ✅ | ❌ |
| Səviyyə siyasətini dəyişmək | ❌ | ❌ | ⚠️ | ✅ | Rəy |
4.10.10 Audit hadisələri
CLASSIFICATION_SCHEME_CREATED, CLASSIFICATION_LEVEL_CHANGED, CLASSIFICATION_POLICY_CHANGED, OBJECT_CLASSIFIED, CLASSIFICATION_UPGRADED, CLASSIFICATION_DOWNGRADE_REQUESTED, CLASSIFICATION_DOWNGRADE_APPROVED, CLASSIFICATION_DOWNGRADE_REJECTED, CLASSIFICATION_BULK_APPLIED, DATASET_CREATED, DATASET_OWNER_CHANGED, DATAFLOW_CREATED, DATAFLOW_APPROVED, LABEL_APPLIED_TO_FILE, LABEL_INTEGRITY_VIOLATION
4.10.11 API
GET /api/v1/classifications # sxem + səviyyələr
POST /api/v1/classifications/levels
PUT /api/v1/classifications/levels/{id}
GET /api/v1/classifications/levels/{id}/policy
PUT /api/v1/classifications/levels/{id}/policy
POST /api/v1/classifications/assign # {objectType, objectId, levelId, justification}
POST /api/v1/classifications/bulk-assign
POST /api/v1/classifications/downgrade-requests
POST /api/v1/classifications/downgrade-requests/{id}/approve
GET /api/v1/classifications/history?objectType=&objectId=
GET /api/v1/datasets?owner=&classification=&personalData=true
POST /api/v1/datasets
GET /api/v1/datasets/{id}
GET /api/v1/datasets/{id}/flows
POST /api/v1/datasets/{id}/flows
GET /api/v1/data-flows/graph?scope= # vizualizasiya üçün
POST /api/v1/datasets/{id}/attest
GET /api/v1/reports/data-classification?format=xlsx4.10.12 UI səhifələri
| Səhifə | Marşrut |
|---|---|
| Təsnifat sxemi | /classification — səviyyə kartları (rəng, ikon, qaydaların xülasəsi) |
| Səviyyə siyasəti redaktoru | /admin/classification/levels/{id} — tab-lar: Ümumi / Etiket / Giriş / Kanallar / Şifrələmə / Saxlama / DLP |
| Məlumat inventarı | /classification/datasets — cədvəl: ad, sahib, təsnifat, şəxsi məlumat?, saxlanma yeri, baxış tarixi |
| Məlumat toplusu detalı | /classification/datasets/{id} — Ümumi / Məlumat tipləri / Saxlanma / Axınlar / Hüquqi / Risklər |
| Axın xəritəsi | /classification/data-flows — interaktiv qraf + siyahı görünüşü (accessibility alternativi) |
| Endirmə sorğuları | /classification/downgrade-requests |
| Təsnifat tarixçəsi | obyekt detalında tab |
| Mənim məlumatlarım | /my/datasets — data owner üçün + attestasiya |
4.10.13 Metriklər
Təsnif edilmiş obyektlərin faizi (tip üzrə), səviyyələr üzrə paylanma, təsnifatı olmayan kritik aktivlər, endirmə sorğularının sayı və təsdiq faizi, baxış tarixi keçmiş təsnifatlar, sahibi olmayan məlumat toplusu, xarici axınların sayı, DPA-sız xarici axınlar.
4.10.14 Qəbul meyarları
- Təsnifat səviyyələrinin sayı, adı və qaydaları kod dəyişikliyi olmadan admin panelindən konfiqurasiya olunur.
- Təsnifatın endirilməsi əsaslandırma və təsdiq olmadan mümkün deyil (403).
- Hər təsnifat dəyişikliyi tam tarixçədə (köhnə/yeni səviyyə, kim, nə vaxt, niyə) saxlanılır.
- Platformadan ixrac edilən PDF/DOCX faylda təsnifat etiketi (başlıq/altbaşlıq) və metadata mövcuddur.
- Fayl metadatasındakı etiket HMAC ilə qorunur; dəyişdirilmə aşkarlandıqda hadisə yaranır.
- Təsnifat səviyyəsi yalnız rənglə deyil, ikon və mətnlə də göstərilir (WCAG testi).
- Məlumat toplusu sahibi və təsnifatı olmadan
Approvedola bilmir. - Axın xəritəsi qrafının mətn alternativi (cədvəl) mövcuddur.
4.11 M11 — Həssas Məlumatın Aşkarlanması (Sensitive Data Discovery)
4.11.1 Məqsəd
Həssas məlumat tiplərinin mərkəzi kataloqunu yaratmaq, aşkarlama qaydalarını (detection rules) müəyyən etmək və bu qaydaları həm platforma daxilində (sübut, sənəd yükləmələri), həm də xarici DLP konnektorları üçün vahid mənbə kimi təqdim etmək.
Skoup aydınlığı: ETİMAD detection rule authority-dir — qaydalar burada yaradılır, test edilir, versiyalanır. Faktiki skan endpoint/email/şəbəkə agent-ləri tərəfindən aparılır (A7). Platforma daxilində isə öz məzmununu (yüklənən sənədlər, sübutlar) özü skan edir.
4.11.2 Aşkarlama mexanizmləri
| Mexanizm | Təsvir | Nümunə | Yanlış pozitiv riski |
|---|---|---|---|
keyword | Açar söz(lər) | "məxfi", "xidməti istifadə üçün" | Yüksək |
dictionary | Lüğət (siyahı faylı) | Əməkdaş soyadları, layihə adları | Orta |
regex | Müntəzəm ifadə | FİN: \b[A-Z0-9]{7}\b | Yüksək (tək başına) |
checksum | Yoxlama rəqəmi | Luhn (bank kartı), IBAN mod-97 | Aşağı |
context | Yaxınlıqdakı sözlər | Regex + 50 simvol ərzində "kart", "hesab" | Aşağı |
proximity | İki patternin yaxınlığı | Ad + FİN eyni sətirdə | Aşağı |
exact_data_match (EDM) | Real məlumat bazasının hash-lənmiş indeksi | Əməkdaş FİN-lərinin SHA-256 indeksi | Çox aşağı |
document_fingerprint | Sənədin strukturunun barmaq izi | Müqavilə şablonu | Aşağı |
partial_document_match | Sənədin bir hissəsinin uyğunluğu (shingling/MinHash) | Kopyalanmış paraqraflar | Aşağı |
file_type | Faylın həqiqi tipi (magic bytes) | .docx adlı .exe | Çox aşağı |
metadata | Fayl metadatası | Author, Company, MIP label | Aşağı |
ocr | Şəkildən mətn (Tesseract, AZ+EN+RU dil paketləri) | Skan edilmiş pasport | Orta |
archive_inspection | Arxiv daxilinə baxış (ZIP, RAR, 7z, TAR) | — | |
compound | Bir neçə qaydanın məntiqi kombinasiyası | (EDM_FIN AND keyword_hr) OR fingerprint_contract | Ən aşağı |
4.11.3 Confidence scoring
Match confidence (0–100) =
base_confidence(mexanizm) # regex 40, checksum 70, EDM 95, fingerprint 85 ...
+ context_bonus # kontekst sözü tapıldı: +20
+ proximity_bonus # yaxınlıq şərti ödəndi: +15
+ occurrence_bonus # min occurrence aşıldı: +10 (loqarifmik)
− exclusion_penalty # istisna pattern tapıldı: −40
− location_penalty # istisna edilmiş yol: −100 (yəni ləğv)
Hədlər: ≥85 "Yüksək", 60–84 "Orta", 40–59 "Aşağı", <40 hadisə yaradılmır (yalnız log)4.11.4 Həssas məlumat tipləri kitabxanası (AZ kontekstində)
| Kod | Ad | Mexanizm | Qeyd |
|---|---|---|---|
AZ_FIN | Fərdi identifikasiya nömrəsi (FİN) | regex + context + EDM | 7 simvol, hərf+rəqəm; kontekst: "FİN", "şəxsiyyət vəsiqəsi" |
AZ_ID_CARD | Şəxsiyyət vəsiqəsinin seriya/nömrəsi | regex + context | AZE seriyası |
AZ_PASSPORT | Pasport nömrəsi | regex + context | |
AZ_TAXPAYER_ID | VÖEN | regex + checksum | 10 rəqəm |
AZ_SSN | Sosial sığorta nömrəsi | regex + context | |
AZ_PHONE | Telefon nömrəsi | regex | +994 formatları |
AZ_IBAN | IBAN | regex + mod-97 checksum | AZ21... |
BANK_CARD | Ödəniş kartı nömrəsi | regex + Luhn + context | PCI DSS |
BANK_ACCOUNT | Bank hesabı | regex + context | |
EMAIL | Elektron poçt | regex | Aşağı həssaslıq, digərləri ilə kombinasiyada |
ADDRESS_AZ | Ünvan | dictionary (rayon/küçə) + context | |
FULL_NAME_AZ | Ad Soyad Ata adı | dictionary (ad/soyad lüğəti) + proximity | EDM tövsiyə olunur |
HEALTH_DATA | Sağlamlıq məlumatı | keyword + dictionary | Diaqnoz, xəstəlik vərəqəsi |
SALARY_DATA | Əmək haqqı məlumatı | keyword + proximity + regex(məbləğ) | |
EMPLOYEE_RECORD | Əməkdaş şəxsi işi | compound (FULL_NAME + FIN + SALARY) | |
CONTRACT_DOC | Müqavilə | document_fingerprint | |
GOV_DOC_ID | Dövlət sənədinin qeydiyyat nömrəsi | regex (qurum formatı) | Qurum tərəfindən konfiqurasiya olunur |
CLASSIFIED_KEYWORD | Məxfilik qrifli açar sözlər | keyword + dictionary | "MƏXFİ", "XİDMƏTİ İSTİFADƏ ÜÇÜN" |
SOURCE_CODE | Mənbə kodu | regex + file_type | |
CREDENTIALS | Parol/açar/token | regex (yüksək dəqiqlikli: AWS key, private key PEM, JWT) + entropy | Secret scanning |
DB_DUMP | Verilənlər bazası ixracı | file_type + keyword (INSERT INTO, CREATE TABLE) | |
CUSTOM_* | Qurumun öz identifikatorları | konfiqurasiya | Layihə kodları, daxili nömrələmə |
4.11.5 Yanlış pozitivlərin azaldılması
| Mexanizm | Konfiqurasiya |
|---|---|
| Minimum occurrence | "Ən azı 5 FİN tapılmalıdır" — tək təsadüf hadisə yaratmır |
| Kontekst sözləri (ehtiyac) | require_context: ["FİN", "şəxsiyyət", "vəsiqə"], pəncərə 50 simvol |
| İstisna pattern-ləri | Test məlumatları: 1234567, 0000000, "TEST", "NÜMUNƏ" |
| Fayl yolu istisnaları | \\fileserver\public\templates\*, /var/log/* |
| Fayl tipi istisnaları | .dll, .exe, .iso (məzmun skan edilmir) |
| Etibarlı destinasiyalar | Daxili domenlər, təsdiqlənmiş partnyor domenləri |
| Etibarlı tətbiqlər | Təsdiqlənmiş biznes tətbiqləri |
| Təsdiqlənmiş AD qrupları | HR şöbəsi HR məlumatı ilə işləyir — hadisə yaradılmır, yalnız loglanır |
| Məlumat sahibi istisnası | data_owner öz məlumatı ilə işləyir |
| İş saatları konteksti | İş saatı xaricində eyni əməliyyat daha yüksək confidence |
| Öyrənmə rejimi | Yeni qayda 14 gün yalnız monitor rejimində işləyir, statistika toplanır |
4.11.6 Qayda test mühərriki (kritik funksiya)
- Sandbox test: qayda yaradarkən nümunə mətn yapışdırılır → dərhal nəticə (uyğunluq var/yox, confidence, hansı hissə uyğun gəldi — vurğulanmış)
- Retrospektiv test: qayda mövcud sübut/sənəd korpusu üzərində işlədilir → neçə nəticə, neçə ehtimal yanlış pozitiv
- A/B müqayisə: iki qayda versiyasının eyni korpusda nəticələri
- Regression test seti: hər qayda üçün "bu mətn uyğun gəlməlidir" / "bu mətn uyğun gəlməməlidir" nümunələri saxlanılır; qayda dəyişdikdə avtomatik yoxlanılır
4.11.7 EDM (Exact Data Match) dizaynı
1. Mənbə: HR sistemindən CSV ixracı (FİN, ad, soyad, telefon)
2. İndeksləmə (offline, izolyasiya olunmuş prosesdə):
- Hər sahə normallaşdırılır (böyük hərf, boşluqlar silinir)
- salt + SHA-256 → yalnız hash saxlanılır
- Orijinal CSV indeksləmədən dərhal sonra təhlükəsiz silinir
3. Saxlama: hash indeksi şifrələnmiş, yalnız detection engine oxuya bilir
4. Uyğunluq: skan edilən mətndən çıxarılan namizəd dəyərlər eyni qayda ilə hash-lənir və indekslə müqayisə olunur
5. Heç bir real dəyər loglanmır və ya hadisədə göstərilmir — yalnız "EDM uyğunluğu: HR_EMPLOYEES indeksi, 12 uyğunluq"4.11.8 Məlumat obyektləri
SensitiveDataType, DetectionRule, DetectionPattern, Dictionary, DictionaryEntry, EdmIndex, EdmIndexEntry (hash), DocumentFingerprint, ExclusionRule, DetectionRuleTest, DetectionRuleVersion, ScanJob, ScanResult
4.11.9 Səlahiyyətlər
| Əməliyyat | dlp_admin | dlp_analyst | data_owner | compliance_officer | platform_admin |
|---|---|---|---|---|---|
| Məlumat tipi yaratmaq | ✅ | ❌ | ⚠️ təklif | ✅ | ❌ |
| Qayda yazmaq/test etmək | ✅ | ⚠️ test | ❌ | ❌ | ❌ |
| Lüğət yükləmək | ✅ | ❌ | ✅ (öz sahəsi) | ❌ | ❌ |
| EDM indeksi yaratmaq | ⚠️ + data_owner təsdiqi | ❌ | ✅ (mənbə təqdimi) | ❌ | ❌ |
| EDM mənbə faylını görmək | ❌ | ❌ | ❌ | ❌ | ❌ (heç kim — silinir) |
| İstisna əlavə etmək | ✅ | ⚠️ təklif | ⚠️ təklif | ✅ | ❌ |
| Skan nəticələrini görmək | ✅ | ✅ (maskalanmış) | ✅ (öz məlumatı) | ✅ (aqreqat) | ❌ |
4.11.10 Audit hadisələri
SDT_CREATED, SDT_UPDATED, DETECTION_RULE_CREATED, DETECTION_RULE_UPDATED, DETECTION_RULE_TESTED, DETECTION_RULE_PUBLISHED, DICTIONARY_UPLOADED, EDM_INDEX_CREATED, EDM_INDEX_REBUILT, EDM_SOURCE_PURGED, EXCLUSION_RULE_CREATED, SCAN_JOB_STARTED, SCAN_JOB_COMPLETED, FINGERPRINT_CREATED
4.11.11 API
GET /api/v1/sensitive-data-types?category=&status=
POST /api/v1/sensitive-data-types
GET /api/v1/sensitive-data-types/{id}/rules
POST /api/v1/sensitive-data-types/{id}/rules
POST /api/v1/detection-rules/{id}/test # {sampleText} → matches, confidence
POST /api/v1/detection-rules/{id}/backtest # korpus üzərində
POST /api/v1/detection-rules/{id}/publish
GET /api/v1/detection-rules/{id}/versions
GET /api/v1/dictionaries
POST /api/v1/dictionaries # CSV upload
POST /api/v1/edm-indexes # data_owner təsdiqi tələb olunur
POST /api/v1/edm-indexes/{id}/rebuild
POST /api/v1/fingerprints # sənəd yüklə → barmaq izi
GET /api/v1/exclusion-rules
POST /api/v1/exclusion-rules
POST /api/v1/scan-jobs # daxili korpus skanı
GET /api/v1/scan-jobs/{id}/results
# Konnektorlar üçün (agent-lər qaydaları çəkir):
GET /api/v1/dlp/rule-bundle?version=&connectorId= # imzalanmış qayda paketi4.11.12 UI səhifələri
/dlp/data-types (kataloq: ad, kateqoriya, mexanizm, status, yanlış pozitiv nisbəti), /dlp/data-types/{id} (qaydalar + test paneli: sol mətn sahəsi, sağ nəticələr, vurğulanmış uyğunluqlar), /dlp/dictionaries, /dlp/edm-indexes (mənbə yükləmə sihirbazı + xəbərdarlıqlar), /dlp/exclusions, /dlp/rule-testing (sandbox).
4.11.13 Metriklər
Aktiv məlumat tipləri, qayda üzrə uyğunluq sayı, qayda üzrə yanlış pozitiv nisbəti (analitik işarələməsindən), confidence paylanması, öyrənmə rejimindəki qaydalar, EDM indekslərinin yaşı və ölçüsü, regression test keçmə faizi.
4.11.14 Qəbul meyarları
- Qayda
monitorrejimini keçmədənenforcerejiminə çıxa bilmir (minimum 14 gün, konfiqurasiya edilə bilər). - EDM mənbə faylı indeksləmədən sonra ≤ 1 dəqiqə ərzində təhlükəsiz silinir (yoxlanılır).
- EDM indeksində real dəyərlər saxlanılmır — yalnız salt+hash (kod review + DB inspeksiya).
- Qayda testi nümunə mətndə uyğunluğu vurğulayır və confidence hesablamasını izah edir.
- Regression test seti uğursuz olarsa qayda nəşr edilə bilmir.
- Bank kartı nümunə nömrələri (test kartları) istisna siyahısı sayəsində hadisə yaratmır.
- Skan nəticələrində tapılan həssas dəyər tam şəkildə göstərilmir (maskalanır:
AZE****789).
4.12 M12 — DLP Siyasətlərinin İdarəetməsi
4.12.1 Məqsəd
Məlumat sızmasının qarşısının alınması siyasətlərinin mərkəzi dizaynı, təsdiqi, versiyalaşdırılması, mərhələli tətbiqi və konnektorlara paylanması.
4.12.2 Qayda strukturu
DLP Rule:
ŞƏRT (hamısı VƏ ilə birləşir, hər biri opsional):
• Data Type ∈ {AZ_FIN, BANK_CARD, ...} (M11)
• Classification ∈ {CONFIDENTIAL, TOP_SECRET} (M10)
• User / AD Group ∈ {...} / ∉ {...}
• Department ∈ {...}
• Device ∈ {managed, unmanaged, specific}
• Channel ∈ {email, web_upload, usb, ...}
• Destination ∈ {external_domain, specific_domain, ip_range, app}
• Context : iş saatı / iş saatı xarici, məkan (VPN/ofis/uzaq),
həcm (>N fayl / >N MB / >N qeyd),
tezlik (son 1 saatda >N əməliyyat),
confidence ≥ N
⇒ ACTION (bir neçəsi birlikdə):
• allow | log | monitor | notify_user | warn_user
• require_justification | require_manager_approval | require_data_owner_approval
• encrypt | quarantine | block
• create_incident | escalate_to_soc | notify_security4.12.3 Kanallar və icra imkanları
| Kanal | İcra komponenti | ETİMAD rolu | Faza |
|---|---|---|---|
| Email (daxili/xarici) | Mail gateway / Exchange transport rule / MTA plugin | Qayda mənbəyi + hadisə qəbulu | 3 |
| Web upload (brauzer) | Secure web gateway / proxy (ICAP) | Qayda mənbəyi + hadisə | 3 |
| USB / çıxarıla bilən daşıyıcı | Endpoint agent | Qayda mənbəyi + hadisə | 3 |
| Clipboard | Endpoint agent | Qayda mənbəyi + hadisə | 3 |
| Çap (printing) | Print server / endpoint agent | Qayda mənbəyi + hadisə | 3 |
| Şəbəkə ötürməsi | NDLP / IDS | Hadisə qəbulu | 3 |
| Paylaşılan qovluq | File server audit / DLP scanner | Skan tapşırığı + hadisə | 3 |
| Tətbiq yükləməsi | CASB / proxy | Hadisə | 4 |
| Bulud saxlama | CASB | Hadisə | 4 |
| Ekran görüntüsü | Endpoint agent | Qayda mənbəyi | 4 |
| Endpoint fayl əməliyyatı | Endpoint agent | Qayda mənbəyi + hadisə | 3 |
| Platforma daxili (ETİMAD-dan ixrac/yükləmə) | ETİMAD özü | Tam icra ✅ | 1–3 |
Vacib: ETİMAD-ın öz daxilində DLP tam işləyir (ixracın bloklanması, təsnifata görə yükləmə məhdudiyyəti). Xarici kanallarda ETİMAD orkestratordur.
4.12.4 Konnektor arxitekturası (DLP Integration Gateway)
ETİMAD DLP Policy Store
│
├── (1) Qayda paketi (imzalanmış JSON, versiyalanmış)
│ GET /api/v1/dlp/rule-bundle
│ ▼
│ [Konnektor adapteri] ── tərcümə ──▶ Vendor formatı
│ • Exchange Transport Rule (PowerShell/Graph)
│ • Forcepoint / Symantec / Trellix DLP policy XML
│ • Squid/Proxy ICAP qaydaları
│ • Endpoint agent policy (vendor API)
│
└── (2) Hadisə qəbulu (webhook / syslog CEF / API push / file drop)
POST /api/v1/dlp/incidents/ingest
▼
Normalizasiya → dedupe → zənginləşdirmə (AD, təsnifat, aktiv)
▼
DLP Incident (M13)Normalizasiya sxemi (vendor-neutral):
{
"externalId": "FP-2026-88213",
"connectorId": "exchange-tr-01",
"detectedAt": "2026-09-14T10:22:31Z",
"user": { "upn": "elnur.m@qurum.gov.az", "sid": "S-1-5-21-..." },
"device": { "hostname": "WS-0432", "ip": "10.20.30.44" },
"channel": "email",
"destination": { "type": "external_email", "value": "***@gmail.com" },
"matchedPolicyRef": "DLP-014",
"matches": [ { "dataType": "AZ_FIN", "count": 23, "confidence": 92 } ],
"file": { "name": "siyahi.xlsx", "sha256": "...", "size": 18422, "type": "xlsx" },
"classification": "CONFIDENTIAL",
"actionTaken": "blocked",
"contentSample": null, // default null — məzmun ötürülmür
"contentRef": "vault://fp/88213" // yalnız istinad
}4.12.5 Siyasət həyat dövrü və rejimlər
Draft → Internal Review → Security Review → Approved
→ TEST MODE (yalnız simulyasiya, heç bir istifadəçi görmür, statistika)
→ MONITOR MODE (loglanır, hadisə yaranır, istifadəçi görmür)
→ WARN MODE (istifadəçi xəbərdarlıq görür, əməliyyat davam edir)
→ JUSTIFY MODE (istifadəçi səbəb yazmalıdır, sonra davam edir)
→ PILOT ENFORCE (yalnız pilot qrupda bloklanır)
→ FULL ENFORCE (tam bloklama)
→ Suspended | RetiredTəhlükəsiz rollout modeli (məcburi ardıcıllıq, atlanma təsdiq tələb edir):
| Addım | Müddət (min) | Çıxış meyarı |
|---|---|---|
| 1. Discovery | 2 həftə | Məlumat harada olduğu bilinir |
| 2. Test/Monitor | 2–4 həftə | Hadisə həcmi ölçülüb |
| 3. FP tuning | 1–2 həftə | Yanlış pozitiv nisbəti < 10% |
| 4. Warn | 2 həftə | İstifadəçi xəbərdarlığı işləyir, şikayət həcmi qəbul edilən |
| 5. Justify | 2 həftə | Səbəblərin 80%+-i legitimdir → istisna yaradılır |
| 6. Pilot enforce | 2 həftə | Pilot qrupda kritik biznes pozulması yoxdur |
| 7. Full enforce | — | Rəhbərlik təsdiqi |
4.12.6 Siyasət idarəetməsi funksiyaları
- Versiyalaşdırma və rollback (əvvəlki versiyaya bir kliklə qayıtma, audit ilə)
- Dəyişiklik tarixçəsi: nə dəyişdi (diff), kim, niyə
- Effektiv tarix / bitmə tarixi
- Qayda prioriteti və münaqişənin həlli:
- Qaydalar prioritet nömrəsinə görə sıralanır (kiçik = yüksək)
- İlk uyğun gələn qayda tətbiq olunur (
first-match) — default - Alternativ:
most-restrictive-wins(bütün uyğun qaydalar arasında ən ciddi action) - Münaqişə detektoru: yeni qayda əlavə edildikdə sistem mövcud qaydalarla kəsişməni hesablayır və xəbərdarlıq verir ("DLP-007 bu qaydanı kölgələyir")
- Skoup və pilot qrup: qayda yalnız müəyyən AD qrupu/şöbə üçün aktivləşdirilə bilər
- Fövqəladə söndürmə (Emergency Disable): bir kliklə bütün enforce qaydalarını
monitor-a keçirmək; dual control (2 nəfər) + avtomatik alarm + 24 saatdan sonra avtomatik bərpa sorğusu - Simulyasiya: "bu qayda son 30 gündə neçə hadisə yaradardı?" (tarixi hadisələr üzərində)
- İstisnalar (DLP Exception): istifadəçi/qrup/destinasiya/fayl üçün müddətli istisna; təsdiq iş axını; avtomatik bitmə; bax M03 istisna modeli ilə eyni pattern
4.12.7 Nümunə siyasətlər (default kitabxana)
| ID | Ad | Şərt | Action |
|---|---|---|---|
| DLP-001 | Məxfi məlumatın xarici emailə göndərilməsi | Classification ∈ {Məxfi, Xüsusi əhəmiyyətli} AND channel=email AND destination=external | Block + Incident + SOC bildirişi |
| DLP-002 | Şəxsi məlumatların USB-yə köçürülməsi | DataType ∈ {AZ_FIN, FULL_NAME_AZ} AND count ≥ 10 AND channel=usb | Block + Incident |
| DLP-003 | HR məlumatlarının şəxsi buluda yüklənməsi | DataType=EMPLOYEE_RECORD AND channel=web_upload AND destination ∈ {personal_cloud} | Block + Incident + Manager bildirişi |
| DLP-004 | Kütləvi fayl köçürülməsi | channel=usb AND volume > 500MB OR fileCount > 100 | Warn + Justification + Incident |
| DLP-005 | Kredensialların paylaşılması | DataType=CREDENTIALS AND channel ∈ {email, web_upload} | Block + Incident + Təcili SOC |
| DLP-006 | Məhdud sənədin çapı | Classification=Məhdud girişli AND channel=print | Allow + Log + su nişanı |
| DLP-007 | İş saatı xaricində kütləvi yükləmə | volume > 100MB AND context=after_hours AND destination=external | Warn + Incident (orta) |
| DLP-008 | Təsdiqlənmiş partnyora göndərmə | Classification=Məhdud AND destination ∈ trusted_partners | Allow + Log + Encrypt |
| DLP-009 | Verilənlər bazası ixracı | DataType=DB_DUMP AND channel ≠ approved_backup | Block + Incident (yüksək) |
| DLP-010 | Platformadan kütləvi ixrac | ETİMAD daxili: >1000 sətir ixrac | Require justification + Log |
4.12.8 Məlumat obyektləri
DLPPolicy, DLPPolicyVersion, DLPRule, DLPRuleCondition, DLPRuleAction, DLPChannel, DLPConnector, DLPConnectorMapping, DLPException, DLPPolicyDeployment, DLPSimulationRun, PilotGroup
4.12.9 Səlahiyyətlər
| Əməliyyat | dlp_admin | dlp_analyst | security_lead | data_owner | compliance_officer | platform_admin |
|---|---|---|---|---|---|---|
| Siyasət yaratmaq/redaktə | ✅ | ❌ | ✅ | ❌ | ⚠️ rəy | ❌ |
| Siyasəti təsdiqləmək | ❌ (SoD) | ❌ | ✅ | ⚠️ rəy | ✅ | ❌ |
| Rejimi dəyişmək (→enforce) | ⚠️ təsdiqlə | ❌ | ✅ | ❌ | ❌ | ❌ |
| Fövqəladə söndürmə | ✅ (dual) | ❌ | ✅ | ❌ | ❌ | ✅ (dual) |
| Simulyasiya işlətmək | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| İstisna yaratmaq | ✅ | ⚠️ təklif | ✅ | ✅ (öz məlumatı) | ❌ | ❌ |
| İstisnanı təsdiqləmək | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| Konnektor konfiqurasiyası | ⚠️ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Hadisə məzmununu görmək | ❌ | ⚠️ maskalanmış | ⚠️ səbəblə | ❌ | ❌ | ❌ |
P8 prinsipinin konkret tətbiqi: dlp_admin siyasət yaradır, lakin hadisələrin məzmununu görmür. Bu, "siyasəti özünə uyğunlaşdırıb məlumat oxumaq" hücum ssenarisini bağlayır.
4.12.10 Audit hadisələri
DLP_POLICY_CREATED, DLP_POLICY_UPDATED, DLP_POLICY_APPROVED, DLP_POLICY_MODE_CHANGED (köhnə→yeni rejim), DLP_POLICY_DEPLOYED, DLP_POLICY_ROLLED_BACK, DLP_POLICY_SUSPENDED, DLP_EMERGENCY_DISABLE, DLP_EMERGENCY_DISABLE_APPROVED, DLP_RULE_PRIORITY_CHANGED, DLP_EXCEPTION_CREATED, DLP_EXCEPTION_APPROVED, DLP_EXCEPTION_EXPIRED, DLP_CONNECTOR_CONFIGURED, DLP_RULE_BUNDLE_FETCHED, DLP_SIMULATION_RUN
4.12.11 API
GET /api/v1/dlp-policies?status=&mode=&channel=
POST /api/v1/dlp-policies
GET /api/v1/dlp-policies/{id}
PUT /api/v1/dlp-policies/{id}
GET /api/v1/dlp-policies/{id}/versions
POST /api/v1/dlp-policies/{id}/rollback/{versionId}
POST /api/v1/dlp-policies/{id}/submit-review
POST /api/v1/dlp-policies/{id}/approve
POST /api/v1/dlp-policies/{id}/mode # {mode, justification, pilotGroupId?}
POST /api/v1/dlp-policies/{id}/simulate?days=30
GET /api/v1/dlp-policies/{id}/conflicts
POST /api/v1/dlp-policies/emergency-disable # dual control
GET /api/v1/dlp-exceptions
POST /api/v1/dlp-exceptions
POST /api/v1/dlp-exceptions/{id}/approve
GET /api/v1/dlp-connectors
POST /api/v1/dlp-connectors
POST /api/v1/dlp-connectors/{id}/test
GET /api/v1/dlp/rule-bundle?connectorId=&since= # imzalanmış4.12.12 UI səhifələri
| Səhifə | Marşrut | Qeyd |
|---|---|---|
| DLP siyasətləri | /dlp/policies | Cədvəl: ad, rejim (çip: TEST/MONITOR/WARN/ENFORCE), kanal, hadisə sayı (30g), prioritet |
| Qayda qurucusu | /dlp/policies/{id}/rules | Vizual şərt qurucusu (blok-blok), sağda canlı önizləmə: "Bu qayda hazırda N istifadəçiyə şamil olur" |
| Rejim keçidi | Modal | Addımlı: cari rejim → hədəf rejim, tələb olunan meyarlar checklist-i, əsaslandırma |
| Simulyasiya | /dlp/policies/{id}/simulate | "Son 30 gündə: 47 hadisə yaradardı, 12-si bloklanardı, ən çox: Maliyyə şöbəsi" |
| Münaqişələr | /dlp/policies/conflicts | |
| İstisnalar | /dlp/exceptions | Bitmə tarixi ilə |
| Konnektorlar | /admin/dlp/connectors | Status, son sinxronizasiya, hadisə sayı, test düyməsi |
| Fövqəladə söndürmə | /dlp/emergency | Qırmızı, iki nəfərin təsdiqi, səbəb məcburi |
4.12.13 Metriklər
Siyasət sayı rejim üzrə, enforce rejiminə keçmə müddəti (orta), yanlış pozitiv nisbəti siyasət üzrə, xəbərdarlıqdan sonra davam etmə faizi (override rate), istisnaların sayı və müddəti, konnektor sağlamlığı (son hadisə vaxtı), qayda münaqişələrinin sayı.
4.12.14 Qəbul meyarları
- Yeni siyasət yalnız
Testrejimində yaradıla bilər; birbaşaEnforcemümkün deyil (400). - Rejim keçidi ardıcıllığı pozulduqda əlavə təsdiq tələb olunur və audit qeydi yaranır.
dlp_adminhadisə məzmununa API ilə də çata bilmir (403).- Fövqəladə söndürmə iki fərqli istifadəçinin təsdiqi olmadan işləmir.
- Qayda paketi rəqəmsal imza ilə imzalanır; konnektor imzanı yoxlamadan qəbul etmir.
- Yeni qayda mövcud qayda ilə münaqişə yaradırsa saxlanılmadan əvvəl xəbərdarlıq göstərilir.
- Simulyasiya real hadisə yaratmır və heç bir istifadəçiyə bildiriş göndərmir.
- İstisna müddəti bitdikdə avtomatik deaktiv olur və qayda yenidən tam qüvvəyə minir.
4.13 M13 — DLP Hadisələrinin İdarəetməsi
4.13.1 Məqsəd
DLP aşkarlamalarının vahid triage, istintaq və bağlanma prosesi; məlumat minimallaşdırılması prinsipi ilə.
4.13.2 Hadisə sahələri
| Qrup | Sahələr |
|---|---|
| İdentifikasiya | incident_id (DLP-YYYY-NNNNN), external_id, connector_id, detected_at, ingested_at |
| Subyekt | user_id, user_upn, ad_groups[], department_id, manager_id, device_hostname, device_ip (maskalanmış), is_managed_device |
| Kontekst | channel, destination_type, destination_value (maskalanmış), application, occurred_in_business_hours, location |
| Aşkarlama | matched_policy_id, matched_rule_id, matched_data_types[] (tip + say + confidence), classification_level, overall_confidence |
| Obyekt | file_name, file_hash, file_size, file_type, content_ref (xarici istinad), content_sample_encrypted (opsional, şifrələnmiş, ayrıca icazə) |
| Qiymətləndirmə | severity (auto + manual), risk_score, is_false_positive, fp_reason |
| Cavab | action_taken, user_justification, manager_response, manager_decision |
| İstintaq | assigned_analyst_id, investigation_notes[], evidence[], related_incidents[], related_risk_id, related_asset_id, related_security_incident_id |
| Bağlanma | status, closure_reason, closed_by, closed_at, lessons_learned, follow_up_actions[] |
| SLA | triage_due_at, resolve_due_at, triaged_at, resolved_at |
4.13.3 Severity avtomatik hesablanması
base = classification_weight (PUBLIC 0, INTERNAL 10, RESTRICTED 30, CONFIDENTIAL 60, TOP_SECRET 90)
+ destination_weight (internal 0, trusted_external 10, external 25, personal_cloud 35, unknown 30)
+ volume_weight (log10(count) × 10, maks 30)
+ confidence_adjustment (confidence/100 çarpanı)
+ repeat_factor (eyni istifadəçi son 30 gündə N hadisə: +5×N, maks +25)
+ privileged_user_factor (+15 əgər imtiyazlı istifadəçidir)
− action_mitigation (bloklandı: −20; xəbərdarlıq: −5; icazə verildi: 0)
Severity: ≥90 Kritik | 60–89 Yüksək | 30–59 Orta | <30 AşağıAnalitik severity-ni əl ilə dəyişə bilər (əsaslandırma ilə, audit olunur).
4.13.4 🔒 Məlumat minimallaşdırılması (normativ — P13)
| Səviyyə | Kim görür | Nə görür |
|---|---|---|
| L0 — Metadata | dlp_analyst, security_lead | Kim, nə vaxt, hansı kanal, hansı siyasət, neçə uyğunluq, fayl adı, hash, ölçü, tip |
| L1 — Maskalanmış nümunə | dlp_analyst | Uyğunluqların maskalanmış forması: AZE****789, **** **** **** 1234, kontekst ±20 simvol, həssas hissə maskalanmış |
| L2 — Tam məzmun | security_lead + dlp_content_viewer icazəsi | Tam fayl/mətn. Tələblər: səbəb məcburi (min 50 simvol), dual approval (2-ci şəxs təsdiqi), müddətli giriş (30 dəq), tam audit, data owner-ə bildiriş |
| L3 — Hüquqi/istintaq | Xüsusi təyinat | Rəsmi istintaq qərarı ilə; ayrıca "Legal Hold" rejimi |
Maskalama qaydaları: hər SensitiveDataType üçün maska şablonu (AZ_FIN: ilk 3 + ****; BANK_CARD: son 4; EMAIL: ilk hərf + ***@domain; FULL_NAME_AZ: ad + soyadın ilk hərfi).
Fayl adının özü həssas ola bilər (Maaş_cədvəli_2026_MƏXFİ.xlsx) — buna görə fayl adı da təsnifat səviyyəsinə görə qismən maskalana bilər (konfiqurasiya).
4.13.5 İş axını
New
→ Triage (analitik baxır; SLA: kritik 1s, yüksək 4s, orta 24s, aşağı 72s)
├─ False Positive → Closed (FP) → qayda tuning tapşırığı
├─ Duplicate → Closed (merged)
└─ Confirmed
→ Investigating
├─ User Response Required (istifadəçidən izahat)
├─ Manager Response Required (müdirdən təsdiq/rəy)
→ Contained (əməliyyat bloklandı / fayl geri alındı / giriş kəsildi)
→ Resolved (kök səbəb aradan qaldırıldı)
→ Closed
├─ (eskalasiya) → Security Incident (M15) / Risk (M05) / HR prosesiEskalasiya qaydaları: Kritik severity → dərhal SOC + CISO; təsdiqlənmiş qəsdli sızma → M15 təhlükəsizlik hadisəsi + hüquqi; imtiyazlı istifadəçi + məxfi məlumat → dərhal CISO; SLA keçdi → avtomatik eskalasiya.
4.13.6 İstifadəçi və müdir cavabı (User/Manager Response)
- İstifadəçiyə bildiriş: "Sizin [tarix] tarixli [kanal] əməliyyatınız təhlükəsizlik siyasətinə uyğun olmaya bilər. Zəhmət olmasa izah edin." — ittiham edən ton yoxdur
- İstifadəçi: səbəb seçir (iş tələbi / səhvən / bilmirdim / başqa) + mətn izahat
- Müdirə: "Əməkdaşınızın əməliyyatı üçün iş zərurəti təsdiq edilirmi?" → Bəli/Xeyr + qeyd
- Cavab 3 iş günü ərzində gəlmədikdə eskalasiya
- Nəticə: legitim → istisna təklifi (M12); qeyri-legitim → təlim təyinatı (M01) + HRS təsiri (M02)
4.13.7 Dashboard metrikləri
| Metrik | Qeyd |
|---|---|
| Ümumi hadisələr (dövr üzrə) | |
| Bloklanmış cəhdlər | Uğurla qarşısı alınan |
| Xəbərdarlıq override faizi | İstifadəçi davam etdi / xəbərdarlıq göstərildi |
| Şöbə üzrə hadisələr | Normallaşdırılmış (işçi sayına görə) |
| Kanal üzrə hadisələr | |
| Məlumat tipi üzrə hadisələr | |
| Təsnifat səviyyəsi üzrə hadisələr | |
| Ən çox işə düşən siyasətlər | Top 10 |
| Yanlış pozitiv nisbəti | FP / ümumi — siyasət üzrə |
| Təkrar hadisələr | Eyni istifadəçi/eyni siyasət |
| Orta triage müddəti (MTTT) | |
| Orta həll müddəti (MTTR) | |
| Məlumat sızması trendi | Aylıq, severity ilə çəkili |
| SLA-ya riayət faizi | |
| Açıq hadisələrin yaşı |
4.13.8 Səlahiyyətlər
| Əməliyyat | dlp_analyst | security_lead | dept_manager | employee | dlp_admin | platform_admin |
|---|---|---|---|---|---|---|
| Hadisə siyahısını görmək | ✅ | ✅ | Öz alt ağacı (metadata) | Öz hadisələri | ❌ | ❌ |
| L0 metadata | ✅ | ✅ | ✅ (öz) | ✅ (öz) | ❌ | ❌ |
| L1 maskalanmış nümunə | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| L2 tam məzmun | ❌ | ⚠️ dual + səbəb | ❌ | ❌ | ❌ | ❌ |
| Triage etmək | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| FP işarələmək | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Severity dəyişmək | ✅ (əsaslandırma) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Eskalasiya | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Bağlamaq | ✅ (aşağı/orta) | ✅ (hamısı) | ❌ | ❌ | ❌ | ❌ |
| İzahat vermək | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
| İxrac etmək | ⚠️ maskalanmış | ⚠️ səbəblə | ❌ | ❌ | ❌ | ❌ |
4.13.9 Audit hadisələri
DLP_INCIDENT_INGESTED, DLP_INCIDENT_VIEWED, DLP_INCIDENT_CONTENT_L1_VIEWED, DLP_INCIDENT_CONTENT_L2_REQUESTED, DLP_INCIDENT_CONTENT_L2_APPROVED, DLP_INCIDENT_CONTENT_L2_VIEWED, DLP_INCIDENT_ASSIGNED, DLP_INCIDENT_TRIAGED, DLP_INCIDENT_SEVERITY_CHANGED, DLP_INCIDENT_MARKED_FP, DLP_INCIDENT_ESCALATED, DLP_INCIDENT_RESOLVED, DLP_INCIDENT_CLOSED, DLP_INCIDENT_EXPORTED, DLP_USER_RESPONSE_SUBMITTED, DLP_MANAGER_RESPONSE_SUBMITTED
4.13.10 API
POST /api/v1/dlp/incidents/ingest # konnektorlar (mTLS + API key)
GET /api/v1/dlp-incidents?severity=&status=&channel=&department=&from=&to=
GET /api/v1/dlp-incidents/{id} # L0
GET /api/v1/dlp-incidents/{id}/matches # L1 (maskalanmış)
POST /api/v1/dlp-incidents/{id}/content-access-request # L2: {justification}
POST /api/v1/dlp-incidents/{id}/content-access-request/{rid}/approve
GET /api/v1/dlp-incidents/{id}/content # L2, müddətli token
POST /api/v1/dlp-incidents/{id}/assign
POST /api/v1/dlp-incidents/{id}/triage # {classification: confirmed|fp|duplicate}
POST /api/v1/dlp-incidents/{id}/notes
POST /api/v1/dlp-incidents/{id}/severity # {severity, justification}
POST /api/v1/dlp-incidents/{id}/request-user-response
POST /api/v1/dlp-incidents/{id}/user-response
POST /api/v1/dlp-incidents/{id}/manager-response
POST /api/v1/dlp-incidents/{id}/escalate # → M15 / M05
POST /api/v1/dlp-incidents/{id}/resolve
POST /api/v1/dlp-incidents/{id}/close
POST /api/v1/dlp-incidents/bulk-triage
GET /api/v1/dlp-incidents/statistics?groupBy=department|channel|dataType|policy
GET /api/v1/my/dlp-incidents # istifadəçi öz hadisələri4.13.11 UI səhifələri
| Səhifə | Marşrut | Təsvir |
|---|---|---|
| Hadisə növbəsi | /dlp/incidents | Cədvəl: severity çipi (rəng+mətn+ikon), istifadəçi, kanal, siyasət, tarix, SLA sayğacı. Sürətli filtrlər: "Mənə təyin edilmiş", "SLA riski", "Yeni" |
| Hadisə detalı | /dlp/incidents/{id} | Sol: metadata; orta: uyğunluqlar (maskalanmış), fayl məlumatı; sağ: fəaliyyət paneli (triage, təyinat, qeyd). Yuxarıda: "Tam məzmuna giriş tələb et" düyməsi (sarı, izahlı) |
| Tam məzmun sorğusu | Modal | Səbəb (min 50 simvol), ikinci təsdiqçi seçimi, "Bu əməliyyat audit olunur və məlumat sahibinə bildiriləcək" xəbərdarlığı |
| Toplu triage | /dlp/incidents seçim rejimi | Eyni siyasətin çoxlu hadisəsini birlikdə FP işarələmək |
| DLP dashboard | /dlp/dashboard | 12 widget (§4.13.7) |
| Mənim hadisələrim | /my/dlp | İstifadəçi üçün: nə baş verdi, nə etməliyəm (izahat formu) |
| Şöbə görünüşü | /dlp/departments | Müdir üçün aqreqat + cavab gözləyənlər |
4.13.12 Qəbul meyarları
dlp_analystheç bir yolla (UI/API) tam məzmuna çata bilmir (403); yalnız maskalanmış nümunə.- L2 giriş sorğusu ikinci şəxsin təsdiqi olmadan icazə vermir; giriş 30 dəqiqədən sonra avtomatik bitir.
- Hər L2 baxışı audit logunda səbəb mətni ilə saxlanılır və məlumat sahibinə bildiriş gedir.
- Maskalanmış nümunədə heç bir tam FİN/kart nömrəsi görünmür (avtomatlaşdırılmış test: regex axtarışı 0 nəticə).
- Konnektordan gələn hadisə mTLS + API key olmadan qəbul edilmir (401).
- Eyni
external_idilə təkrar gələn hadisə dublikat kimi tanınır (idempotency). - SLA keçdikdə avtomatik eskalasiya işə düşür və bildiriş gedir.
- FP işarələnən hadisə qayda tuning backlog-una düşür və qaydanın FP nisbətini yeniləyir.
- İstifadəçiyə göndərilən bildirişdə ittiham edən dil yoxdur (mətn nəzərdən keçirilib, şablon təsdiqlənib).
- Hadisə ixracında məzmun deyil, yalnız metadata + maskalanmış uyğunluqlar var.
4.14 M14 — Active Directory və IAM
4.14.1 Məqsəd
Qurumun mövcud kataloq xidmətini platformanın yeganə həqiqət mənbəyi etmək; autentifikasiya, avtorizasiya konteksti, təşkilati struktur və hədəfləmə üçün etibarlı məlumat təmin etmək.
4.14.2 Autentifikasiya axınları
| Metod | Protokol | İstifadə | Faza |
|---|---|---|---|
| SSO (əsas) | OIDC / SAML 2.0 (Keycloak → AD federasiyası və ya ADFS) | Bütün istifadəçilər | 1 |
| Kerberos SPNEGO | Windows İnteqrasiyalı Autentifikasiya | Domenə qoşulmuş kompüterlərdən şəffaf giriş | 2 |
| LDAP bind (fallback) | LDAPS | SSO əlçatmaz olduqda, konfiqurasiya ilə aktivləşdirilir | 1 |
| Lokal hesab | Daxili (Argon2id) | Yalnız: break-glass admin, xarici auditor, təchizatçı portalı | 1 |
| MFA | TOTP (RFC 6238), FIDO2/WebAuthn | İmtiyazlı rollar üçün məcburi | 1 (TOTP) / 2 (FIDO2) |
| Service account | mTLS + API key / OAuth2 client credentials | Konnektorlar, inteqrasiyalar | 1 |
Autentifikasiya axını (OIDC):
Brauzer → ETİMAD Web → (redirect) → Keycloak → (federation) → AD/LDAPS
↓
MFA (rol tələb edirsə)
↓
← id_token + access_token (JWT, qısa müddətli) ←
ETİMAD API ← Bearer token → token validasiyası (imza, exp, aud, iss)
→ lokal `user` qeydinin tapılması (SID/objectGUID ilə)
→ rol və skoup hesablanması (AD qrupları + lokal təyinatlar)
→ sessiya kontekstiToken siyasəti: access token 15 dəq, refresh token 8 saat (sliding, maks 12 saat), sessiya idle timeout 30 dəq, mütləq timeout 12 saat. İmtiyazlı rollar üçün: access 5 dəq, idle 15 dəq, step-up autentifikasiya (həssas əməliyyatlar üçün yenidən MFA).
4.14.3 Sinxronizasiya
| Parametr | Dəyər |
|---|---|
| İstiqamət | AD → ETİMAD (yalnız oxuma) — default və tövsiyə olunan |
| Protokol | LDAPS (636) və ya LDAP + StartTLS; açıq LDAP (389) qadağandır |
| Servis hesabı | Yalnız oxuma icazəsi, konkret OU-lara məhdud, parol Vault-da, illik rotasiya, Protected Users qrupunda deyil (LDAP bind üçün), ayrıca ad: svc_etimad_ldap |
| Tam sinxronizasiya | Gecə 02:00 (konfiqurasiya) |
| Artımlı (incremental) | Hər 15 dəqiqə — uSNChanged və ya whenChanged filtri ilə |
| Əl ilə | Administrator düyməsi + konkret istifadəçi üçün "indi yenilə" |
| Batch ölçüsü | 500, paging (LDAP PagedResultsControl) |
| Timeout / retry | 30 s, 3 cəhd, eksponensial gözləmə |
Atribut mapping (konfiqurasiya edilə bilən):
| AD atributu | ETİMAD sahəsi | Qeyd |
|---|---|---|
objectGUID | external_id | Dəyişməz açar — sAMAccountName deyil! |
objectSid | external_sid | |
userPrincipalName | upn | Login identifikatoru |
sAMAccountName | username | Dəyişə bilər |
displayName | display_name | |
givenName, sn | first_name, last_name | |
mail | email | Boşdursa istifadəçi deaktiv sayılır (bildiriş göndərilə bilmir) |
department | department → Department cədvəlinə map | |
title | job_title | |
manager (DN) | manager_user_id | DN → objectGUID həlli |
telephoneNumber, mobile | phone | |
physicalDeliveryOfficeName | office | |
company | organization | Regional qurumlar üçün |
employeeID, employeeType | employee_id, employee_type | |
userAccountControl | is_enabled (bit 2 = ACCOUNTDISABLE) | |
accountExpires | expires_at | |
memberOf | groups[] | Nested qruplar açılır (LDAP_MATCHING_RULE_IN_CHAIN) |
distinguishedName | ou_path | OU ierarxiyası |
preferredLanguage | locale | Yoxdursa default az |
thumbnailPhoto | avatar (opsional) | Ölçü limiti |
Xüsusi hallar:
| Hal | Davranış |
|---|---|
| AD-də deaktiv edildi | ETİMAD-da is_enabled=false, aktiv sessiyalar ≤ 5 dəq ərzində ləğv edilir, təyinatlar saxlanılır (audit üçün), giriş bloklanır |
| AD-də silindi | is_deleted=true, soft delete; tarixi qeydlər (təlim, tanışlıq, hadisə) qalır; şəxsi məlumatlar retention siyasətinə görə N ildən sonra anonimləşdirilir |
| AD-yə qaytarıldı | Eyni objectGUID → köhnə qeyd bərpa olunur, tarixçə saxlanılır |
| Departament dəyişdi | Rol/skoup yenidən hesablanır; yeni departamentin məcburi təlim/siyasətləri təyin olunur; köhnə təyinatlar saxlanılır |
| Rəhbər dəyişdi | Eskalasiya zənciri yenilənir; açıq təsdiq sorğuları yeni rəhbərə yönləndirilir (bildirişlə) |
| Qrupa əlavə olundu | Rol mapping yenidən hesablanır; yeni təlim/siyasət təyinatı işə düşür |
| Qrupdan çıxarıldı | Əlaqəli rol dərhal ləğv olunur; aktiv sessiya yenilənir |
| Xidməti hesab | servicePrincipalName var və ya konfiqurasiya olunmuş OU/qrupda → istisna edilir: platformaya giriş yox, fişinq hədəfi yox, təlim təyinatı yox |
| İmtiyazlı qrup üzvü | Domain Admins, Enterprise Admins, konfiqurasiya olunmuş qruplar → is_privileged=true, MFA məcburi, əlavə təlim, HRS-də əlavə çəki |
| Dublikat email | Xəbərdarlıq, sinxronizasiya hesabatında qeyd, əl ilə həll |
| Manager dövrü (loop) | Aşkarlanır, xəbərdarlıq, eskalasiya zənciri kəsilir |
Sinxronizasiya hesabatı: hər işdən sonra — yeni, yenilənmiş, deaktiv, silinmiş, xəta sayı; xətaların detalı; administratora bildiriş (xəta varsa).
4.14.4 AD → Rol mapping
role_mappings:
- ad_group: "CN=IT-Security,OU=Groups,DC=qurum,DC=gov,DC=az"
roles: [security_incident_analyst, dlp_analyst]
- ad_group: "CN=Internal-Audit,OU=Groups,..."
roles: [internal_auditor]
- ad_attribute: { title: "*müdir*" } # wildcard
roles: [department_manager]
- ad_attribute: { department: "Maliyyə" }
roles: [] # yalnız skoup, rol yox- Rol AD qrupundan gəlirsə platformada əl ilə silinə bilməz (yalnız AD-də) — istisna: müvəqqəti bloklama (əsaslandırma ilə)
- Lokal təyinatlar (AD-dən asılı olmayan) ayrıca işarələnir və dövri baxış tələb edir (6 ay)
- Rol attestasiyası: 6 ayda bir, hər rol sahibi üçün "bu istifadəçinin bu rolu hələ də lazımdırmı?" → müdir/rol sahibi təsdiqləyir
4.14.5 AD-yə yazma (Write-back) — məhdudlaşdırılmış
- Default: SÖNDÜRÜLÜB. Platforma AD-yə heç nə yazmır.
- Gələcək (Faza 4, opsional, ayrıca təsdiqlə): "yüksək riskli istifadəçini məhdudlaşdırıcı qrupa əlavə et" kimi ssenarilər — ayrıca servis hesabı, ayrıca təsdiq iş axını, tam audit, dərhal geri qaytarma imkanı.
- Yazma aktivləşdirilərsə: yalnız konkret, əvvəlcədən müəyyən edilmiş qruplara, yalnız
add/remove memberəməliyyatı, heç vaxtdelete uservə ya atribut dəyişikliyi.
4.14.6 Break-glass administrator
- 2 lokal hesab, parollar möhürlənmiş zərfdə seyfdə (fiziki), hər biri ayrı şəxsdə
- FIDO2 açarı + TOTP (ikisi də tələb olunur)
- Girişdə: dərhal SIEM alarm + SMS/email CISO-ya + dashboard-da görünən banner
- Hər 90 gündə parol rotasiyası və test (prosedur)
- Bütün əməliyyatları xüsusi
break_glass_sessionbayrağı ilə loglanır - İstifadədən sonra məcburi post-mortem sənədi
4.14.7 Məlumat obyektləri
Organization, OrganizationalUnit, Department, User, UserProfile, Group, GroupMembership, ADConnection, ADSyncJob, ADSyncLog, ADSyncError, AttributeMapping, RoleMapping, Session, MfaEnrollment, ServiceAccount, ApiKey, RoleAttestation
4.14.8 Səlahiyyətlər
Yalnız platform_admin: AD bağlantısı, mapping, sinxronizasiya. security_lead: rol təyinatlarını görmək, attestasiya. Heç kim: servis hesabının parolunu görmək (Vault-da, yalnız yazma).
4.14.9 Audit hadisələri
USER_LOGIN_SUCCESS, USER_LOGIN_FAILED, USER_LOGOUT, SESSION_EXPIRED, SESSION_REVOKED, MFA_ENROLLED, MFA_CHALLENGE_FAILED, MFA_BYPASS_USED, STEP_UP_AUTH_PERFORMED, AD_SYNC_STARTED, AD_SYNC_COMPLETED, AD_SYNC_FAILED, AD_USER_CREATED, AD_USER_UPDATED, AD_USER_DISABLED, AD_USER_DELETED, AD_GROUP_MEMBERSHIP_CHANGED, ROLE_ASSIGNED, ROLE_REVOKED, ROLE_ATTESTATION_COMPLETED, AD_CONNECTION_CONFIGURED, ROLE_MAPPING_CHANGED, BREAK_GLASS_LOGIN, SERVICE_ACCOUNT_CREATED, API_KEY_ISSUED, API_KEY_REVOKED
4.14.10 API
POST /api/v1/auth/login # lokal/fallback
POST /api/v1/auth/oidc/callback
POST /api/v1/auth/refresh
POST /api/v1/auth/logout
POST /api/v1/auth/mfa/enroll
POST /api/v1/auth/mfa/verify
POST /api/v1/auth/step-up
GET /api/v1/auth/me # profil + rollar + effektiv icazələr
GET /api/v1/auth/sessions # öz aktiv sessiyalarım
DELETE /api/v1/auth/sessions/{id}
GET /api/v1/users?department=&role=&enabled=&search=
GET /api/v1/users/{id}
GET /api/v1/users/{id}/roles
POST /api/v1/users/{id}/roles # SoD yoxlanır
DELETE /api/v1/users/{id}/roles/{roleId}
GET /api/v1/users/{id}/effective-permissions
GET /api/v1/groups
GET /api/v1/departments
GET /api/v1/organizational-units/tree
GET /api/v1/admin/ad/connections
POST /api/v1/admin/ad/connections
POST /api/v1/admin/ad/connections/{id}/test
POST /api/v1/admin/ad/sync # {mode: full|incremental, userId?}
GET /api/v1/admin/ad/sync-jobs
GET /api/v1/admin/ad/sync-jobs/{id}/log
GET /api/v1/admin/ad/attribute-mappings
PUT /api/v1/admin/ad/attribute-mappings
GET /api/v1/admin/role-mappings
POST /api/v1/admin/role-attestations/campaign4.14.11 UI səhifələri
/admin/integrations/ad (bağlantı, test, mapping, cədvəl), /admin/integrations/ad/sync-history (işlər, xətalar), /admin/users (siyahı, filtr, rol), /admin/users/{id} (profil, rollar, effektiv icazələr, sessiyalar, audit), /admin/roles (rol kataloqu, icazə matrisi), /admin/role-mappings, /admin/attestations (rol attestasiya kampaniyaları), /my/profile (öz məlumatı, MFA, sessiyalar, dil).
4.14.12 Qəbul meyarları
- Sinxronizasiya yalnız LDAPS və ya StartTLS ilə işləyir; açıq LDAP konfiqurasiyası rədd edilir.
- İstifadəçi identifikasiyası
objectGUIDilə aparılır;sAMAccountNamedəyişdikdə istifadəçi dublikat yaranmır. - AD-də deaktiv edilmiş istifadəçinin aktiv sessiyası ≤ 5 dəqiqə ərzində ləğv olunur.
- Xidməti hesablar heç bir fişinq kampaniyasına və təlim təyinatına düşmür.
- 10 000 istifadəçinin tam sinxronizasiyası ≤ 15 dəqiqə çəkir; artımlı sinxronizasiya ≤ 2 dəqiqə.
- Sinxronizasiya xətası platformanın işini dayandırmır; qismən nəticə tətbiq olunur, xətalar hesabatda.
- Servis hesabının parolu heç bir log, konfiqurasiya faylı və ya API cavabında görünmür (secret scanning testi).
- İmtiyazlı rollara MFA olmadan giriş mümkün deyil (403 + step-up tələbi).
- AD-yə yazma default söndürülüb; aktivləşdirmə konfiqurasiya + ayrıca təsdiq tələb edir.
- Break-glass girişi dərhal alarm yaradır və dashboard-da 24 saat görünən banner göstərir.
- Manager dövrü (A→B→A) aşkarlanır və sinxronizasiya xətası kimi hesabatda qeyd olunur.
4.15 M15 — Təhlükəsizlik Hadisələrinin Bildirilməsi
4.15.1 Məqsəd
İşçilərin təhlükəsizlik hadisələrini asan, sürətli və qorxmadan bildirməsini təmin etmək; hadisələrin idarə olunması və SOC prosesləri ilə inteqrasiyası (ISO 27001 A.6.8, A.5.24–A.5.28).
4.15.2 Hadisə kateqoriyaları
| Kateqoriya | Nümunə | Default severity | SLA (ilk cavab) |
|---|---|---|---|
| Şübhəli email | Fişinq, BEC, spam | Orta | 4 saat |
| Məlumat sızması | Səhv ünvana göndərmə, itirilmiş sənəd | Yüksək | 1 saat |
| İtirilmiş/oğurlanmış cihaz | Noutbuk, telefon, USB | Yüksək | 1 saat |
| İcazəsiz giriş | Başqasının hesabından istifadə, giriş cəhdi | Yüksək | 1 saat |
| Siyasət pozuntusu | Orta | 8 saat | |
| Zərərli proqram | Virus xəbərdarlığı, şübhəli davranış | Yüksək | 1 saat |
| Şübhəli istifadəçi davranışı | Orta | 8 saat | |
| Fiziki təhlükəsizlik | İcazəsiz şəxs, açıq qapı, itirilmiş vəsiqə | Orta | 4 saat |
| Sosial mühəndislik cəhdi | Telefon zəngi, şəxsən müraciət | Orta | 4 saat |
| Sistem nasazlığı (təhlükəsizlik aspekti) | Orta | 8 saat | |
| Digər | Aşağı | 24 saat |
4.15.3 Bildirmə forması (istifadəçi üçün — sadəlik prioritetdir)
┌──────────────────────────────────────────────────────┐
│ Təhlükəsizlik hadisəsini bildirin │
│ Bildirişiniz üçün təşəkkür edirik. Hadisəni │
│ bildirmək cəzalandırılmır — əksinə, dəyərlidir. │
│ │
│ Nə baş verdi? [böyük ikon seçimi — 9 kateqoriya] │
│ │
│ Qısa təsvir * [________________________________] │
│ Nə vaxt? [tarix/saat, default: indi] │
│ Harada? [ofis/uzaqdan/digər] │
│ Fayl/şəkil [drag-drop] │
│ Əlaqə ( ) Adımla bildirirəm │
│ ( ) Anonim bildirmək istəyirəm │
│ │
│ [ Bildir ] │
└──────────────────────────────────────────────────────┘- Maksimum 4 məcburi sahə. Texniki terminlərsiz.
- Şübhəli email üçün ayrıca sürətli yol: Outlook düyməsi (M02 ilə eyni infrastruktur) — bir kliklə.
- Anonim bildirmə: istifadəçi ID-si saxlanılmır,
is_anonymous=true, əlaqə üçün opsional birdəfəlik kod (istifadəçi saxlayır, statusu yoxlaya bilər)
4.15.4 Hadisə idarəetməsi
- Avtomatik severity təklifi (kateqoriya + açar sözlər + təsnifat)
- Təyinat: növbətçi analitik, kateqoriyaya görə komanda
- SLA: ilk cavab, containment, həll — kateqoriya və severity üzrə
- Eskalasiya: SLA pozulması → komanda rəhbəri → CISO
- Əlaqələndirmə: aktiv, risk, nəzarət tədbiri, DLP hadisəsi, digər hadisələr, tapıntı
- Timeline: bütün fəaliyyətlər xronoloji
- Bildiriş verənə status yeniləməsi (avtomatik) və təşəkkür
- Bağlanma: nəticə, kök səbəb, öyrənilən dərslər, düzəldici tədbir (M17)
- Post-incident review (yüksək/kritik üçün məcburi)
4.15.5 İş axını
Reported → Triage → Assigned → Investigating → Containment
→ Eradication → Recovery → Resolved → Post-Incident Review → Closed
└─ (dublikat/əsassız) → Closed (No Action)
└─ (eskalasiya) → Major Incident (ayrıca prosedur, kriz komandası)4.15.6 SIEM/SOAR/Ticketing inteqrasiyası
| İstiqamət | Protokol | Məzmun |
|---|---|---|
| ETİMAD → SIEM | Syslog CEF/LEEF və ya HTTP webhook | Bütün hadisələr, DLP hadisələri, audit log-un kritik hadisələri |
| SIEM → ETİMAD | REST API (POST /api/v1/incidents/ingest) | SIEM-də yaranan alarm → ETİMAD hadisəsi (korrelyasiya ID ilə) |
| ETİMAD → SOAR | Webhook | Playbook tetikleyicisi |
| SOAR → ETİMAD | REST | Status yeniləməsi, zənginləşdirmə |
| ETİMAD ↔ Ticketing (Jira/ServiceNow/GLPI) | REST, iki istiqamətli | Tapşırıq yaradılması və statusun sinxronizasiyası |
4.15.7 Səlahiyyətlər
| Əməliyyat | employee | security_incident_analyst | security_lead | dept_manager |
|---|---|---|---|---|
| Hadisə bildirmək | ✅ | ✅ | ✅ | ✅ |
| Öz bildirdiyimin statusu | ✅ | ✅ | ✅ | ✅ |
| Bütün hadisələri görmək | ❌ | ✅ | ✅ | ❌ |
| Şöbə hadisələrini görmək | ❌ | ✅ | ✅ | ✅ (metadata) |
| Triage / təyinat | ❌ | ✅ | ✅ | ❌ |
| Anonim bildirənin kimliyini görmək | ❌ | ❌ | ❌ | ❌ |
| Bağlamaq | ❌ | ✅ (aşağı/orta) | ✅ | ❌ |
4.15.8 Audit hadisələri
SECURITY_INCIDENT_REPORTED, SECURITY_INCIDENT_TRIAGED, SECURITY_INCIDENT_ASSIGNED, SECURITY_INCIDENT_SEVERITY_CHANGED, SECURITY_INCIDENT_ESCALATED, SECURITY_INCIDENT_CONTAINED, SECURITY_INCIDENT_RESOLVED, SECURITY_INCIDENT_CLOSED, SECURITY_INCIDENT_REOPENED, SECURITY_INCIDENT_LINKED, SIEM_EVENT_INGESTED, SIEM_EVENT_FORWARDED
4.15.9 API
POST /api/v1/incidents # bildirmə (bütün istifadəçilər)
POST /api/v1/incidents/anonymous # anonim (rate-limited, CAPTCHA opsional)
GET /api/v1/incidents/status/{trackingCode} # anonim izləmə
GET /api/v1/my/incidents
GET /api/v1/incidents?category=&severity=&status=&assignee=
GET /api/v1/incidents/{id}
POST /api/v1/incidents/{id}/assign
POST /api/v1/incidents/{id}/triage
POST /api/v1/incidents/{id}/notes
POST /api/v1/incidents/{id}/escalate
POST /api/v1/incidents/{id}/resolve
POST /api/v1/incidents/{id}/close
POST /api/v1/incidents/{id}/links
POST /api/v1/incidents/ingest # SIEM → ETİMAD (mTLS)
POST /api/v1/incidents/{id}/convert-to-phishing-template # M024.15.10 UI səhifələri
/report (böyük, sadə bildirmə forması — hər səhifədən əlçatan "Hadisə bildir" düyməsi header-də), /my/incidents, /incidents (analitik növbəsi), /incidents/{id} (timeline + fəaliyyət paneli + əlaqələr), /incidents/dashboard.
4.15.11 Metriklər
Bildirilən hadisələr (kateqoriya üzrə), bildirmə mənbəyi (əməkdaş/SIEM/DLP/avtomatik), orta ilk cavab müddəti, MTTR, SLA riayəti, təkrar hadisələr, şöbə üzrə bildirmə aktivliyi (müsbət göstərici — çox bildirmə yaxşıdır), anonim bildirmələrin faizi, əsassız/dublikat faizi.
4.15.12 Qəbul meyarları
- Bildirmə forması 4-dən çox məcburi sahə tələb etmir və ≤ 60 saniyədə doldurula bilir (UAT).
- Anonim bildirişdə istifadəçi ID-si, IP və brauzer izi saxlanılmır (DB inspeksiyası).
- Anonim izləmə kodu ilə bildirən statusu görə bilir, lakin sistem onu identifikasiya edə bilmir.
- Kritik hadisə bildirildikdə ≤ 1 dəqiqə ərzində SOC-a bildiriş gedir (email + SIEM).
- SIEM-ə göndərilən CEF mesajı standarta uyğundur və test SIEM tərəfindən parse olunur.
- Şübhəli email bildirişi simulyasiya header-i daşıyırsa avtomatik M02-yə yönləndirilir və hadisə yaradılmır.
4.16 M16 — Dashboard və Hesabatlar
4.16.1 Məqsəd
Hər rola öz qərar səviyyəsinə uyğun, icazəyə görə filtrlənmiş, aktuallığı açıq göstərilən məlumat təqdim etmək.
4.16.2 Employee Dashboard (/)
┌─ Salam, Elnur! ────────────────────────────────────────────────┐
│ │
│ ⚠ DİQQƏT TƏLƏB EDƏN (2) │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ 📚 İnformasiya təhlükə- │ │ 📄 Parol Siyasəti v3.0 │ │
│ │ sizliyinin əsasları │ │ ilə tanış olun │ │
│ │ Son tarix: 3 gün │ │ Son tarix: 7 gün │ │
│ │ [ Davam et ] │ │ [ Oxu ] │ │
│ └──────────────────────────┘ └──────────────────────────┘ │
│ │
│ ┌─ Mənim təlimlərim ──┐ ┌─ Sertifikatlarım ─┐ ┌─ Mənim ──┐ │
│ │ Tamamlanmış: 4/5 │ │ 3 aktiv sertifikat│ │ risk │ │
│ │ ▓▓▓▓▓▓▓▓░░ 80% │ │ [ Bax ] │ │ göstər. │ │
│ └─────────────────────┘ └───────────────────┘ │ 🟢 Aşağı │ │
│ │ [İzah] │ │
│ ┌─ Tapşırıqlarım (1) ─┐ ┌─ Bildirişlərim ───┐ └──────────┘ │
│ └─────────────────────┘ └───────────────────┘ │
│ │
│ [ 🚨 Təhlükəsizlik hadisəsi bildir ] [ ✉ Şübhəli email ] │
└────────────────────────────────────────────────────────────────┘Şəxsi risk göstəricisinin etik təqdimatı (P7):
- Yalnız band göstərilir (Aşağı/Orta/Yüksək), rəqəm opsionaldır (istifadəçi "İzah" ilə görə bilər)
- Müsbət çərçivə: "Riskinizi azaltmaq üçün: ✓ Təlimi tamamlayın ✓ Şübhəli emailləri bildirin"
- Heç bir müqayisə başqaları ilə ("siz 200 nəfərdən 180-cisiniz" — qadağan)
- "Yüksək" band üçün: "Sizə əlavə dəstək təklif olunur" + təlim linki, cəza tonu yoxdur
4.16.3 Security/GRC Dashboard (/dashboard/security)
| Widget | Məzmun | Drill-down |
|---|---|---|
| Uyğunluq balı | Framework üzrə bal + trend sparkline | /compliance |
| Nəzarət tədbirlərinin statusu | Donut: effektiv / icra olunub / qismən / icra olunmayıb / qiymətləndirilməyib | /compliance/controls?status= |
| Açıq risklər | Səviyyə üzrə bar + say | /risks?level= |
| Yüksək qalıq risklər | Top 10 siyahı | /risks/{id} |
| Gecikmiş remediasiya | Say + ən köhnəsinin yaşı | /tasks?overdue=true |
| Fişinq nəticələri | Son kampaniya: klik%, bildirmə%, trend | /phishing/campaigns/{id} |
| Təlim tamamlanması | % + şöbə üzrə ən aşağı 5 | /trainings/campaigns |
| İnsan Riski | Qurum HRS + şöbə istilik xəritəsi | /human-risk/departments |
| DLP hadisələri | Son 30 gün: say, severity paylanması, trend | /dlp/incidents |
| Siyasət tanışlığı | % + gecikmiş siyahı | /policies/{id}/acknowledgements |
| Vaxtı keçmiş sübutlar | Say + 30 gün ərzində bitənlər | /evidence?expiring=30d |
| Açıq audit tapıntıları | Tip üzrə + gecikmiş | /findings?status=open |
| Yaxınlaşan baxışlar | Nəzarət/risk/siyasət/sübut/təchizatçı — vahid siyahı | müvafiq |
| Təchizatçı riski | Yüksək riskli təchizatçılar + bitən müqavilələr | /vendors |
| Şöbə müqayisəsi | Cədvəl: şöbə × (təlim%, tanışlıq%, HRS, DLP hadisə, açıq tapıntı) | şöbə detalı |
4.16.4 Executive Dashboard (/dashboard/executive)
Dizayn prinsipi: bir ekran, sürüşdürmə olmadan, 8–10 göstərici, hər biri bir rəqəm + trend oxu + rəng/ikon. Detal yalnız kliklə.
| Göstərici | Format |
|---|---|
| Ümumi təhlükəsizlik mövqeyi | 0–100 kompozit bal + trend (uyğunluq 30%, risk 25%, insan riski 20%, hadisə 15%, sübut 10%) |
| Top 5 biznes riski | Ad + qalıq səviyyə + trend oxu |
| Risk trendi | 12 aylıq xətt: kritik + yüksək risklərin sayı |
| Uyğunluq trendi | Framework üzrə xətt |
| Audit hazırlığı | Bal + "sertifikasiyaya hazırlıq: 78%" |
| Şöbə müqayisəsi | Bar chart: şöbə × kompozit bal |
| Yüksək riskli təchizatçılar | Say + adlar |
| Kritik DLP hadisələri | Say + trend |
| Maarifləndirmə yetkinliyi | 1–5 səviyyə (təlim% + fişinq nəticəsi + bildirmə nisbəti əsasında) |
| Gecikmiş kritik tədbirlər | Say + ən köhnəsinin yaşı (qırmızı) |
| Nəzarət tədbirlərinin effektivliyi | % effektiv |
| İnsan Riski / Məlumat Riski | İki kompozit bal |
4.16.5 Ümumi dashboard funksiyaları
| Funksiya | Təsvir |
|---|---|
| Tarix filtri | Son 7/30/90 gün, il, custom, "əvvəlki dövrlə müqayisə" |
| Şöbə filtri | İcazəyə görə məhdud siyahı |
| Drill-down | Hər widget-dən filtrlənmiş siyahıya |
| İcazəyə görə məlumat | Widget istifadəçinin görə bildiyi məlumatı göstərir; gizlədilmiş məlumat varsa "N nəticə icazəniz olmadığı üçün göstərilmir" (say da gizlədilə bilər — konfiqurasiya) |
| İxrac | Widget → PNG/CSV; dashboard → PDF |
| Planlaşdırılmış hesabat | Cədvəllə email ilə göndərmə (həftəlik/aylıq/rüblük) |
| Məlumat aktuallığı göstəricisi | Hər widget-də: "Son yenilənmə: 14.09.2026 09:15" və ya "Real vaxt". Köhnə məlumat üçün sarı xəbərdarlıq |
| Fərdiləşdirmə | Widget-lərin yerini dəyişmə, gizlətmə (istifadəçi başına saxlanılır) |
| Accessibility | Hər qrafikin cədvəl alternativi ("Cədvəl kimi göstər" düyməsi) |
4.16.6 Hesabat mühərriki
- Hesabat şablonları: əvvəlcədən müəyyən edilmiş 21 hesabat (bax §17)
- Parametrlər: tarix aralığı, şöbə, framework, status, sahib
- Formatlar: PDF (rəsmi tərtibat: gerb, başlıq, təsnifat etiketi, səhifə nömrəsi, generasiya tarixi/istifadəçisi), DOCX (redaktə edilə bilən), XLSX (məlumat + pivot üçün hazır), CSV
- Generasiya: ≤ 5 s sinxron, daha uzunu background job + hazır olduqda bildiriş + yükləmə linki
- Planlaşdırma: cron ifadəsi, alıcılar, format; hesabat özü sübut kimi saxlanıla bilər (M07)
- Hesabat ixracının audit edilməsi: kim, nə vaxt, hansı parametrlərlə, neçə sətir
- Böyük ixrac nəzarəti: > 1000 sətir ixrac səbəb tələb edir (DLP-010)
4.16.7 Məlumat obyektləri
Dashboard, DashboardWidget, UserDashboardPreference, ReportTemplate, ReportDefinition, ReportRun, ReportSchedule, ReportSubscription, MetricSnapshot (gündəlik aqreqatlar — trend üçün)
4.16.8 API
GET /api/v1/dashboards/employee
GET /api/v1/dashboards/security?from=&to=&department=
GET /api/v1/dashboards/executive?from=&to=
GET /api/v1/dashboards/widgets/{key}/data?params...
PUT /api/v1/dashboards/preferences
GET /api/v1/reports/templates
POST /api/v1/reports/run # {templateId, params, format}
GET /api/v1/reports/runs/{id} # status
GET /api/v1/reports/runs/{id}/download
GET /api/v1/reports/schedules
POST /api/v1/reports/schedules
GET /api/v1/metrics/snapshots?metric=&from=&to=4.16.9 Qəbul meyarları
- Dashboard yalnız istifadəçinin icazəsi olan məlumatı göstərir — eyni widget müxtəlif rollarda müxtəlif rəqəm göstərir (test).
- Hər widget-də məlumatın son yenilənmə vaxtı görünür.
- Executive dashboard 1920×1080 ekranda sürüşdürmə olmadan yerləşir.
- Hər qrafikin cədvəl alternativi var və klaviatura ilə əlçatandır.
- Dashboard yüklənməsi ≤ 2 saniyə (P95), widget-lər paralel və progressiv yüklənir.
- PDF hesabatda təsnifat etiketi, generasiya tarixi və generasiya edən istifadəçi görünür.
- > 1000 sətirlik ixrac səbəb tələb edir və audit olunur.
- Planlaşdırılmış hesabat alıcının icazəsinə görə filtrlənir (icazəsi olmayan məlumat göndərilmir).
4.17 M17 — İş Axını və Tapşırıq Mühərriki
4.17.1 Məqsəd
Bütün modullarda təkrarlanan təsdiq, rəy, tapşırıq və eskalasiya məntiqini bir dəfə realizasiya etmək; qurumun strukturuna görə konfiqurasiya imkanı vermək.
Bu bünövrə modulu Faza 0/1-in birinci işidir. Hər modulun öz təsdiq məntiqini yazması qadağandır.
4.17.2 İş axını mühərriki
Model: deklarativ state machine + qaydalar.
workflow:
key: policy_approval
version: 3
entity_type: Document
states:
- { key: draft, initial: true, label_az: "Layihə" }
- { key: internal_review, label_az: "Daxili rəy" }
- { key: security_review, label_az: "Təhlükəsizlik rəyi" }
- { key: legal_review, label_az: "Hüquqi rəy", optional: true }
- { key: pending_approval, label_az: "Təsdiq gözləyir" }
- { key: published, final: true, label_az: "Nəşr olunub" }
- { key: rejected, label_az: "Rədd edilib" }
transitions:
- from: draft
to: internal_review
action: submit
allowed_roles: [policy_author, compliance_officer]
conditions:
- "entity.title != null && entity.content.length > 200"
effects:
- create_tasks: { assignee_rule: reviewers_of(entity), due_days: 5 }
- notify: { template: review_requested }
- from: internal_review
to: security_review
action: approve
allowed_roles: [policy_reviewer]
approval_mode: all # all | any | quorum(N) | sequential
sod_check: [SoD-1]
effects: [...]
- from: any
to: draft
action: request_changes
allowed_roles: [policy_reviewer, policy_approver]
requires_comment: true
escalations:
- state: pending_approval
after_days: 5
action: notify_manager
- state: pending_approval
after_days: 10
action: escalate_to: ciso
sla:
internal_review: 5d
security_review: 3d
pending_approval: 5dTəsdiq rejimləri: all (hamısı), any (biri kifayətdir), quorum(N), sequential (ardıcıl), conditional (şərtə görə: məs. risk səviyyəsi yüksəkdirsə əlavə təsdiqçi).
Təsdiqçinin təyin edilməsi (assignee rules): konkret istifadəçi, rol, obyekt sahibi, obyekt sahibinin rəhbəri, departament rəhbəri, AD qrupunun üzvləri, dinamik ifadə (manager_of(entity.owner)), növbə (round-robin).
Delegasiya: istifadəçi məzuniyyət dövrü üçün təsdiq səlahiyyətini başqasına verə bilər (müddətli, audit olunur, SoD yoxlanılır).
4.17.3 Tapşırıq (Task) modeli
| Sahə | Təsvir |
|---|---|
task_id | TSK-YYYY-NNNNN |
title, description | |
source_module, source_entity_type, source_entity_id | Haradan yarandı |
type | approval / review / remediation / evidence_request / training / acknowledgement / attestation / investigation / generic |
owner_id (assignee) | |
reviewer_id, approver_id | |
delegated_from_id | |
priority | low / medium / high / critical |
status | open / in_progress / blocked / pending_review / completed / cancelled / rejected |
created_at, due_date, started_at, completed_at | |
sla_hours, sla_breached | |
reminder_schedule | JSON: [-7d, -3d, -1d, +1d, +3d] |
escalation_chain | JSON: [{after_days, to_role/user}] |
blocked_reason, blocked_by_task_id | |
comments[], attachments[] | |
related_objects[] | Polimorf |
completion_evidence_id | Tamamlanma sübutu (M07) |
completion_note |
4.17.4 Funksiyalar
- Vahid "Mənim tapşırıqlarım" görünüşü — bütün modullardan
- Kanban və cədvəl görünüşü
- Toplu əməliyyatlar (toplu tamamlama, toplu təyinat dəyişikliyi)
- Alt-tapşırıqlar (checklist)
- Asılılıq (A tamamlanmadan B başlaya bilməz)
- Təkrarlanan tapşırıqlar (dövri baxışlar: nəzarət tədbiri baxışı, sübut yeniləməsi, risk baxışı, attestasiya)
- Xatırlatma: platformadaxili + email, konfiqurasiya edilə bilən cədvəl
- Eskalasiya: avtomatik, zəncir üzrə, audit olunur
- SLA izləmə və hesabat
- İş yükü görünüşü (kimdə neçə açıq tapşırıq var — resurs planlaması üçün)
4.17.5 Bildiriş servisi (Notification)
Kanallar: platformadaxili (bell + siyahı), email (SMTP), SIEM (CEF), ticketing (webhook), gələcək: Teams/Slack/SMS.
Şablon idarəetməsi:
- Hər bildiriş növü üçün şablon: mövzu + mətn (HTML + düz mətn)
- Çoxdilli (AZ/EN/RU) — istifadəçinin dil seçiminə görə
- Versiyalaşdırılmış — dəyişiklik audit olunur
- Dəyişənlər:
{{user.firstName}},{{entity.title}},{{dueDate}},{{link}},{{daysRemaining}} - Önizləmə və test göndərişi
Bildiriş səbəbləri (tam siyahı — §27-də genişləndirilir): Təlim təyin edildi / deadline yaxınlaşır / gecikdi; Siyasət nəşr olundu / tanışlıq tələb olunur / baxış tələb olunur; Sübut tələb olundu / bitir / bitdi; Risk baxışı tələb olunur / emal gecikdi / qəbul bitir; Audit tapıntısı təyin edildi / düzəldici tədbir gecikdi; Təchizatçı yenidən qiymətləndirmə / müqavilə bitir / sertifikat bitir; DLP hadisəsi yarandı / izahat tələb olunur / təsdiq tələb olunur; Təhlükəsizlik hadisəsi eskalasiya olundu; Tapşırıq təyin edildi / gecikdi; Təsdiq gözləyir; Kampaniya başladı/bitdi; AD sinxronizasiya xətası; Sistem xəbərdarlığı.
Bildiriş nəzarəti:
- İstifadəçi tərəfindən kanal seçimi (hansı bildirişi email ilə almaq) — məcburi bildirişlər istisna (təlim deadline, siyasət tanışlığı)
- Toplama (digest): gündəlik/həftəlik xülasə — bildiriş yorğunluğuna qarşı
- Sakit saatlar (iş saatı xaricində göndərməmək — kritik istisna)
- Təkrar bildirişin qarşısının alınması (dedupe)
4.17.6 Məlumat obyektləri
WorkflowDefinition, WorkflowVersion, WorkflowState, WorkflowTransition, WorkflowInstance, WorkflowHistory, Approval, ApprovalStep, Delegation, Task, SubTask, TaskComment, TaskAttachment, TaskDependency, RecurringTaskRule, Notification, NotificationTemplate, NotificationTemplateVersion, NotificationPreference, NotificationDelivery
4.17.7 API
GET /api/v1/tasks?assignee=me&status=&priority=&overdue=&module=
GET /api/v1/tasks/{id}
POST /api/v1/tasks
PATCH /api/v1/tasks/{id}
POST /api/v1/tasks/{id}/complete # {note, evidenceId?}
POST /api/v1/tasks/{id}/reassign
POST /api/v1/tasks/{id}/comments
POST /api/v1/tasks/bulk-complete
GET /api/v1/tasks/workload?department=
GET /api/v1/approvals/pending # mənə gələn təsdiqlər
POST /api/v1/approvals/{id}/decide # {decision, comment}
GET /api/v1/delegations
POST /api/v1/delegations # {toUserId, from, to, scope}
GET /api/v1/workflows/definitions
POST /api/v1/workflows/definitions
POST /api/v1/workflows/definitions/{id}/validate
POST /api/v1/workflows/definitions/{id}/publish
GET /api/v1/workflows/instances/{id}/history
GET /api/v1/notifications?unread=true
POST /api/v1/notifications/{id}/read
PUT /api/v1/notifications/preferences
GET /api/v1/admin/notification-templates
PUT /api/v1/admin/notification-templates/{id}
POST /api/v1/admin/notification-templates/{id}/test4.17.8 UI səhifələri
/tasks (Mənim tapşırıqlarım — cədvəl/kanban, filtr, toplu əməliyyat), /tasks/{id}, /approvals (təsdiq növbəsi — bir ekranda sürətli təsdiq: obyektin xülasəsi + Təsdiq/Rədd + şərh), /my/delegations, /admin/workflows (siyahı), /admin/workflows/{id} (vizual state machine redaktoru: qutular + oxlar, hər keçid üçün panel), /admin/notifications/templates, bell menyusu (header-də).
4.17.9 Audit hadisələri
WORKFLOW_DEFINITION_CREATED, WORKFLOW_DEFINITION_PUBLISHED, WORKFLOW_INSTANCE_STARTED, WORKFLOW_TRANSITION, WORKFLOW_INSTANCE_COMPLETED, APPROVAL_REQUESTED, APPROVAL_GRANTED, APPROVAL_REJECTED, APPROVAL_DELEGATED, TASK_CREATED, TASK_ASSIGNED, TASK_REASSIGNED, TASK_COMPLETED, TASK_CANCELLED, TASK_ESCALATED, SLA_BREACHED, DELEGATION_CREATED, DELEGATION_REVOKED, NOTIFICATION_TEMPLATE_CHANGED, NOTIFICATION_SENT, NOTIFICATION_FAILED
4.17.10 Qəbul meyarları
- İş axını tərifi kod dəyişikliyi olmadan admin panelindən dəyişdirilir; dəyişiklik yeni versiya yaradır.
- İşləyən (aktiv) instansiyalar köhnə versiyada davam edir; yalnız yeni instansiyalar yeni versiyada başlayır.
- SoD qaydası pozulan keçid bloklanır (403 + audit).
- Tapşırıq SLA-nı keçdikdə eskalasiya avtomatik işə düşür (test: saat dəyişdirilir).
- Delegasiya müddəti bitdikdə avtomatik ləğv olunur.
- Bildiriş şablonu 3 dildə mövcuddur; istifadəçinin dili olmadıqda AZ-a fallback edir.
- Eyni hadisə üçün 5 dəqiqə ərzində təkrar bildiriş göndərilmir (dedupe).
- "Mənim tapşırıqlarım" bütün modullardan gələn tapşırıqları vahid siyahıda göstərir.
- Email göndərilməsi uğursuz olduqda 3 dəfə yenidən cəhd edilir və nəticə
NotificationDelivery-də saxlanılır.
4.18 M18 — Platforma Administrasiyası və Audit İzi
4.18.1 Məqsəd
Konfiqurasiya, istifadəçi/rol idarəetməsi, sistem sağlamlığı və dəyişdirilə bilməyən audit izi.
4.18.2 Funksiyalar
- Təşkilati struktur (organization, OU, department) — AD-dən + əl ilə düzəliş
- Rol və icazə matrisi (§15)
- SoD qaydalarının konfiqurasiyası
- Sistem parametrləri: dil, saat qurşağı, tarix formatı, iş günləri/saatları, təqvim (bayram günləri — deadline hesablaması üçün)
- Branding: loqo, qurum adı, rənglər (məhdud), hesabat başlıqları
- Email/SMTP konfiqurasiyası
- İnteqrasiya konfiqurasiyası (AD, SIEM, ticketing, DLP konnektorları, antivirus)
- Fayl saxlama konfiqurasiyası, kvotalar, retention
- Backup statusu görünüşü
- Sistem sağlamlığı: servis statusu, növbə uzunluğu, disk, DB bağlantıları, son işlər
- Lisenziya/versiya məlumatı
- Feature flags (modulların aktivləşdirilməsi/söndürülməsi)
- Məlumat retention və arxivləşdirmə siyasətləri
- Audit log axtarışı və ixracı
4.18.3 🔒 Audit izi (Audit Trail) — normativ dizayn
Qeyd edilən hadisələr: §16-da tam siyahı. Minimum: autentifikasiya, avtorizasiya rədləri, CRUD, baxış (həssas obyektlər), ixrac, fayl əməliyyatları, icazə/rol dəyişikliyi, təsdiq, konfiqurasiya dəyişikliyi, inteqrasiya əməliyyatları, API girişi, iş axını keçidləri.
Sahələr:
| Sahə | Təsvir |
|---|---|
id | UUIDv7 (zaman sıralı) |
sequence_number | Monoton artan (BIGSERIAL) — boşluq aşkarlanması üçün |
timestamp_utc | Serverin NTP-sinxronlaşdırılmış vaxtı (mikrosaniyə) |
actor_user_id, actor_upn, actor_display_name | Snapshot (istifadəçi silinsə də qalır) |
actor_type | user / service_account / system / anonymous |
impersonated_by | Əgər admin başqasının adından işləyirsə (default qadağan) |
action | Enum (yuxarıdakı siyahı) |
object_type, object_id, object_label | |
previous_value, new_value | JSONB, yalnız dəyişən sahələr, həssas sahələr maskalanmış |
result | success / failure / denied |
failure_reason | |
ip_address | |
user_agent, session_id, device_id | |
justification | Səbəb (tələb olunan əməliyyatlarda) |
correlation_id | Sorğu zənciri üzrə (W3C Trace Context) |
request_id | |
module | |
classification | Əgər obyekt təsnif edilibsə |
prev_hash, record_hash | Hash zənciri (aşağıda) |
Dəyişməzlik (immutability) — çoxqatlı müdafiə:
| Qat | Mexanizm |
|---|---|
| 1. Tətbiq | Audit log yalnız INSERT — repository-də Update/Delete metodu yoxdur |
| 2. Verilənlər bazası | Cədvəl üçün ayrıca DB rolu: yalnız INSERT + SELECT; UPDATE/DELETE REVOKE; BEFORE UPDATE/DELETE trigger → RAISE EXCEPTION |
| 3. Hash zənciri | record_hash = SHA256(prev_hash ‖ canonical_json(record)) — hər sətir əvvəlkinə bağlanır |
| 4. Dövri möhürləmə | Hər saat: son sequence_number + hash → audit_seal cədvəli; seal ayrıca imzalanır (HMAC, açar Vault-da) və SIEM-ə göndərilir |
| 5. Xarici surət | Bütün audit hadisələri real vaxtda SIEM-ə (syslog CEF) göndərilir — DB-də manipulyasiya SIEM ilə müqayisədə aşkarlanır |
| 6. WORM arxiv | Aylıq arxiv faylı (imzalanmış, sıxılmış) WORM saxlamaya / lentə |
| 7. Bütövlük yoxlaması | Gündəlik job: hash zəncirini yoxlayır; boşluq və ya uyğunsuzluq → kritik alarm + hadisə |
Retention: onlayn (sorğu edilə bilən) 24 ay; arxiv 7 il (və ya qurumun normativ tələbinə görə); arxivdən bərpa prosedurla.
Audit loguna giriş:
| Rol | Giriş |
|---|---|
readonly_auditor, internal_auditor | Bütün log, oxuma, axtarış, ixrac (ixrac özü loglanır) |
security_lead | Bütün log |
compliance_officer | Uyğunluq modulları üzrə |
platform_admin | Sistem/konfiqurasiya hadisələri + öz əməliyyatları. Məxfi obyektlərin məzmun baxışı logları maskalanmış |
employee | Öz fəaliyyət tarixçəsi (/my/activity) — şəffaflıq üçün |
| Heç kim | Silmək, dəyişmək |
Audit log axtarışı: aktor, əməliyyat, obyekt tipi/ID, tarix aralığı, IP, nəticə, korrelyasiya ID; tam mətn axtarışı (OpenSearch); saxlanmış sorğular; ixrac (CSV/JSON, imzalanmış).
4.18.4 Məlumat obyektləri
AuditLog, AuditSeal, AuditArchive, SystemConfiguration, FeatureFlag, RetentionPolicy, IntegrationConfig, Holiday, BrandingConfig, SystemHealthCheck, BackgroundJob, JobExecution
4.18.5 API
GET /api/v1/audit-logs?actor=&action=&objectType=&objectId=&from=&to=&result=&ip=
GET /api/v1/audit-logs/{id}
GET /api/v1/audit-logs/export?format=csv|json # loglanır
GET /api/v1/audit-logs/integrity-check # hash zənciri yoxlaması
GET /api/v1/my/activity # öz tarixçəm
GET /api/v1/admin/configuration
PUT /api/v1/admin/configuration/{key}
GET /api/v1/admin/feature-flags
PUT /api/v1/admin/feature-flags/{key}
GET /api/v1/admin/health # detallı
GET /api/v1/admin/jobs
POST /api/v1/admin/jobs/{key}/run
GET /api/v1/admin/retention-policies
PUT /api/v1/admin/retention-policies/{id}
GET /health/live # k8s liveness
GET /health/ready # k8s readiness
GET /metrics # Prometheus4.18.6 Qəbul meyarları
- Audit log sətri heç bir rol, hətta DB administratoru tərəfindən tətbiq vasitəsilə dəyişdirilə/silinə bilmir (test: UPDATE cəhdi → exception).
- Hash zəncirinin qırılması gündəlik yoxlamada aşkarlanır və kritik alarm yaradır.
- Audit log-un ixracı özü audit logunda qeyd olunur.
- Hər kritik hadisə ≤ 60 saniyə ərzində SIEM-ə çatır.
- İstifadəçi öz fəaliyyət tarixçəsini görə bilir.
- Audit log-da parol, token, tam FİN, kart nömrəsi kimi həssas dəyərlər maskalanmış şəkildədir (avtomatlaşdırılmış skan).
- 100 milyon sətirlik audit log-da tarix + aktor filtri ≤ 3 saniyədə nəticə verir (partisiyalaşdırma + indeks).
- Aylıq arxiv faylı imzalanır və imza yoxlanıla bilir.
5. Modul asılılıq xəritəsi (Module Dependency Map)
5.1 Qatlar
┌─────────────────────────────────────────────────────────────────────┐
│ TƏQDİMAT QATI │
│ M16 Dashboard & Hesabatlar │
└─────────────────────────────────────────────────────────────────────┘
▲ ▲ ▲ ▲
┌─────────────┴────────────┴─────────────┴────────────┴───────────────┐
│ BİZNES MODULLARI │
│ │
│ İnsan qatı GRC qatı Məlumat qatı │
│ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ M01 Təlim│◀────▶│ M04 Uyğunluq │◀────▶│ M10 Təsnifat │ │
│ │ M02 Fişinq│ │ M05 Risk │ │ M11 Discovery│ │
│ └──────────┘ │ M03 Siyasət │ │ M12 DLP Policy│ │
│ │ │ M06 Audit │ │ M13 DLP Incident│ │
│ │ │ M07 Sübut │ └──────────────┘ │
│ │ │ M08 Aktiv │ │ │
│ │ │ M09 Təchizatçı│ │ │
│ │ └──────────────┘ │ │
│ └──────────▶ M15 Hadisələr ◀────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
▲ ▲ ▲ ▲
┌─────────────┴────────────┴─────────────┴────────────┴───────────────┐
│ BÜNÖVRƏ (Faza 0/1 — birinci) │
│ M17 İş axını & Tapşırıq & Bildiriş │
│ M14 AD/IAM & RBAC │
│ M18 Konfiqurasiya & Audit izi │
└─────────────────────────────────────────────────────────────────────┘5.2 Məlumat axını matrisi
Sətir = mənbə, sütun = istehlakçı. Xanada: ötürülən məlumat.
| ↓Mənbə \ İstehlakçı→ | M01 | M02 | M03 | M04 | M05 | M06 | M07 | M08 | M09 | M10 | M12 | M13 | M15 | M16 | M17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| M01 Təlim | — | Tamamlanma→HRS | A.6.3 sübutu | Şöbə bilik riski | Hesabat→sübut | Metriklər | Tapşırıq | ||||||||
| M02 Fişinq | Mikro-təlim təyinatı | — | A.6.3 sübutu | BEC/SE risk siqnalı | Kampaniya hesabatı | HRS | Real fişinq→hadisə | HRS, metriklər | Remediasiya | ||||||
| M03 Siyasət | Siyasət testi | — | Nəzarətin sənədi | İstisna→risk | Audit meyarı | Nəşr→sübut | Aktiv siyasəti | Təchizatçı tələbi | Təsnifat siyasəti | DLP siyasət əsası | Tanışlıq% | Təsdiq axını | |||
| M04 Uyğunluq | Təlim tələbi | Sənəd tələbi | — | Nəzarət effektivliyi→qalıq risk | Checklist mənbəyi | Sübut tələbi | Aktiv nəzarətləri | Təchizatçı nəzarətləri | Təsnifat nəzarətləri | DLP nəzarətləri | Uyğunluq balı | Remediasiya | |||
| M05 Risk | Risk→təlim | Risk→kampaniya hədəfi | Risk→siyasət ehtiyacı | Risk→nəzarət əsaslandırması | — | Audit prioriteti | Aktiv riski | Təchizatçı riski | Məlumat riski | DLP prioriteti | Hadisə riski | Risk metrikləri | Emal tapşırığı | ||
| M06 Audit | Sənəd tapıntısı | Tapıntı→nəzarət statusu | Tapıntı→risk | — | Sübut sorğusu | Təchizatçı auditi | Tapıntı metrikləri | Düzəldici tədbir | |||||||
| M07 Sübut | Sübut tamlığı→bal | Nəzarət effektivliyi | Audit sübutu | — | Təchizatçı sənədi | Təsnifat tətbiqi | Hadisə sübutu | Hadisə sübutu | Bitmə xəbərdarlığı | Sübut tapşırığı | |||||
| M08 Aktiv | Nəzarət skoupu | Təsir hesablanması | Audit skoupu | — | Təchizatçı-aktiv | Məlumat yeri | DLP skoupu | Hadisə konteksti | Hadisə konteksti | Reyestr | Attestasiya | ||||
| M09 Təchizatçı | Vendor təlimi | NDA/DPA | Nəzarət | Təchizatçı riski | Audit obyekti | Sertifikatlar | Aktiv sahibi | — | Məlumat girişi | Destinasiya | Hadisə tərəfi | Risk balı | Qiymətləndirmə | ||
| M10 Təsnifat | Təsnifat təlimi | Sənəd etiketi | A.5.12/13 | Məlumat riski | Sübut etiketi | Aktiv təsnifatı | Vendor girişi | — | DLP əsası | Hadisə severity | Təsnifat hesabatı | Endirmə təsdiqi | |||
| M11 Discovery | Skan nəticəsi | Məlumat yeri | Təsnifat təklifi | Qayda mənbəyi | Uyğunluq detalı | FP metrikləri | Tuning tapşırığı | ||||||||
| M12 DLP Policy | A.8.12 sübutu | Siyasət icrası | — | Qayda istinadı | Siyasət metrikləri | Təsdiq axını | |||||||||
| M13 DLP Hadisə | Hədəfli təlim | HRS-ə təsir | Nəzarət effektivliyi | Məlumat riski siqnalı | Hadisə sübutu | Aktiv konteksti | Təsnifat statistikası | FP→tuning | — | Eskalasiya | DLP metrikləri | İzahat tapşırığı | |||
| M15 Hadisə | Dərs məzmunu | Şablon mənbəyi | Nəzarət boşluğu | Hadisə→risk | Tapıntı | Hadisə sübutu | Təsirlənən aktiv | Təchizatçı hadisəsi | Əlaqəli DLP | — | Hadisə metrikləri | Düzəldici tədbir | |||
| M14 AD/IAM | Təyinat qaydası | Hədəfləmə | Tətbiq dairəsi | Sahiblik | Sahiblik | Auditor təyinatı | Sahiblik | Sahiblik | Sahiblik | İcazəli qruplar | Qayda skoupu | İstifadəçi konteksti | Bildirən | Avtorizasiya | Təyinat |
| M17 Workflow | Deadline | Təsdiq | Təsdiq | Remediasiya | Emal | Düzəldici | Sorğu | Attestasiya | Qiymətləndirmə | Endirmə | Təsdiq | İzahat | Eskalasiya | Tapşırıq metrikləri | — |
| M18 Audit izi | Sübut (log çıxarışı) | Audit sübutu |
5.3 Kritik inteqrasiya ssenariləri (uçdan-uca)
S1 — Fişinqdən riskə (§1.2 diaqramının detalı)
1. Kampaniya bitir (M02)
2. Hadisələr aqreqasiya olunur → şöbə üzrə kredensial göndərmə nisbəti = 18%
3. HRS yenidən hesablanır (M02) → 47 istifadəçi "Yüksək" banda keçir
4. Avtomatik: hər birinə mikro-təlim təyin olunur (M01), deadline 14 gün
5. Risk siqnalı işə düşür (M05): "Maliyyə şöbəsində BEC riski" → təklif: ehtimal 3→4
6. Risk meneceri təklifi qəbul edir → qalıq risk 12→16 (Kritik)
7. Risk sahibinə bildiriş (M17) + remediasiya tapşırığı (M17)
8. Nəzarət tədbiri A.6.3-ün effektivliyi yenidən qiymətləndirilir (M04)
9. Kampaniya hesabatı sübut kimi saxlanılır (M07) → A.6.3-ə bağlanır
10. Dashboard-da görünür (M16); Executive-də "İnsan Riski" göstəricisi dəyişir
11. Bütün addımlar audit logunda (M18)S2 — DLP hadisəsindən uyğunluğa
1. Konnektor hadisə göndərir (M13): Məxfi fayl → xarici email, bloklandı
2. Zənginləşdirmə: AD-dən istifadəçi/şöbə/rəhbər (M14), təsnifat (M10), aktiv (M08)
3. Severity avtomatik: 78 → Yüksək
4. Analitikə təyinat, SLA 4 saat (M17)
5. İstifadəçidən izahat tələb olunur (M13→M17)
6. İzahat: "təchizatçıya müqavilə göndərirdim" → legitim
7. Analitik: istisna təklifi (M12) → təsdiq axını → təsdiqlənmiş partnyor domeni əlavə olunur
8. Eyni zamanda: HRS-ə təsir (hadisə təsdiqləndi, lakin qəsdli deyil → aşağı çəki) (M02)
9. 30 gün ərzində şöbədə 12 oxşar hadisə → risk siqnalı (M05)
10. A.8.12 (Data leakage prevention) nəzarət tədbirinin effektivliyi yenilənir (M04)
11. DLP statistikası sübut kimi (M07) → A.8.12S3 — Auditdən remediasiyaya
1. Daxili audit planlanır (M06), skoup: A.8.* nəzarət tədbirləri
2. Checklist avtomatik generasiya olunur (M04 → M06)
3. Auditor sübut sorğusu göndərir (M06 → M07 → M17 tapşırıq)
4. Sübut sahibi yükləyir (M07), virus skan, təsdiq
5. Auditor yoxlayır → A.8.12 üçün sübut köhnədir (8 ay) → tapıntı: Minor NC (M06)
6. Tapıntı auditee-yə verilir, SLA 30 gün (M17)
7. Auditee RCA təqdim edir + düzəldici tədbir planı (M06)
8. Tapşırıqlar yaranır (M17), gecikmədə eskalasiya
9. Yeni sübut yüklənir (M07), tapıntıya bağlanır
10. Auditor yoxlayır → bağlanır (SoD-7: icra edən deyil)
11. A.8.12-nin statusu `implemented` → `operating_effectively` (M04)
12. Uyğunluq balı və audit hazırlığı balı artır (M04, M06 → M16)S4 — AD dəyişikliyindən təyinata
1. İstifadəçi AD-də "İT şöbəsi"ndən "Maliyyə şöbəsi"nə köçürülür
2. Artımlı sinxronizasiya (15 dəq) dəyişikliyi tutur (M14)
3. `USER_DEPARTMENT_CHANGED` hadisəsi domain event kimi yayımlanır
4. M01 dinləyir: köhnə şöbənin rola xas təlimləri ləğv edilmir (tarixçə), yeni şöbənin
məcburi proqramları təyin olunur ("BEC və ödəniş fırıldağı", 14 gün)
5. M03 dinləyir: Maliyyə şöbəsinə aid siyasətlər üçün tanışlıq tapşırığı yaranır
6. M14: rol mapping yenidən hesablanır — köhnə şöbənin skoupu ləğv olunur
7. M02: gələcək kampaniyalarda yeni şöbə üzrə hədəflənir
8. M05/M08: əgər aktiv/risk sahibi idisə → sahiblik ötürmə tapşırığı yaranır (M17)
9. Audit logunda hamısı `correlation_id` ilə bağlı (M18)5.4 Texniki asılılıq qaydaları (kod səviyyəsində)
| Qayda | İzah |
|---|---|
| Modullar bir-birinin DB cədvəllərinə birbaşa müraciət etmir | Yalnız modulun publik kontraktı (interface) və ya domain event vasitəsilə |
| Sinxron asılılıq yalnız bünövrə modullarına | M01–M16 → M14/M17/M18 sinxron; bir-birinə asinxron (event) |
| Dövri asılılıq qadağandır | Build-də yoxlanılır (ArchUnit-bənzər test) |
| Event kontraktları versiyalanır | PhishingCampaignCompleted.v1 — geri uyğunluq |
| Hər modulun öz sxeması var | PostgreSQL schema: training, phishing, policy, compliance, risk, ... |
| Paylaşılan referans məlumat | core sxemində: users, departments, organizations, classifications — read-only view kimi |
6. Detallı iş axınları (State Machines)
6.1 Siyasətin təsdiqi və tanışlıq
stateDiagram-v2
[*] --> Draft
Draft --> InternalReview: submit (müəllif)
InternalReview --> Draft: request_changes
InternalReview --> SecurityReview: approve (bütün rəyçilər)
SecurityReview --> Draft: request_changes
SecurityReview --> LegalReview: approve
LegalReview --> Draft: request_changes
LegalReview --> PendingApproval: approve
PendingApproval --> Draft: reject
PendingApproval --> Approved: approve (SoD-1 yoxlanır)
Approved --> Published: effektiv tarix çatdı (avtomatik)
Published --> AcknowledgementActive: tanışlıq tələb olunursa
AcknowledgementActive --> Active: 100% və ya kampaniya bitdi
Published --> Active: tanışlıq tələb olunmursa
Active --> UnderPeriodicReview: baxış tarixi (avtomatik)
UnderPeriodicReview --> Active: dəyişiklik yoxdur (təsdiqlə)
UnderPeriodicReview --> Draft: yeni versiya
Active --> Withdrawn: geri çəkilmə (təsdiqlə)
Active --> Superseded: yeni versiya nəşr olundu
Withdrawn --> Archived
Superseded --> Archived
Archived --> [*]SLA-lar: InternalReview 5 gün, SecurityReview 3 gün, LegalReview 5 gün, PendingApproval 5 gün. Hər mərhələdə gecikmə → rəhbərə eskalasiya.
6.2 Fişinq kampaniyası
stateDiagram-v2
[*] --> Draft
Draft --> ReadyForReview: submit
ReadyForReview --> SecurityReview: təhlükəsizlik yoxlama siyahısı
SecurityReview --> Draft: reject
SecurityReview --> Approved: approve (SoD-10)
Approved --> Scheduled: schedule
Scheduled --> Running: başlanğıc vaxtı
Scheduled --> Approved: unschedule
Running --> Paused: pause
Paused --> Running: resume
Running --> EmergencyStopped: EMERGENCY STOP
Paused --> EmergencyStopped: EMERGENCY STOP
Running --> Completed: bütün emaillər göndərildi + izləmə pəncərəsi bitdi
EmergencyStopped --> Completed: hesabat yaradıldı
Completed --> ReportIssued: hesabat nəşr olundu
ReportIssued --> Archived6.3 Risk həyat dövrü
stateDiagram-v2
[*] --> Identified
Identified --> UnderAssessment: qiymətləndirmə başladı
UnderAssessment --> Assessed: ilkin + qalıq hesablandı
Assessed --> TreatmentPlanning: emal tələb olunur (iştahadan yuxarı)
Assessed --> Monitoring: iştaha daxilində
TreatmentPlanning --> TreatmentInProgress: plan təsdiqləndi
TreatmentPlanning --> PendingAcceptance: "accept" seçildi
PendingAcceptance --> Accepted: təsdiqləndi (SoD-2)
PendingAcceptance --> TreatmentPlanning: rədd edildi
TreatmentInProgress --> Assessed: emal bitdi, yenidən qiymətləndir
Accepted --> UnderReview: qəbul müddəti bitdi
Monitoring --> UnderReview: dövri baxış tarixi
UnderReview --> Assessed: yenidən qiymətləndirmə
UnderReview --> Closed: risk aradan qalxdı
Monitoring --> Closed: risk aradan qalxdı
Closed --> Reopened: yenidən aktual
Reopened --> UnderAssessment6.4 Audit tapıntısı
stateDiagram-v2
[*] --> Draft
Draft --> AuditorReview: təqdim
AuditorReview --> Draft: düzəliş
AuditorReview --> Issued: rəsmiləşdir (SLA başlayır)
Issued --> ManagementResponse: auditee cavab verir
ManagementResponse --> Disputed: auditee etiraz edir
Disputed --> AuditorReview: yenidən baxış
Disputed --> Issued: etiraz rədd edildi
ManagementResponse --> CorrectiveActionPlanned: RCA + plan qəbul edildi
CorrectiveActionPlanned --> CorrectiveActionInProgress: icra başladı
CorrectiveActionInProgress --> EvidenceSubmitted: sübut təqdim edildi
EvidenceSubmitted --> AuditorVerification: auditor yoxlayır (SoD-7)
AuditorVerification --> Closed: təsdiqləndi
AuditorVerification --> Reopened: qeyri-kafi
Reopened --> CorrectiveActionInProgress
Closed --> EffectivenessReview: 3-6 ay sonra
EffectivenessReview --> ConfirmedClosed: effektiv
EffectivenessReview --> Reopened: effektiv deyil
ConfirmedClosed --> [*]6.5 DLP hadisəsi
stateDiagram-v2
[*] --> New: konnektordan qəbul
New --> Triage: analitik açdı (SLA sayğacı)
Triage --> ClosedFP: yanlış pozitiv
Triage --> ClosedDuplicate: dublikat
Triage --> Investigating: təsdiqləndi
Investigating --> UserResponseRequired: izahat tələb olunur
UserResponseRequired --> Investigating: izahat alındı
UserResponseRequired --> Escalated: cavab yoxdur (3 gün)
Investigating --> ManagerResponseRequired: müdir təsdiqi
ManagerResponseRequired --> Investigating: cavab alındı
Investigating --> Contained: əməliyyat bloklandı/geri alındı
Investigating --> Escalated: kritik / qəsdli
Escalated --> SecurityIncident: M15-ə keçid
Contained --> Resolved: kök səbəb aradan qaldırıldı
Resolved --> Closed: sənədləşdirildi
ClosedFP --> [*]
ClosedDuplicate --> [*]
Closed --> [*]
SecurityIncident --> [*]6.6 Sübutun həyat dövrü
stateDiagram-v2
[*] --> Draft: yükləndi
Draft --> MalwareScanning: avtomatik
MalwareScanning --> Quarantined: zərərli aşkarlandı
MalwareScanning --> Submitted: təmiz
Quarantined --> [*]: silindi (alarm)
Submitted --> UnderReview: rəyçiyə göndərildi
UnderReview --> Rejected: qeyri-kafi
Rejected --> Draft
UnderReview --> Approved: təsdiqləndi (SoD-9)
Approved --> Active: valid_from çatdı
Active --> Expiring: valid_until − 30 gün
Expiring --> Expired: valid_until keçdi
Expiring --> Renewed: yeni versiya yükləndi
Renewed --> Draft
Expired --> Renewed
Expired --> Archived: retention siyasəti
Active --> Archived: obyekt arxivləşdirildi6.7 DLP siyasətinin mərhələli tətbiqi
stateDiagram-v2
[*] --> Draft
Draft --> InternalReview: submit
InternalReview --> SecurityReview
SecurityReview --> Approved
Approved --> TestMode: deploy (simulyasiya)
TestMode --> MonitorMode: ≥2 həftə + statistika qəbul edildi
MonitorMode --> Tuning: FP > 10%
Tuning --> MonitorMode: qayda düzəldildi
MonitorMode --> WarnMode: FP < 10%
WarnMode --> JustifyMode: ≥2 həftə
JustifyMode --> PilotEnforce: legitim istifadə istisnaları yaradıldı
PilotEnforce --> FullEnforce: pilot uğurlu + rəhbərlik təsdiqi
PilotEnforce --> WarnMode: biznes pozuntusu
FullEnforce --> Suspended: fövqəladə söndürmə (dual control)
Suspended --> MonitorMode: bərpa
FullEnforce --> Retired: siyasət ləğv edildi6.8 Təlim təyinatı
stateDiagram-v2
[*] --> Assigned: qayda/kampaniya/əl ilə
Assigned --> InProgress: istifadəçi başladı
Assigned --> Overdue: deadline keçdi
InProgress --> Overdue: deadline keçdi
InProgress --> ExamPending: dərslər bitdi
ExamPending --> Passed: bal ≥ keçid
ExamPending --> Failed: bal < keçid
Failed --> RetakeAvailable: cooldown bitdi
RetakeAvailable --> ExamPending
Failed --> Escalated: maks cəhd tükəndi
Overdue --> Escalated: +N gün
Escalated --> InProgress: istifadəçi davam etdi
Passed --> Completed: sertifikat verildi
Completed --> [*]6.9 AD sinxronizasiya axını
┌─────────┐ 1. Cədvəl/əl ilə ┌──────────────┐
│ Scheduler│──────────────────────▶│ AD Sync Job │
└─────────┘ └──────┬───────┘
│ 2. LDAPS bind (svc_etimad_ldap, Vault-dan parol)
▼
┌──────────────┐
│ AD / LDAP │
└──────┬───────┘
3. Paged search (uSNChanged > lastSync)
▼
┌───────────────────────┐
│ Normalizasiya │
│ • objectGUID → key │
│ • atribut mapping │
│ • nested group açılışı│
│ • xidməti hesab filtri│
└───────┬───────────────┘
▼
┌─────────────────────────┐
│ Fərq (diff) hesablanması│
└───────┬─────────────────┘
┌─────────────────┼─────────────────┐
▼ ▼ ▼
Yeni istifadəçi Dəyişiklik Deaktiv/silinmiş
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────┐
│ Tranzaksiya: upsert + audit log │
└───────┬──────────────────────────────────────┘
▼ 4. Domain event-lər yayımlanır
┌────────────────────────────────────────────────────┐
│ UserCreated / UserDepartmentChanged / │
│ UserGroupsChanged / UserDisabled / ManagerChanged │
└───┬───────────┬──────────┬──────────┬──────────────┘
▼ ▼ ▼ ▼
M01 təyinat M03 tanışlıq M14 rol M17 sahiblik
mapping ötürmə tapşırığı
▼
5. Sinxronizasiya hesabatı + xəta bildirişi7. İnformasiya arxitekturası
7.1 Obyekt ierarxiyası
Organization (qurum)
└─ OrganizationalUnit (idarə/departament ağacı, AD OU-dan)
└─ Department (şöbə)
└─ User (əməkdaş)
Framework → Domain → Requirement
↕ ControlMapping
Control → ControlAssessment → Evidence
↕
Risk → RiskAssessment → RiskTreatment → Task
↕
Asset ← DataSet ← DataFlow
↕
Vendor → VendorAssessment
↕
Audit → AuditFinding → CorrectiveAction → Task
↕
Document (Policy/Procedure/...) → PolicyAcknowledgement
↕
ClassificationLevel → ClassificationAssignment (polimorf)
↕
DLPPolicy → DLPRule → DLPIncident
↕
TrainingProgram → TrainingAssignment → TrainingResult → Certificate
↕
PhishingCampaign → PhishingEvent → HumanRiskProfile
↕
SecurityIncident
↕
Task / Workflow / Approval / Notification / AuditLog (universal)7.2 Universal obyekt əlaqələri (Linking)
Bütün əsas obyektlər bir-birinə polimorf əlaqə cədvəli ilə bağlanır:
object_link (
id, source_type, source_id, target_type, target_id,
link_type, -- 'relates_to' | 'mitigates' | 'evidences' | 'derived_from'
-- | 'supersedes' | 'blocks' | 'duplicates' | 'implements'
created_by, created_at, note
)Bu, UI-da hər obyekt detalında "Əlaqəli obyektlər" panelini mümkün edir və yeni modul əlavə edildikdə sxem dəyişikliyi tələb etmir.
7.3 Universal axtarış
Vahid axtarış (global search, Ctrl+K): bütün obyekt tipləri üzrə, icazəyə görə filtrlənmiş.
| Xüsusiyyət | Realizasiya |
|---|---|
| İndeksləmə | OpenSearch; hər obyekt tipi üçün ayrı indeks + birləşdirilmiş alias |
| İndekslənən sahələr | Başlıq, təsvir, ID, teqlər, sahib, status + fayl mətni (sübut/sənəd üçün) |
| İcazə filtri | Hər sənəddə acl_department_ids[], acl_role_keys[], acl_owner_id, classification_level — sorğuya avtomatik filter əlavə olunur |
| Dil dəstəyi | AZ analizatoru (ICU + xüsusi stop-word siyahısı), EN, RU |
| Sıralama | Relevantlıq + son dəyişiklik + obyekt tipi prioriteti |
| Faset filtrlər | Tip, status, şöbə, tarix, təsnifat |
| Sürətli nəticə | Yazarkən (debounce 250 ms), ≤ 300 ms |
Vacib: İndeksdə məxfi məzmun saxlanılmır — yalnız metadata və icazə verilən mətn. CONFIDENTIAL+ sənədlərin mətni indekslənmir (yalnız başlıq + ID), və ya ayrıca şifrələnmiş indeksdə saxlanılır (konfiqurasiya).
7.4 Naviqasiya taksonomiyası
1. İş (mənim gündəlik işim) → Ana səhifə, Tapşırıqlar, Təsdiqlər, Bildirişlər
2. İnsan (awareness) → Təlimlər, Fişinq, İnsan riski
3. İdarəetmə (governance) → Siyasətlər, Uyğunluq, Risklər, Auditlər, Sübutlar
4. Aktivlər → Aktivlər, Təchizatçılar, Məlumat təsnifatı
5. Müdafiə (protection) → DLP, Təhlükəsizlik hadisələri
6. Məlumat → Dashboard, Hesabatlar
7. Sistem → Administrasiya, İnteqrasiyalar8. UI naviqasiyası və səhifə strukturu
8.1 Əsas naviqasiya (rola görə)
Sol yan panel (collapsible), rol əsaslı görünürlük:
| Menyu bəndi | Marşrut | Görünür: |
|---|---|---|
| 🏠 Ana səhifə | / | Hamı |
| ✅ Tapşırıqlarım | /tasks | Hamı (badge: açıq sayı) |
| ✔️ Təsdiqlər | /approvals | Təsdiq səlahiyyəti olanlar |
| 📚 Təlimlərim | /trainings/my | Hamı |
| 📄 Siyasətlər | /policies | Hamı (oxuma) |
| 🚨 Hadisə bildir | /report | Hamı (həmişə görünən, header-də də) |
| — Ayırıcı — | ||
| 🎣 Fişinq | /phishing | phishing_manager, security |
| 👥 İnsan riski | /human-risk | manager, security, HR |
| 📋 Uyğunluq | /compliance | compliance, auditor, control_owner |
| ⚠️ Risklər | /risks | risk_manager, risk_owner, auditor, manager |
| 🔍 Auditlər | /audits | auditor, compliance, auditee |
| 📎 Sübutlar | /evidence | evidence_owner, compliance, auditor |
| 🖥️ Aktivlər | /assets | asset_owner, compliance |
| 🏢 Təchizatçılar | /vendors | vendor_manager, compliance |
| 🏷️ Məlumat təsnifatı | /classification | data_owner, compliance, dlp |
| 🛡️ DLP | /dlp | dlp_analyst, dlp_admin, security |
| 🔔 Təhlükəsizlik hadisələri | /incidents | incident_analyst, security |
| 📊 Dashboard | /dashboard | security, executive, manager |
| 📑 Hesabatlar | /reports | İcazəyə görə |
| ⚙️ Administrasiya | /admin | platform_admin |
| 🔌 İnteqrasiyalar | /admin/integrations | platform_admin |
Prinsip (P: role-based navigation): istifadəçi görmədiyi modulun menyu bəndini ümumiyyətlə görmür — "icazəniz yoxdur" səhifəsi deyil, menyu bəndi yoxdur. Adi əməkdaş 6 menyu bəndi görür, GRC mütəxəssisi 14.
Üst panel: Qurum loqosu | Qlobal axtarış (Ctrl+K) | Dil seçimi (AZ/EN/RU) | 🚨 Hadisə bildir | 🔔 Bildirişlər (badge) | İstifadəçi menyusu (Profil, Mənim fəaliyyətim, Mənim riskim, Çıxış)
8.2 Səhifə şablonları (Page Patterns)
Bütün modullar 5 səhifə şablonundan istifadə edir — öyrənilmə yükünü minimuma endirir.
Şablon A — Siyahı (List/Index)
┌──────────────────────────────────────────────────────────────────────┐
│ Risklər [+ Yeni risk] [⬇ İxrac] │
├──────────────────────────────────────────────────────────────────────┤
│ [Saxlanmış görünüş ▾: Mənim risklərim] [🔍 Axtar...] [⚙ Sütunlar] │
│ Filtrlər: [Səviyyə ▾] [Status ▾] [Şöbə ▾] [Sahib ▾] [Tarix ▾] [Təmizlə]│
├──────────────────────────────────────────────────────────────────────┤
│ ☐ │ ID ↕ │ Başlıq ↕ │ Kateqoriya │ Sahib │ İlkin │ Qalıq │ Status │⋮│
│ ☐ │RSK-..│ ... │ ... │ ... │🟠 12 │🟡 8 │● Emalda│⋮│
│ ☐ │RSK-..│ ... │ ... │ ... │🔴 20 │🔴 16 │● Yeni │⋮│
├──────────────────────────────────────────────────────────────────────┤
│ 2 seçilib: [Sahib dəyiş] [Teq əlavə et] [İxrac] │
│ ◀ 1 2 3 ... 12 ▶ 50/səh ▾ │
└──────────────────────────────────────────────────────────────────────┘Xüsusiyyətlər: server-side pagination/sort/filter, sütun seçimi (istifadəçi başına saxlanılır), saxlanmış görünüşlər (paylaşıla bilən), toplu əməliyyatlar, sətir üzrə ⋮ menyusu, boş vəziyyət (empty state) mesajı + ilk addım təklifi.
Şablon B — Detal (Detail)
┌──────────────────────────────────────────────────────────────────────┐
│ ← Risklər / RSK-2026-0014 │
│ Maliyyə şöbəsində BEC (Business Email Compromise) riski │
│ ● Emal edilir 🔴 Qalıq: 16 (Kritik) Sahib: A.Məmmədova │
│ [Redaktə] [Emal planı] [⋮ Digər] │
├───────────────────────────────────┬──────────────────────────────────┤
│ [Ümumi][Qiymətləndirmə][Emal] │ Əlaqəli obyektlər │
│ [Əlaqələr][Tarixçə][Şərhlər] │ ├ 📋 Nəzarət: CTL-0034, CTL-0056│
│ │ ├ 📄 Siyasət: Email təhlükəsiz. │
│ Təsvir │ ├ 🖥️ Aktiv: Exchange (AST-0012) │
│ ... │ ├ 🎣 Kampaniya: PHC-2026-03 │
│ │ ├ 📎 Sübut: 3 fayl │
│ Təhdid: Sosial mühəndislik │ └ ✅ Tapşırıq: 2 açıq │
│ Zəiflik: İşçi məlumatlılığı │ │
│ │ Metadata │
│ ┌ İlkin ──┐ ┌ Qalıq ──┐ │ Yaradıldı: 12.03.2026 │
│ │ E:4 T:5 │ │ E:4 T:4 │ │ Son baxış: 01.09.2026 │
│ │ = 20 │ │ = 16 │ │ Sonrakı: 01.12.2026 ⚠ 12 gün │
│ └─────────┘ └─────────┘ │ │
└───────────────────────────────────┴──────────────────────────────────┘Şablon C — Sihirbaz (Wizard)
Çox addımlı yaratma: yuxarıda addım göstəricisi (1─2─3─4), hər addımda validasiya, "Geri/İrəli", son addımda tam baxış, "Layihə kimi saxla" hər addımda. İstifadə: risk qiymətləndirmə, fişinq kampaniyası, DLP qaydası, təchizatçı qiymətləndirməsi, audit planı.
Şablon D — İş axını / Təsdiq (Workflow)
Sol: obyektin xülasəsi (dəyişməz); orta: cari mərhələ + tələb olunan fəaliyyət; sağ: iş axını tarixçəsi (timeline: kim, nə vaxt, nə qərar, şərh). Aşağıda: [Təsdiq et] [Düzəliş istə] [Rədd et] + şərh sahəsi (rədd/düzəliş üçün məcburi).
Şablon E — Dashboard
Grid layout, widget-lər, filtr paneli yuxarıda, hər widget-də: başlıq, məlumat aktuallığı, ⋮ menyu (ixrac, cədvəl kimi göstər, gizlət).
8.3 UX prinsipləri (normativ)
| # | Prinsip | Konkret tələb |
|---|---|---|
| U1 | Rola görə naviqasiya | İstifadəçi yalnız icazəsi olan menyu bəndlərini görür |
| U2 | Kritik fəaliyyət önə | Ana səhifədə "Diqqət tələb edən" bloku ən yuxarıda |
| U3 | Status yalnız rənglə deyil | Hər status çipi: rəng + ikon + mətn. Risk matrisi: rəng + rəqəm + naxış |
| U4 | Aydın Azərbaycan dili | Texniki jarqon minimuma; hər texniki termin yanında "?" tooltip izahı |
| U5 | Güclü filtr + saxlanmış görünüş | Hər siyahıda; görünüş paylaşıla bilər (komanda üçün) |
| U6 | Toplu əməliyyatlar | Checkbox seçimi + fəaliyyət paneli; təsdiq dialoqu ilə |
| U7 | Boş vəziyyətlər | "Hələ risk yoxdur. İlk riski əlavə edin" + düymə + qısa izah/video |
| U8 | Təsdiq dialoqları | Geri qaytarıla bilməyən əməliyyatlar üçün; obyektin adını yazmaq (kritik silmə üçün) |
| U9 | Qeyri-destruktiv default | "Sil" heç vaxt birinci düymə deyil; soft delete; "Arxivləşdir" üstünlük |
| U10 | Avtosave | Uzun formalarda (siyasət redaktoru, risk qiymətləndirmə) 30 saniyədə; "Saxlanıldı 14:32" göstəricisi |
| U11 | Qeyd olunmamış dəyişiklik | Səhifədən çıxarkən xəbərdarlıq (beforeunload + router guard) |
| U12 | Accessibility | WCAG 2.2 AA: kontrast ≥4.5:1, fokus göstəricisi, ARIA, skip-link, form label |
| U13 | Klaviatura naviqasiyası | Tab ardıcıllığı, Ctrl+K axtarış, g+t tapşırıqlar, ? qısayol siyahısı, cədvəldə ox düymələri |
| U14 | Responsive | ≥1280 tam, 768–1279 sıxılmış (yan panel gizli), <768 mobil (yalnız əməkdaş səhifələri: təlim, siyasət, tapşırıq, hadisə bildirmə) |
| U15 | Dark mode | Opsional, sistem tənzimləməsinə uyğun |
| U16 | Audit-həssas əməliyyatlarda əsaslandırma | Modal: "Səbəb (məcburi, min 20 simvol)" — ixrac, məxfi baxış, override, deadline uzatma |
| U17 | Yükləmə vəziyyətləri | Skeleton (ilk yükləmə), spinner (fəaliyyət), progress (yükləmə/ixrac) |
| U18 | Xəta mesajları | Nə baş verdi + nə etməli + dəstək üçün korrelyasiya ID |
| U19 | Dil dəyişikliyi | Anında, səhifə yenilənmədən; seçim profildə saxlanılır |
| U20 | Tarix/saat | Qurumun saat qurşağında, dd.MM.yyyy HH:mm formatında; nisbi vaxt tooltip-də ("3 gün əvvəl") |
8.4 Dizayn sistemi
- Komponent kitabxanası: Ayrıca paket (
@etimad/ui), Storybook ilə sənədləşdirilmiş - Token-lər: rəng, tipoqrafiya, boşluq, radius, kölgə — CSS custom properties
- Tipoqrafiya: Azərbaycan hərflərinin (ə, ğ, ı, ö, ş, ü, ç) tam dəstəyi — Inter və ya Noto Sans (offline, lokal hostlanmış)
- Rəng palitrası: Neytral əsas + status rəngləri (uğur/xəbərdarlıq/xəta/məlumat) + təsnifat rəngləri (konfiqurasiya edilə bilən); hamısı WCAG AA kontrast yoxlamasından keçmiş
- İkonlar: Tək dəst (Lucide və ya Phosphor), lokal
- Komponentlər (minimum 40): Button, Input, Select, MultiSelect, DatePicker, DateRangePicker, Textarea, RichTextEditor, Checkbox, Radio, Switch, Table (sort/filter/paginate/select), Card, Modal, Drawer, Tabs, Accordion, Badge/Chip, StatusChip, Alert, Toast, Tooltip, Popover, Breadcrumb, Pagination, Stepper, Timeline, EmptyState, Skeleton, ProgressBar, Avatar, FileUpload, FilePreview, SearchBox, FilterPanel, SavedViews, RiskMatrix, HeatMap, Chart (bar/line/donut/sparkline), DataTable, ConfirmDialog, JustificationDialog, RelatedObjectsPanel, WorkflowTimeline, ClassificationBadge
9. Sistem arxitekturası
9.1 C4 Level 1 — Kontekst diaqramı
graph TB
subgraph "Qurum daxili istifadəçilər"
EMP[Əməkdaş]
MGR[Şöbə müdiri]
GRC[GRC / Təhlükəsizlik mütəxəssisi]
AUD[Daxili auditor]
EXE[Rəhbərlik]
ADM[Platforma administratoru]
end
subgraph "Xarici"
EXT[Xarici auditor]
VND[Təchizatçı nümayəndəsi]
end
ETIMAD[["ETİMAD Platforması<br/>Vahid İT təhlükəsizliyi,<br/>uyğunluq və insan riski<br/>platforması"]]
AD[(Active Directory /<br/>LDAP)]
SMTP[Qurum SMTP /<br/>Exchange]
SIEM[SIEM / SOAR]
DLPV[DLP məhsulları<br/>endpoint / email / şəbəkə]
TCK[Ticketing<br/>Jira / ServiceNow / GLPI]
AV[Antivirus / ICAP]
HR[HR / Kadr sistemi]
CMDB[(Mövcud CMDB<br/>opsional)]
VAULT[Secret Manager<br/>HashiCorp Vault]
NTP[NTP serveri]
EMP --> ETIMAD
MGR --> ETIMAD
GRC --> ETIMAD
AUD --> ETIMAD
EXE --> ETIMAD
ADM --> ETIMAD
EXT -.məhdud, müddətli.-> ETIMAD
VND -.portal, token.-> ETIMAD
ETIMAD -->|LDAPS oxuma| AD
ETIMAD -->|SMTP/TLS| SMTP
ETIMAD -->|syslog CEF / webhook| SIEM
DLPV -->|hadisə push| ETIMAD
ETIMAD -->|qayda paketi| DLPV
ETIMAD <-->|REST| TCK
ETIMAD -->|ICAP skan| AV
HR -.CSV/API.-> ETIMAD
CMDB -.import.-> ETIMAD
ETIMAD --> VAULT
ETIMAD --> NTP9.2 C4 Level 2 — Konteyner diaqramı
graph TB
subgraph DMZ["DMZ Zonası"]
RP[Reverse Proxy / WAF<br/>nginx + ModSecurity]
LAND[Phishing Landing Service<br/>ayrıca, minimal, DB yazma yox]
VPORT[Vendor Portal<br/>opsional, izolyasiya]
end
subgraph APP["Tətbiq Zonası"]
WEB[Web Frontend<br/>React 19 SPA<br/>statik fayllar]
API[ETİMAD API<br/>ASP.NET Core 9<br/>Modular Monolith]
WORKER[Background Worker<br/>Hangfire / özəl]
SCHED[Scheduler<br/>cron işləri]
NOTIF[Notification Service<br/>modul]
REPORT[Report Renderer<br/>PDF/DOCX/XLSX]
MAILER[Phishing Mail Sender<br/>ayrıca proses, rate-limited]
SYNC[AD Sync Service<br/>modul/worker]
GW[DLP Integration Gateway<br/>hadisə qəbulu + qayda paylanması]
end
subgraph IAM["Kimlik Zonası"]
KC[Keycloak<br/>OIDC/SAML IdP]
end
subgraph DATA["Məlumat Zonası"]
PG[(PostgreSQL 16<br/>primary + replica)]
PGA[(PostgreSQL<br/>audit log<br/>ayrı DB/instans)]
REDIS[(Redis<br/>cache + sessiya + kilid)]
MQ[RabbitMQ<br/>mesaj broker]
OS[(OpenSearch<br/>axtarış + log analitika)]
MINIO[(MinIO<br/>S3 obyekt saxlama<br/>sübut/media/fayl)]
VAULT[Vault<br/>secret + KMS]
end
subgraph OBS["Müşahidə"]
PROM[Prometheus]
GRAF[Grafana]
LOKI[Loki / OpenSearch]
TEMPO[Tempo / Jaeger]
end
RP --> WEB
RP --> API
RP --> LAND
RP --> VPORT
WEB --> API
API --> KC
API --> PG
API --> PGA
API --> REDIS
API --> MQ
API --> OS
API --> MINIO
API --> VAULT
WORKER --> PG
WORKER --> MQ
WORKER --> MINIO
LAND -->|yalnız event| MQ
MAILER --> MQ
GW --> MQ
SYNC --> PG
MQ --> WORKER
MQ --> NOTIF
MQ --> GW
API --> PROM9.3 Arxitektura qərarı: Modular Monolith (ADR-001)
Qərar: MVP və Faza 1–3 üçün Modular Monolith, ayrılmış yardımçı servislərlə (landing, mail sender, vendor portal).
| Meyar | Modular Monolith | Microservices | Qərar |
|---|---|---|---|
| On-prem əməliyyat mürəkkəbliyi | Aşağı (3–5 konteyner) | Yüksək (20+ servis, service mesh, distributed tracing) | ✅ MM |
| Komanda ölçüsü (8–9 nəfər) | Uyğun | 2–3 komanda tələb edir | ✅ MM |
| Tranzaksiya bütövlüyü | ACID, sadə | Saga, eventual consistency | ✅ MM (GRC-də konsistentlik kritikdir) |
| Modullararası sorğu (dashboard, əlaqələr) | JOIN ilə sadə | N sorğu, aqreqasiya qatı | ✅ MM |
| Müstəqil scale | Məhdud (bütöv scale) | Yaxşı | ⚠️ Microservices, lakin ehtiyac yoxdur (10k istifadəçi) |
| Deployment | Bir artefakt | Çoxlu pipeline | ✅ MM |
| Texnoloji müxtəliflik | Yox | Var | Lazım deyil |
| Səhv izolyasiyası | Zəif | Güclü | ⚠️ MS — MM-də kritik hissələr ayrılır |
| Gələcək ayırma | Modul sərhədləri saxlanılırsa asan | — | ✅ |
Ayrıca servis kimi çıxarılanlar (əsaslandırma ilə):
| Servis | Səbəb |
|---|---|
| Phishing Landing Service | DMZ-də, internetə yaxın, minimal hücum səthi, əsas DB-yə yazma girişi yox — təhlükəsizlik izolyasiyası |
| Phishing Mail Sender | Ağır I/O, rate limiting, ayrıca resurs və dayandırma imkanı |
| Vendor Portal (əgər xaricə açılırsa) | Autentifikasiyasız xarici giriş — izolyasiya |
| DLP Integration Gateway | Xarici sistemlərdən yüksək həcmli hadisə qəbulu, ayrıca scale |
| Report Renderer | CPU-intensiv PDF/DOCX generasiyası, ayrıca scale və timeout |
| Audit Log Service (məntiqi ayrılıq) | Ayrı DB/rol, ayrı icazələr, ayrı retention |
Modul sərhədlərinin bərkidilməsi (gələcək ayrılma üçün):
src/
Etimad.Api/ # composition root, HTTP
Etimad.Core/ # paylaşılan: user, dept, org, classification (read-only kontrakt)
Etimad.SharedKernel/ # value objects, result, domain event bazası
Modules/
Etimad.Modules.Training/
Domain/ Application/ Infrastructure/ Api/ Contracts/ ← yalnız Contracts publikdir
Etimad.Modules.Phishing/
Etimad.Modules.Policy/
Etimad.Modules.Compliance/
Etimad.Modules.Risk/
Etimad.Modules.Audit/
Etimad.Modules.Evidence/
Etimad.Modules.Asset/
Etimad.Modules.Vendor/
Etimad.Modules.Classification/
Etimad.Modules.Dlp/
Etimad.Modules.Incident/
Etimad.Modules.Workflow/
Etimad.Modules.Identity/
Etimad.Modules.Reporting/
Etimad.Modules.AuditLog/
Services/
Etimad.LandingService/
Etimad.MailSender/
Etimad.ReportRenderer/
Etimad.DlpGateway/Arxitektura testi (CI-də bloklayıcı): Modules.X yalnız Modules.Y.Contracts-a referans verə bilər, Modules.Y.Domain/Infrastructure-a yox. Dövri asılılıq yoxdur. Hər modulun öz DB sxeması var və başqa sxemə birbaşa sorğu etmir (yalnız core view-ları).
9.4 Texnologiya stack-i və əsaslandırma
| Qat | Seçim | Əsaslandırma | Alternativ |
|---|---|---|---|
| Backend | .NET 9 / ASP.NET Core (C#) | Dövlət qurumlarında Windows/AD ekosistemi ilə yaxşı uyğunluq (Kerberos, LDAP, DirectoryServices); güclü tipləndirmə; uzunmüddətli LTS dəstəyi; performans; açıq mənbə (MIT); Linux-da işləyir | Java/Spring Boot (eyni dərəcədə uyğun — komandanın təcrübəsinə görə seçilə bilər) |
| Frontend | React 19 + TypeScript 5 + Vite | Ən geniş ekosistem və kadr bazası; TS tip təhlükəsizliyi | Vue 3, Angular |
| UI | Öz dizayn sistemi (Radix UI primitivləri + Tailwind CSS) | Accessibility hazır (Radix), brendləşdirmə sərbəst, vendor lock-in yox | MUI, Ant Design (daha ağır, dizayn məhdudiyyəti) |
| State | TanStack Query + Zustand | Server state / client state ayrılığı | Redux Toolkit |
| DB | PostgreSQL 16 | Açıq mənbə, JSONB, partisiyalaşdırma, RLS, full-text, güclü on-prem dəstəyi, pgaudit | MSSQL (lisenziya xərci), Oracle (lock-in) |
| ORM | EF Core 9 + Dapper (ağır sorğular) | Miqrasiya, tip təhlükəsizliyi | — |
| Cache/Session | Redis 7 | Sessiya, paylaşılan kilid, rate limiting, cache | Valkey (Redis forku, tam açıq lisenziya) |
| Broker | RabbitMQ 4 | Etibarlı, on-prem sadə, DLQ, routing | Kafka (artıq mürəkkəb bu həcm üçün), NATS |
| Axtarış | OpenSearch 2 | Apache 2.0 lisenziya (Elastic lisenziya problemi yox), AZ analizator | Elasticsearch, Meilisearch (daha sadə, az funksional) |
| Obyekt saxlama | MinIO | S3 uyğun, on-prem, şifrələmə, versiyalaşdırma, WORM (object lock) | Ceph, birbaşa fayl sistemi (versiyalaşdırma/şifrələmə əl ilə) |
| IAM | Keycloak 26 | OIDC/SAML, AD federasiyası, MFA, açıq mənbə, geniş istifadə | ADFS (Windows asılılığı), Authentik, öz realizasiya (tövsiyə olunmur) |
| Secret | HashiCorp Vault (OSS) | Mərkəzi secret, dinamik DB kredensialları, transit şifrələmə (KMS) | OpenBao (Vault forku), Kubernetes Secrets + sops |
| Antivirus | ClamAV + ICAP adapteri | Açıq mənbə, on-prem; qurumun mövcud AV-si varsa ICAP ilə inteqrasiya | Qurumun mövcud həlli |
| Background job | Hangfire (PostgreSQL storage) | Dashboard, retry, cron, on-prem sadə | Quartz.NET |
| PDF/DOCX | QuestPDF (PDF), OpenXML SDK (DOCX/XLSX) | Lisenziya təmiz, server-side, şriftlər lokal | LibreOffice headless (ağır), Aspose (kommersiya) |
| OCR | Tesseract 5 (az/en/rus dil paketləri) | Açıq mənbə | — |
| Monitorinq | Prometheus + Grafana + Loki + Tempo | Açıq mənbə standart | Zabbix (qurumda varsa inteqrasiya) |
| Konteyner | Docker / Podman | ||
| Orkestrasiya | Docker Compose (kiçik) / Kubernetes (HA) | Ölçüyə görə seçim | Nomad |
| CI/CD | GitLab CI (self-hosted) və ya Jenkins | On-prem, air-gapped uyğun | Gitea Actions |
| Artefakt registry | Harbor (self-hosted) | İmza (Cosign), zəiflik skanı (Trivy) | Nexus |
Vendor lock-in qiymətləndirməsi: Bütün komponentlər açıq mənbə (Apache 2.0 / MIT / BSD / MPL) və on-prem işləyir. Heç bir SaaS asılılığı yoxdur. Kommersiya dəstəyi ehtiyacı olarsa hər komponent üçün bazarda bir neçə təchizatçı var.
9.5 Deployment arxitekturası
9.5.1 Variant A — Kiçik quraşdırma (≤ 2 000 istifadəçi, HA yoxdur)
┌─────────────────────────────────────────────────┐
│ VM1 (8 vCPU, 32 GB RAM, 500 GB SSD) │
│ Docker Compose: │
│ nginx, api, worker, keycloak, web(static) │
├─────────────────────────────────────────────────┤
│ VM2 (8 vCPU, 32 GB RAM, 1 TB SSD) │
│ postgres, redis, rabbitmq, opensearch, minio │
├─────────────────────────────────────────────────┤
│ VM3 (2 vCPU, 8 GB, DMZ) │
│ landing-service, mail-sender │
├─────────────────────────────────────────────────┤
│ Backup: NFS/lent, gecə │
└─────────────────────────────────────────────────┘9.5.2 Variant B — HA quraşdırma (tövsiyə olunan, ≥ 2 000 istifadəçi)
graph TB
subgraph "DMZ"
LB[HAProxy / F5<br/>aktiv-passiv]
L1[Landing 1]
L2[Landing 2]
end
subgraph "K8s Cluster — 3 control plane + 4 worker"
subgraph "app namespace"
A1[api pod ×3]
W1[worker pod ×2]
R1[report-renderer ×2]
G1[dlp-gateway ×2]
M1[mail-sender ×1]
end
subgraph "iam namespace"
K1[keycloak ×2]
end
end
subgraph "Data (VM və ya operator)"
PGP[(PG Primary)]
PGS[(PG Standby<br/>streaming repl.)]
PGW[(PG Witness)]
RED[(Redis Sentinel ×3)]
RMQ[RabbitMQ cluster ×3]
OSC[(OpenSearch ×3)]
MIN[(MinIO ×4, erasure coding)]
VLT[Vault ×3 Raft]
end
subgraph "DR saytı"
DRPG[(PG async replica)]
DRMIN[(MinIO replikasiya)]
end
LB --> A1
LB --> L1
LB --> L2
A1 --> PGP
PGP --> PGS
PGP -.async.-> DRPG
MIN -.replikasiya.-> DRMINResurs təxmini (Variant B, 10 000 istifadəçi):
| Komponent | Replika | CPU | RAM | Disk |
|---|---|---|---|---|
| API | 3 | 2 vCPU | 4 GB | — |
| Worker | 2 | 2 vCPU | 4 GB | — |
| Report renderer | 2 | 2 vCPU | 4 GB | — |
| DLP gateway | 2 | 1 vCPU | 2 GB | — |
| Mail sender | 1 | 1 vCPU | 2 GB | — |
| Landing | 2 | 1 vCPU | 1 GB | — |
| Keycloak | 2 | 2 vCPU | 4 GB | — |
| PostgreSQL | 2+1 | 8 vCPU | 32 GB | 1 TB NVMe |
| PostgreSQL (audit) | 2 | 4 vCPU | 16 GB | 2 TB |
| Redis | 3 | 1 vCPU | 4 GB | — |
| RabbitMQ | 3 | 2 vCPU | 4 GB | 100 GB |
| OpenSearch | 3 | 4 vCPU | 16 GB | 500 GB |
| MinIO | 4 | 2 vCPU | 8 GB | 4 × 2 TB |
| Vault | 3 | 1 vCPU | 2 GB | 20 GB |
| Cəmi (təxmini) | ~70 vCPU | ~250 GB RAM | ~12 TB |
9.6 Etibarlılıq nümunələri
| Nümunə | Tətbiq |
|---|---|
| Outbox pattern | Domain event-lər DB tranzaksiyası ilə eyni anda outbox cədvəlinə yazılır, ayrıca proses RabbitMQ-ya göndərir → hadisə itmir |
| Inbox / idempotency | Hər hadisə message_id ilə; təkrar emal qarşısı alınır |
| Retry + DLQ | Eksponensial gözləmə, 5 cəhd, sonra Dead Letter Queue + alarm |
| Circuit breaker | Xarici sistemlərə (AD, SMTP, SIEM, AV) — Polly |
| Bulkhead | Hər xarici inteqrasiya üçün ayrı connection pool |
| Graceful degradation | AD əlçatmazdırsa: mövcud sessiyalar işləyir, yeni giriş fallback ilə; OpenSearch əlçatmazdırsa: axtarış DB-yə fallback (məhdud); SIEM əlçatmazdırsa: hadisələr buferlənir |
| Health checks | /health/live (proses), /health/ready (asılılıqlar), hər asılılıq üçün ayrı status |
| Optimistic concurrency | row_version / xmin; HTTP 412 Precondition Failed |
| Distributed lock | Redis (Redlock) — planlaşdırılmış işlərin təkrarlanmaması üçün |
10. Təhlükəsizlik arxitekturası
10.1 Etibar sərhədləri (Trust Boundaries)
┌── TB1: İnternet / Xarici şəbəkə ──────────────────────────────┐
│ Xarici auditor, təchizatçı, phishing hədəfləri (email) │
└───────────────────────────┬───────────────────────────────────┘
▼ HTTPS, TLS 1.3, WAF, rate limit
┌── TB2: DMZ ───────────────────────────────────────────────────┐
│ Reverse proxy / WAF | Landing service | Vendor portal │
│ • Əsas DB-yə yazma girişi YOX │
│ • Yalnız mesaj növbəsinə write-only bağlantı │
└───────────────────────────┬───────────────────────────────────┘
▼ mTLS, ayrıca şəbəkə seqmenti, firewall allowlist
┌── TB3: Tətbiq zonası ─────────────────────────────────────────┐
│ API | Worker | Renderer | Gateway | Keycloak │
│ • Autentifikasiya + avtorizasiya burada │
│ • Secret-lər Vault-dan runtime-da │
└───────────────────────────┬───────────────────────────────────┘
▼ TLS, ayrı DB istifadəçiləri, şəbəkə siyasəti
┌── TB4: Məlumat zonası ────────────────────────────────────────┐
│ PostgreSQL | Audit DB | Redis | MQ | OpenSearch | MinIO | Vault│
│ • Şifrələnmiş at-rest │
│ • Audit DB ayrıca rol və icazələrlə │
└───────────────────────────────────────────────────────────────┘
▲ LDAPS/SMTP/syslog — çıxış allowlist
┌── TB5: Qurum infrastrukturu ──────────────────────────────────┐
│ AD | Exchange | SIEM | DLP məhsulları | Backup │
└───────────────────────────────────────────────────────────────┘10.2 Təhlükəsizlik nəzarətləri (OWASP ASVS L2 əsasında)
| Kateqoriya | Nəzarət | Realizasiya | ASVS |
|---|---|---|---|
| Nəqliyyat | TLS 1.2+ (1.3 üstünlük), güclü şifr dəstələri, HSTS (max-age 1 il, preload) | nginx konfiqurasiyası, sertifikat qurumun PKI-sindən | 9.1 |
| Daxili trafik mTLS | Servis-servis, xüsusilə gateway ↔ konnektorlar | 9.2 | |
| Şifrələmə (rest) | DB: TDE və ya disk səviyyəsində LUKS; sütun səviyyəsində: həssas sahələr (pgcrypto və ya tətbiq səviyyəsində AES-256-GCM, açar Vault Transit-dən) | 6.2 | |
| Fayl: MinIO SSE-KMS, envelope encryption, hər fayl üçün ayrı DEK | 6.2 | ||
| Backup: şifrələnmiş, ayrı açar | 6.2 | ||
| Açar idarəetməsi | Vault: master key Shamir ilə bölünmüş, auto-unseal HSM ilə (mövcuddursa); açar rotasiyası: DEK illik, KEK 2 illik; köhnə açarlar deşifrə üçün saxlanılır | 6.4 | |
| Autentifikasiya | OIDC/SAML SSO; MFA imtiyazlı rollar üçün məcburi; lokal parollar Argon2id (m=64MB, t=3, p=4) | Keycloak | 2.1–2.9 |
| Brute-force: 5 uğursuz cəhd → 15 dəq kilid (istifadəçi), IP əsaslı rate limit, CAPTCHA (3-cü cəhddən) | 2.2 | ||
| Sessiya: HttpOnly + Secure + SameSite=Strict cookie və ya Authorization header; idle 30 dəq, mütləq 12 saat; girişdə sessiya ID yenilənir | 3.x | ||
| Step-up auth: məxfi məzmun, DLP L2, konfiqurasiya dəyişikliyi | 2.8 | ||
| Avtorizasiya | Hər endpoint-də açıq siyasət (default deny); obyekt səviyyəsində yoxlama (BOLA qarşı); field-level filtrasiya | Policy-based authorization | 4.x |
| Giriş validasiyası | Sxem əsaslı validasiya (FluentValidation); allowlist yanaşması; tip/uzunluq/format | 5.1 | |
| SQL injection | Yalnız parametrləşdirilmiş sorğular; EF Core; dinamik SQL qadağan (lint qaydası) | 5.3 | |
| XSS | React avtomatik escape; dangerouslySetInnerHTML yalnız sanitizasiyadan sonra (DOMPurify); CSP: default-src 'self'; script-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self' | 5.3 | |
| CSRF | SameSite=Strict + anti-forgery token (dəyişdirici sorğularda) + Origin/Referer yoxlaması | 4.2 | |
| SSRF | Xarici URL çağırışları allowlist ilə (tracking domen, SIEM, ticketing); DNS rebinding müdafiəsi; daxili IP aralıqlarına (RFC1918, link-local, metadata 169.254.169.254) çıxış qadağan; redirect izlənmir | 5.2 | |
| Fayl yükləmə | §4.7.5 S1–S12 | 12.x | |
| Deserializasiya | JSON yalnız; polimorf deserializasiya qadağan; System.Text.Json strict | 5.5 | |
| Secure headers | X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: same-origin, Permissions-Policy, Cross-Origin-Opener-Policy: same-origin, Cross-Origin-Resource-Policy: same-site | 14.4 | |
| Rate limiting | Anonim: 20 req/dəq/IP; autentifikasiyalı: 300 req/dəq/istifadəçi; ağır endpoint-lər (ixrac, hesabat): 10/saat; landing: 60/dəq/IP | Redis token bucket | 13.x |
| Loglama | Struktur (JSON), korrelyasiya ID; həssas məlumat maskalanır (parol, token, FİN, kart, məxfi məzmun) — mərkəzi SensitiveDataRedactor | 7.x | |
| Xəta idarəetməsi | Ümumi xəta mesajı + korrelyasiya ID; stack trace heç vaxt klientə getmir | 7.4 | |
| API təhlükəsizliyi | OpenAPI sxemi məcburi validasiya; versiyalaşdırma; yalnız lazım olan HTTP metodları | OWASP API Top 10 | |
| Bağımlılıqlar | SCA (Trivy/Dependabot), SBOM (SPDX/CycloneDX), yalnız təsdiqlənmiş daxili registry-dən | 14.2 | |
| Konteyner | Distroless/chiseled image, non-root user, read-only filesystem, capabilities drop, seccomp, image imzası (Cosign), Trivy skanı CI-də bloklayıcı | 14.x | |
| Secret | Kodda secret yoxdur (gitleaks CI-də); runtime-da Vault-dan; env dəyişənlərində yalnız Vault ünvanı və token | 14.1 |
10.3 Şifrələnən sahələr (field-level encryption)
| Cədvəl.sahə | Səbəb |
|---|---|
dlp_incident.content_sample_encrypted | Ən həssas |
evidence.file_key (DEK wrapped) | Fayl açarı |
ad_connection.bind_password_ref | Vault istinadı (parol özü DB-də deyil) |
sender_profile.smtp_password_ref | Vault istinadı |
api_key.hash | Argon2 hash |
user.personal_notes (varsa) | |
audit_log.previous_value/new_value — həssas sahələr | Maskalanır (şifrələnmir — axtarış üçün) |
edm_index_entry.value_hash | salt+SHA-256 (geri qaytarıla bilməz) |
vendor_portal_token | Hash |
10.4 Müdafiə dərinliyi — kritik aktivlər üzrə
| Aktiv | Qat 1 | Qat 2 | Qat 3 | Qat 4 |
|---|---|---|---|---|
| Məxfi sübut faylı | RBAC (permission) | Obyekt səviyyəsi (sahiblik/skoup) | Təsnifat yoxlaması | Şifrələnmiş saxlama + imzalı URL + audit |
| DLP hadisə məzmunu | RBAC (yalnız security_lead) | Dual approval | Müddətli token (30 dəq) | Şifrələmə + audit + data owner bildirişi |
| Audit log | Yalnız INSERT (tətbiq) | DB rolu + trigger | Hash zənciri | SIEM surəti + WORM arxiv |
| AD servis hesabı | Vault-da | Minimum icazə (read-only, OU məhdud) | LDAPS | Rotasiya + istifadə monitorinqi |
| Fişinq kredensial səhifəsi | Klient JS dəyər göndərmir | Server body oxumur | Log filtri | Ayrıca servis, DB yazma yox |
| Platform konfiqurasiyası | RBAC | Dual control (kritik parametrlər) | Audit | Dəyişiklik bildirişi CISO-ya |
10.5 Təhlükəsiz standart konfiqurasiya (Secure Defaults)
| Parametr | Default |
|---|---|
| Yeni rolun icazələri | Sıfır |
| Yeni obyektin görünürlüyü | Yalnız yaradan + sahib |
| Yeni sənədin təsnifatı | INTERNAL (ən azı) |
| Yeni DLP siyasətinin rejimi | Test |
| AD write-back | Söndürülüb |
| Anonim bildirmə | Aktiv (istifadəçi seçimi) |
| Xarici portal | Söndürülüb |
| API açarının müddəti | 90 gün |
| Parol siyasəti (lokal) | 14+ simvol, kompleks, 90 gün, son 12 təkrar qadağan |
| MFA | İmtiyazlı rollar üçün məcburi |
| Sessiya | 30 dəq idle |
| Fayl yükləmə | Yalnız allowlist tiplər |
| Log səviyyəsi (prod) | Information (Debug qadağan) |
| Xəta detalları | Gizli |
| CORS | Yalnız öz origin |
| Registration | Söndürülüb (yalnız AD) |
11. Active Directory inteqrasiya arxitekturası
11.1 Komponentlər
graph LR
subgraph "ETİMAD"
KC[Keycloak<br/>IdP]
API[ETİMAD API]
SYNC[AD Sync Worker]
CACHE[(Redis<br/>qrup cache)]
DB[(PostgreSQL<br/>core sxemi)]
VLT[Vault]
end
subgraph "Qurum"
DC1[(Domain Controller 1)]
DC2[(Domain Controller 2)]
GC[(Global Catalog)]
end
KC -->|LDAPS 636 - user federation| DC1
KC -.failover.-> DC2
SYNC -->|LDAPS 636 - paged search| DC1
SYNC -.failover.-> DC2
SYNC -->|3268/3269 GC - nested groups| GC
SYNC --> DB
SYNC --> VLT
API --> KC
API --> DB
API --> CACHEDC seçimi: DNS SRV qeydi (_ldap._tcp.dc._msdcs.<domain>) ilə avtomatik kəşf, sağlamlıq yoxlaması ilə failover; statik siyahı da dəstəklənir.
11.2 Autentifikasiya ardıcıllığı (detallı)
1. Brauzer → GET https://etimad.qurum.gov.az/
2. API: sessiya yoxdur → 302 → Keycloak /auth?client_id=etimad-web&...&code_challenge=... (PKCE)
3. Keycloak: Kerberos SPNEGO cəhdi (Faza 2) → uğurlu olmasa forma
4. İstifadəçi: UPN + parol → Keycloak → LDAPS bind DC-yə
5. Bind uğurlu → Keycloak istifadəçi atributlarını çəkir (federation)
6. Rol tələb edirsə → MFA challenge (TOTP/WebAuthn)
7. Keycloak → 302 → /auth/callback?code=...
8. API: code → token exchange (client_secret Vault-dan)
9. API: id_token imzasını yoxlayır (JWKS, cache 1 saat), iss/aud/exp/nonce yoxlanır
10. API: `objectGUID` (claim: `etimad_guid`) ilə lokal `users` qeydini tapır
• tapılmasa: "istifadəçi hələ sinxronizasiya olunmayıb" → just-in-time sync tetiklənir
• `is_enabled=false` → giriş rədd edilir (403) + audit
11. API: rolları hesablayır = AD qrup mapping ∪ lokal təyinatlar − bloklananlar
12. API: skoupları hesablayır (departament ağacı, sahiblik)
13. API: sessiya yaradılır (Redis, sessiya ID yenilənir), cookie qaytarılır
14. Audit: USER_LOGIN_SUCCESS (ip, ua, rollar, mfa_used)Token tərkibi (access token, JWT):
{
"sub": "b3f1...guid", "upn": "elnur.m@qurum.gov.az",
"etimad_uid": 4821, "dept": "IT-SEC", "org": 1,
"roles": ["employee","dlp_analyst"],
"amr": ["pwd","otp"], "auth_time": 1757840000,
"exp": ..., "iat": ..., "jti": "..."
}Səlahiyyətlər (permissions) token-də daşınmır — çox olduğuna və dəyişkən olduğuna görə. API hər sorğuda Redis-dən keşlənmiş effektiv icazə dəstini oxuyur (TTL 5 dəq, rol dəyişikliyində invalidasiya).
11.3 Sinxronizasiya alqoritmi (pseudokod)
async Task SyncAsync(SyncMode mode) {
var conn = await vault.GetLdapCredentialsAsync(); // parol heç vaxt DB-də deyil
using var ldap = LdapFactory.ConnectSecure(conn); // LDAPS, sertifikat yoxlanır
var filter = mode == Full
? "(&(objectClass=user)(objectCategory=person))"
: $"(&(objectClass=user)(objectCategory=person)(uSNChanged>={_lastUsn}))";
var results = ldap.PagedSearch(baseDn: config.UserSearchBase, filter, pageSize: 500,
attrs: config.MappedAttributes);
var report = new SyncReport();
foreach (var batch in results.Chunk(200)) {
using var tx = db.BeginTransaction();
foreach (var entry in batch) {
if (IsServiceAccount(entry)) { report.Skipped++; continue; } // SPN / OU filtri
var dto = Map(entry, config.AttributeMappings);
var existing = await db.Users.FindByExternalIdAsync(dto.ObjectGuid);
if (existing is null) { await CreateUser(dto); report.Created++; Emit(new UserCreated(dto)); }
else if (HasChanges(existing, dto)) {
var changes = Diff(existing, dto);
await UpdateUser(existing, dto); report.Updated++;
foreach (var ev in DeriveEvents(changes)) Emit(ev); // DepartmentChanged, ManagerChanged, GroupsChanged, Disabled
}
await auditLog.WriteAsync(AD_USER_UPDATED, ...);
}
await tx.CommitAsync(); // batch-lər müstəqil commit — qismən uğur mümkündür
}
// AD-də artıq olmayanlar (yalnız Full rejimdə)
if (mode == Full) await MarkMissingAsDeleted(seenGuids, report);
_lastUsn = results.HighestUsn;
await NotifyAdminIfErrors(report);
await auditLog.WriteAsync(AD_SYNC_COMPLETED, report);
}Təhlükəsizlik qaydaları:
- Sertifikat yoxlaması məcburi (self-signed üçün ayrıca CA bundle konfiqurasiyası,
TrustAllqadağan) - Bind parolu heç vaxt log edilmir, DB-də saxlanılmır — yalnız Vault istinadı
- LDAP injection: bütün filtr parametrləri escape edilir (
RFC 4515) - Sinxronizasiya zamanı kütləvi dəyişiklik qoruyucusu: bir işdə istifadəçilərin >20%-i deaktiv/silinəcəksə → iş dayandırılır, administrator təsdiqi tələb olunur (AD-də səhv və ya hücum əlaməti)
11.4 Təşkilati strukturun modelləşdirilməsi
AD OU ağacı ETİMAD modeli
DC=qurum,DC=gov,DC=az → Organization (id=1, "Qurum")
└ OU=Mərkəzi Aparat → OrganizationalUnit (parent=null)
└ OU=İnformasiya Texnologiyaları → OrganizationalUnit
└ OU=Təhlükəsizlik şöbəsi → Department (+ OU)
└ OU=Regional → OrganizationalUnit
└ OU=Gəncə → OrganizationalUnit (+ Organization=2 opsional)Departmenthəm ADdepartmentatributundan, həm OU-dan yaradıla bilər (konfiqurasiya: hansı mənbə üstündür)- Ağac dərinliyi limitsiz; skoup hesablanması
ltree(PostgreSQL) və ya materialized path ilə — "alt ağac" sorğusu O(1) - Regional qurumlar üçün
organization_idayrılığı: mərkəzi aparat regionların məlumatını görə bilər (konfiqurasiya), region yalnız özününkünü
11.5 Fallback və kəsilmə ssenariləri
| Ssenari | Davranış |
|---|---|
| AD tam əlçatmazdır | Mövcud sessiyalar işləyir (Redis-dəki kontekstlə); yeni giriş: lokal fallback hesabları (əgər aktivdirsə) və break-glass; banner: "AD əlçatmazdır, məhdud rejim"; sinxronizasiya növbəyə alınır |
| Bir DC əlçatmazdır | Avtomatik failover, alarm |
| Keycloak əlçatmazdır | Giriş mümkün deyil; mövcud sessiyalar token müddəti bitənə qədər (15 dəq) işləyir; HA-da 2 replika |
| Sinxronizasiya xətası | Qismən nəticə saxlanılır, xətalar hesabatda, administrator bildirişi, növbəti dövrdə təkrar |
| Atribut boşdur (məs. email) | İstifadəçi yaradılır, notification_capable=false işarəsi, hesabatda qeyd |
| Şəbəkə gecikməsi | Timeout 30 s, 3 retry, circuit breaker (5 ardıcıl xəta → 5 dəq açıq) |
11.6 Qəbul meyarları (§4.14.12-ni tamamlayır)
- Sertifikat yoxlaması söndürülə bilməz (konfiqurasiya parametri yoxdur).
- Kütləvi dəyişiklik qoruyucusu >20% deaktivləşdirmə cəhdində işi dayandırır.
- LDAP filtr parametrləri escape edilir (injection testi).
- DC əlçatmaz olduqda ikinci DC-yə keçid ≤ 10 saniyə.
ltreeskoup sorğusu 5 səviyyəli, 200 şöbəli ağacda ≤ 50 ms.
12. Məlumat təsnifatı və DLP arxitekturası
12.1 Ümumi mənzərə
graph TB
subgraph "ETİMAD — Policy Authority (nəzarət müstəvisi)"
TAX[Təsnifat taksonomiyası<br/>M10]
SDT[Həssas məlumat tipləri<br/>+ detection rules<br/>M11]
POL[DLP siyasətləri<br/>+ qaydalar<br/>M12]
BUNDLE[Qayda paketi generatoru<br/>imzalanmış JSON]
INC[Hadisə idarəetməsi<br/>M13]
EXC[İstisnalar]
end
subgraph "DLP Integration Gateway"
DIST[Paylanma API]
ING[Hadisə qəbulu]
NORM[Normalizasiya + dedupe]
ENR[Zənginləşdirmə<br/>AD / təsnifat / aktiv]
end
subgraph "İcra müstəvisi (3-cü tərəf və ya daxili)"
EP[Endpoint agent]
MAIL[Email gateway /<br/>Exchange transport rules]
PROXY[Web proxy / ICAP]
NET[Şəbəkə DLP]
FS[Fayl server skaneri]
SELF[ETİMAD daxili icra<br/>ixrac / yükləmə]
end
TAX --> POL
SDT --> POL
POL --> BUNDLE
EXC --> BUNDLE
BUNDLE --> DIST
DIST -->|pull, imza yoxlaması| EP
DIST --> MAIL
DIST --> PROXY
DIST --> SELF
EP -->|hadisə| ING
MAIL --> ING
PROXY --> ING
NET --> ING
FS --> ING
SELF --> ING
ING --> NORM --> ENR --> INC
INC -.FP geri əlaqə.-> SDT12.2 Qayda paketi (Rule Bundle) formatı
{
"bundleVersion": "2026.09.14-003",
"generatedAt": "2026-09-14T08:00:00Z",
"connectorId": "endpoint-agent-prod",
"classificationLevels": [
{ "code": "CONFIDENTIAL", "order": 4, "label": "MƏXFİ", "color": "#E8590C" }
],
"dataTypes": [
{ "code": "AZ_FIN", "patterns": [ {"type":"regex","value":"\\b[A-Z0-9]{7}\\b"} ],
"requireContext": ["FİN","şəxsiyyət"], "contextWindow": 50,
"minOccurrence": 5, "exclusions": ["1234567","0000000"],
"baseConfidence": 40 }
],
"rules": [
{ "id": "DLP-001", "priority": 10, "mode": "enforce",
"conditions": { "classification": ["CONFIDENTIAL","TOP_SECRET"],
"channel": ["email"], "destination": {"type":"external"} },
"exceptions": [ {"type":"domain","values":["partner.gov.az"],"expiresAt":"2026-12-31"} ],
"actions": ["block","create_incident","notify_security"],
"userMessage": { "az":"Bu əməliyyat təhlükəsizlik siyasətinə görə bloklandı...",
"en":"...", "ru":"..." } }
],
"signature": { "alg":"RS256", "keyId":"etimad-dlp-2026", "value":"..." }
}Paylanma modeli: pull (agent 5 dəqiqədən bir If-None-Match ilə soruşur) — push firewall problemlərinə görə istifadə olunmur. Agent imzanı yoxlayır; yoxlama uğursuzdursa köhnə paketlə davam edir və alarm göndərir.
12.3 ETİMAD-ın öz daxili DLP icrası (Faza 1-dən mövcud)
Platforma öz məlumatını özü qoruyur — 3-cü tərəf agentindən asılı olmadan:
| Nəzarət | Realizasiya | Faza |
|---|---|---|
| İxracın məhdudlaşdırılması | Təsnifat səviyyəsinə görə: CONFIDENTIAL+ obyektlərin toplu ixracı əlavə icazə + səbəb tələb edir | 1 |
| İxrac həcmi | >1000 sətir → səbəb; >10000 → təsdiq | 1 |
| Sübut yükləməsi | Ayrıca icazə, imzalı URL, audit, su nişanı | 1 |
| Ekran nüsxəsi xəbərdarlığı | Məxfi səhifələrdə banner + istifadəçi adı su nişanı (vizual) | 2 |
| Kopyalama məhdudiyyəti | Məxfi məzmun sahələrində user-select məhdudiyyəti (zəif nəzarət, xəbərdarlıq xarakterli) | 2 |
| Yükləmə sürəti limiti | İstifadəçi başına saatlıq fayl/həcm limiti | 1 |
| Anomal davranış | Qısa müddətdə çoxlu məxfi obyekt baxışı → alarm | 3 |
| Fayl etiketi | İxrac olunan hər fayla təsnifat metadata + vizual etiket | 3 |
12.4 Detection engine (daxili)
Fayl/mətn → Tip təyini (magic bytes) → Ekstraksiya
├ Office (OpenXML) → mətn + metadata
├ PDF → mətn qatı; yoxdursa → OCR
├ Şəkil → OCR (Tesseract az+en+rus)
├ Arxiv → rekursiv (dərinlik ≤3, ölçü limiti)
└ Düz mətn / CSV
▼
Normalizasiya (unicode NFC, boşluqlar)
▼
┌──── Paralel qayda icrası ────┐
│ regex | keyword | dictionary │
│ checksum | EDM | fingerprint │
└──────────────┬───────────────┘
▼
Kontekst/yaxınlıq qiymətləndirməsi
▼
İstisnaların tətbiqi (yol, domen, qrup)
▼
Confidence hesablanması (§4.11.3)
▼
Nəticə: [ {dataType, count, confidence, offsets} ]
▼
Maskalama (saxlanılan nümunə üçün)Performans: ≤ 10 MB fayl üçün ≤ 3 saniyə (OCR olmadan); OCR ilə səhifə başına ≤ 2 saniyə; asinxron (növbə ilə), nəticə hazır olduqda bildiriş.
12.5 Məlumat minimallaşdırılmasının texniki təminatı
| Qat | Mexanizm |
|---|---|
| Qəbul | Konnektorlar default olaraq məzmun göndərmir — yalnız contentRef (öz saxlamalarındakı istinad) |
| Saxlama | Məzmun nümunəsi gəlirsə: ayrıca şifrələnmiş sütun, ayrıca açar (Vault Transit), sadəcə dlp_content rolu oxuya bilir |
| Maskalama | SensitiveDataMasker — hər SensitiveDataType üçün maska şablonu; serverdə tətbiq olunur (klientə maskalanmamış heç vaxt getmir) |
| Giriş | L2 üçün: sorğu → ikinci təsdiq → müddətli token (JWT, 30 dəq, scope=dlp:content:{incidentId}) → hər oxuma audit |
| Silinmə | Retention: məzmun nümunəsi 90 gün, sonra avtomatik silinir (metadata qalır) |
| İxrac | Məzmun heç vaxt ixrac edilmir; hesabatlarda yalnız metadata |
| Log | contentSample sahəsi log serializatorunda daimi [REDACTED] |
12.6 Qəbul meyarları
- Qayda paketi imzalanır; imzasız/səhv imzalı paket agent tərəfindən qəbul edilmir.
- Konnektordan gələn hadisədə
contentSampledoldurulubsa və konnektor üçün icazə verilməyibsə — sahə atılır və xəbərdarlıq loglanır. - Maskalanmamış məzmun heç bir API cavabında (L2 istisna olmaqla) görünmür — avtomatlaşdırılmış test.
- Məzmun nümunəsi 90 gündən sonra avtomatik silinir; metadata qalır.
- Daxili detection engine 10 MB DOCX faylını ≤ 3 saniyədə emal edir.
- Şifrələnmiş arxiv (parol qoyulmuş ZIP) açıla bilmədikdə hadisə "təhlil edilə bilmədi" statusu ilə yaradılır (səssiz keçilmir).
13. Verilənlər bazası və ERD
13.1 Ümumi konvensiyalar (bütün cədvəllər üçün normativ)
| Konvensiya | Qayda |
|---|---|
| Adlandırma | snake_case, cəm olmayan tək isim (risk, control, training_assignment) |
| Primary key | id BIGINT GENERATED ALWAYS AS IDENTITY (daxili) + public_id UUID (xarici/API) və ya code VARCHAR (RSK-2026-0014) |
| Sxemlər | Modul üzrə: core, training, phishing, policy, compliance, risk, audit, evidence, asset, vendor, classification, dlp, incident, workflow, auditlog |
| Audit sahələri | created_at TIMESTAMPTZ NOT NULL DEFAULT now(), created_by BIGINT, updated_at TIMESTAMPTZ, updated_by BIGINT — hər cədvəldə |
| Soft delete | deleted_at TIMESTAMPTZ NULL, deleted_by BIGINT, deletion_reason TEXT — bütün biznes cədvəllərində. Bütün sorğular WHERE deleted_at IS NULL (EF global query filter). İstisna: auditlog.* (silinmir), lookup cədvəlləri |
| Optimistic locking | row_version (xmin və ya INTEGER sütun) — ETag kimi API-də |
| Tenant/scope | organization_id BIGINT NOT NULL — bütün biznes cədvəllərində; department_id — skoup tələb edən cədvəllərdə |
| Ownership | owner_user_id BIGINT — skoup hesablanması üçün |
| Classification | classification_level_id BIGINT NULL — təsnif edilə bilən obyektlərdə |
| Versiyalaşdırma | Ayrıca *_version cədvəli (sənəd, siyasət, DLP qaydası, sxem) və ya valid_from/valid_to (mapping, təyinat) |
| Status | VARCHAR(40) + CHECK constraint (enum deyil — miqrasiya rahatlığı üçün) + lookup cədvəli (lokalizasiya üçün) |
| Zaman | Həmişə TIMESTAMPTZ, UTC-də saxlanılır; UI-da qurumun zonasında |
| JSON | JSONB + GIN indeks (konfiqurasiya, əlavə metadata) |
| Mətn axtarışı | tsvector sütunu + GIN indeks (AZ konfiqurasiyası) və ya OpenSearch |
| Partisiyalaşdırma | auditlog.audit_log (aylıq RANGE), phishing.phishing_event (kampaniya üzrə HASH və ya aylıq), dlp.dlp_incident (aylıq) |
| Referensial bütövlük | FK-lar açıq; ON DELETE RESTRICT (soft delete istifadə olunduğuna görə); lookup-lara ON DELETE RESTRICT |
| İndekslər | Hər FK-da; status + tarix kombinasiyalarında; WHERE deleted_at IS NULL qismən indekslər |
| Row Level Security | dlp.dlp_incident, evidence.evidence, auditlog.audit_log üçün PostgreSQL RLS əlavə müdafiə qatı kimi (tətbiq səviyyəsi əsasdır) |
13.2 Əsas ERD — Nüvə (core)
erDiagram
ORGANIZATION ||--o{ ORGANIZATIONAL_UNIT : has
ORGANIZATIONAL_UNIT ||--o{ ORGANIZATIONAL_UNIT : parent
ORGANIZATIONAL_UNIT ||--o{ DEPARTMENT : contains
DEPARTMENT ||--o{ USER : employs
USER ||--o{ USER : manages
USER }o--o{ GROUP : member_of
USER }o--o{ ROLE : assigned
ROLE }o--o{ PERMISSION : grants
GROUP ||--o{ ROLE_MAPPING : maps_to
ROLE_MAPPING }o--|| ROLE : produces
ORGANIZATION {
bigint id PK
varchar code
varchar name_az
varchar name_en
bigint parent_organization_id FK
boolean is_active
}
ORGANIZATIONAL_UNIT {
bigint id PK
bigint organization_id FK
bigint parent_id FK
ltree path "skoup sorğuları üçün"
varchar name_az
varchar ad_dn "AD distinguishedName"
int level
}
DEPARTMENT {
bigint id PK
bigint organization_id FK
bigint organizational_unit_id FK
varchar code
varchar name_az
bigint manager_user_id FK
boolean is_active
}
USER {
bigint id PK
uuid public_id
uuid external_id "AD objectGUID - UNIQUE"
varchar external_sid
varchar upn "UNIQUE"
varchar username
varchar email
varchar display_name
varchar first_name
varchar last_name
varchar job_title
bigint department_id FK
bigint organizational_unit_id FK
bigint manager_user_id FK
varchar locale "az|en|ru"
boolean is_enabled
boolean is_privileged
boolean is_service_account
boolean is_local_account
timestamptz last_login_at
timestamptz ad_synced_at
timestamptz deleted_at
}
ROLE {
bigint id PK
varchar key "UNIQUE - employee, dlp_analyst..."
varchar name_az
boolean is_system "silinə bilməz"
boolean requires_mfa
boolean requires_attestation
}
PERMISSION {
bigint id PK
varchar key "module:action - risk:read"
varchar module
varchar action
varchar description_az
}13.3 ERD — Uyğunluq və risk
erDiagram
FRAMEWORK ||--o{ FRAMEWORK_VERSION : has
FRAMEWORK_VERSION ||--o{ DOMAIN : contains
DOMAIN ||--o{ REQUIREMENT : contains
REQUIREMENT ||--o{ CONTROL_MAPPING : mapped
CONTROL ||--o{ CONTROL_MAPPING : maps
CONTROL ||--o{ CONTROL_ASSESSMENT : assessed
CONTROL ||--o{ CONTROL_TEST : tested
CONTROL }o--o{ EVIDENCE : evidenced
CONTROL }o--o{ RISK : mitigates
CONTROL }o--o{ DOCUMENT : documented_by
CONTROL }o--o{ ASSET : applies_to
SOA_VERSION ||--o{ SOA_ITEM : contains
SOA_ITEM }o--|| REQUIREMENT : covers
RISK ||--o{ RISK_ASSESSMENT : history
RISK ||--o{ RISK_TREATMENT : treated
RISK ||--o{ RISK_ACCEPTANCE : accepted
RISK }o--o{ ASSET : affects
CONTROL {
bigint id PK
varchar code "CTL-0001 UNIQUE"
bigint organization_id FK
varchar title_az
text description
varchar control_type "preventive|detective|corrective|deterrent|compensating"
varchar nature "manual|automated|hybrid"
varchar frequency
varchar applicability "applicable|not_applicable"
text applicability_justification
varchar implementation_status
int implementation_percentage
text implementation_description
bigint owner_user_id FK
bigint operator_user_id FK
bigint reviewer_user_id FK
varchar effectiveness
int effectiveness_score
text test_procedure
date last_test_date
varchar last_test_result
text gap_description
int maturity_level
date last_review_date
date next_review_date
int row_version
}
CONTROL_MAPPING {
bigint id PK
bigint control_id FK
bigint requirement_id FK
varchar coverage "full|partial|supporting"
text rationale
bigint mapped_by FK
timestamptz valid_from
timestamptz valid_to "NULL = aktiv"
}
RISK {
bigint id PK
varchar code "RSK-2026-0014 UNIQUE"
bigint organization_id FK
bigint department_id FK
varchar title
text description
bigint category_id FK
varchar source
varchar business_process
text threat
varchar threat_source
text vulnerability
int inherent_likelihood
int inherent_impact_c
int inherent_impact_i
int inherent_impact_a
int inherent_impact_legal
int inherent_impact_financial
int inherent_impact_reputational
int inherent_score
varchar inherent_level
decimal control_effectiveness
boolean effectiveness_manual_override
int residual_likelihood
int residual_score
varchar residual_level
int target_score
date target_date
bigint risk_owner_id FK
bigint treatment_owner_id FK
varchar treatment_option "mitigate|accept|avoid|transfer"
varchar status
boolean is_key_risk
date identified_date
date last_review_date
date next_review_date
int row_version
}
RISK_ASSESSMENT {
bigint id PK
bigint risk_id FK
timestamptz assessed_at
bigint assessed_by FK
varchar source "manual|automated_signal|control_change"
jsonb snapshot "bütün skor sahələri"
text rationale
bigint signal_event_id FK
}13.4 ERD — Sənəd, sübut, audit
erDiagram
DOCUMENT ||--o{ DOCUMENT_VERSION : versions
DOCUMENT_VERSION ||--o{ POLICY_ACKNOWLEDGEMENT : acknowledged
DOCUMENT ||--o{ DOCUMENT_APPLICABILITY : applies
DOCUMENT ||--o{ POLICY_EXCEPTION : exceptions
EVIDENCE ||--o{ EVIDENCE_VERSION : versions
EVIDENCE ||--o{ EVIDENCE_ACCESS_LOG : accessed
EVIDENCE_REQUEST }o--|| EVIDENCE : fulfilled_by
AUDIT ||--o{ AUDIT_CHECKLIST_ITEM : checklist
AUDIT ||--o{ AUDIT_FINDING : findings
AUDIT_FINDING ||--o{ CORRECTIVE_ACTION : actions
AUDIT_FINDING ||--|| ROOT_CAUSE_ANALYSIS : rca
DOCUMENT {
bigint id PK
varchar code "POL-0012"
bigint organization_id FK
varchar doc_type "policy|procedure|guideline|standard|instruction|form"
bigint parent_document_id FK
varchar title_az
bigint owner_user_id FK
bigint classification_level_id FK
varchar status
varchar current_version
date effective_date
date review_date
date expiration_date
boolean requires_acknowledgement
boolean requires_quiz
bigint quiz_id FK
timestamptz deleted_at
}
DOCUMENT_VERSION {
bigint id PK
bigint document_id FK
varchar version "2.1"
varchar version_type "major|minor"
text content_html
text change_summary
bigint created_by FK
timestamptz published_at
bigint published_by FK
varchar content_hash "SHA-256 - dəyişməzlik"
boolean is_immutable
}
POLICY_ACKNOWLEDGEMENT {
bigint id PK
bigint document_version_id FK
bigint user_id FK
timestamptz acknowledged_at
int reading_duration_seconds
varchar ip_address
bigint quiz_attempt_id FK
boolean is_valid
}
EVIDENCE {
bigint id PK
varchar code "EVD-2026-00123"
bigint organization_id FK
varchar title
varchar evidence_type
bigint owner_user_id FK
bigint classification_level_id FK
varchar storage_key "MinIO obyekt açarı"
varchar file_name
varchar mime_type
bigint file_size
varchar file_hash "SHA-256"
varchar dek_ref "Vault açar istinadı"
varchar malware_scan_status
timestamptz malware_scanned_at
date collection_date
date valid_from
date valid_until
varchar status
bigint reviewer_user_id FK
timestamptz approved_at
int version_number
timestamptz deleted_at
}
AUDIT_FINDING {
bigint id PK
varchar code "FND-2026-007"
bigint audit_id FK
varchar finding_type "improvement|observation|minor_nc|major_nc"
varchar title
text description
text criteria
bigint control_id FK
bigint risk_id FK
bigint department_id FK
bigint owner_user_id FK
varchar status
date issued_date
date due_date
timestamptz closed_at
bigint verified_by FK
boolean sod_verified "SoD-7 yoxlaması nəticəsi"
}13.5 ERD — DLP və təsnifat
erDiagram
CLASSIFICATION_SCHEME ||--o{ CLASSIFICATION_LEVEL : levels
CLASSIFICATION_LEVEL ||--|| CLASSIFICATION_POLICY : policy
CLASSIFICATION_LEVEL ||--o{ CLASSIFICATION_ASSIGNMENT : assigned
SENSITIVE_DATA_TYPE ||--o{ DETECTION_RULE : rules
DETECTION_RULE ||--o{ DETECTION_PATTERN : patterns
DLP_POLICY ||--o{ DLP_POLICY_VERSION : versions
DLP_POLICY ||--o{ DLP_RULE : rules
DLP_RULE ||--o{ DLP_RULE_CONDITION : conditions
DLP_RULE ||--o{ DLP_RULE_ACTION : actions
DLP_RULE ||--o{ DLP_INCIDENT : triggers
DLP_INCIDENT ||--o{ DLP_INCIDENT_MATCH : matches
DLP_INCIDENT ||--o{ DLP_CONTENT_ACCESS : content_access
DLP_EXCEPTION }o--|| DLP_RULE : excludes
DATASET ||--o{ DATA_FLOW : flows
CLASSIFICATION_LEVEL {
bigint id PK
bigint scheme_id FK
varchar code "CONFIDENTIAL"
int order_index
varchar name_az
varchar color_hex
varchar icon
varchar pattern "accessibility"
varchar visual_label
boolean is_active
}
CLASSIFICATION_ASSIGNMENT {
bigint id PK
varchar object_type "document|evidence|asset|dataset"
bigint object_id
bigint classification_level_id FK
varchar method "manual|suggested|automatic|inherited|bulk"
bigint assigned_by FK
timestamptz assigned_at
text justification
date review_date
boolean is_current
}
DLP_INCIDENT {
bigint id PK
varchar code "DLP-2026-00341"
varchar external_id "konnektor ID - UNIQUE(connector_id, external_id)"
bigint connector_id FK
timestamptz detected_at
timestamptz ingested_at
bigint user_id FK
varchar user_upn_snapshot
bigint department_id FK
bigint manager_user_id FK
varchar device_hostname
inet device_ip "maskalanmış saxlanıla bilər"
varchar channel
varchar destination_type
varchar destination_value_masked
bigint dlp_rule_id FK
bigint classification_level_id FK
int overall_confidence
varchar file_name_masked
varchar file_hash
bigint file_size
varchar severity
int risk_score
varchar action_taken
text user_justification
varchar manager_decision
bigint assigned_analyst_id FK
varchar status
boolean is_false_positive
varchar closure_reason
bigint related_risk_id FK
bigint related_security_incident_id FK
bytea content_sample_encrypted "NULL default"
varchar content_dek_ref
timestamptz content_purge_at "90 gün"
timestamptz triage_due_at
timestamptz resolve_due_at
}
DLP_CONTENT_ACCESS {
bigint id PK
bigint incident_id FK
bigint requested_by FK
text justification
bigint approved_by FK
timestamptz approved_at
timestamptz expires_at
timestamptz first_viewed_at
int view_count
varchar status
}13.6 ERD — İnsan riski və təlim
erDiagram
TRAINING_PROGRAM ||--o{ PROGRAM_ITEM : items
PROGRAM_ITEM }o--|| LESSON : lesson
LESSON ||--o{ LESSON_VERSION : versions
LESSON ||--o{ LESSON_TRANSLATION : translations
TRAINING_CAMPAIGN ||--o{ TRAINING_ASSIGNMENT : assigns
TRAINING_ASSIGNMENT ||--o{ TRAINING_PROGRESS : progress
TRAINING_ASSIGNMENT ||--o{ EXAM_ATTEMPT : attempts
EXAM_ATTEMPT ||--o{ EXAM_ANSWER : answers
EXAM ||--o{ EXAM_QUESTION_POOL : pools
EXAM_QUESTION_POOL }o--o{ QUESTION : draws
TRAINING_ASSIGNMENT ||--o| CERTIFICATE : issues
PHISHING_CAMPAIGN ||--o{ PHISHING_TARGET : targets
PHISHING_TARGET ||--o{ PHISHING_EVENT : events
USER ||--|| HUMAN_RISK_PROFILE : has
HUMAN_RISK_PROFILE ||--o{ HRS_COMPONENT : breakdown
PHISHING_EVENT {
bigint id PK
bigint campaign_id FK
bigint target_id FK
bigint user_id FK
varchar event_type "sent|delivered|opened|clicked|qr_scanned|attachment_opened|data_submitted|reported"
timestamptz occurred_at
varchar user_agent
inet ip_masked "son oktet 0"
int field_count "YALNIZ say - dəyər YOX"
varchar channel
}
HUMAN_RISK_PROFILE {
bigint id PK
bigint user_id FK "UNIQUE"
int score "0-100"
varchar band "low|medium|high|critical"
int phishing_component
int training_component
int dlp_component
int access_component
int positive_component
timestamptz calculated_at
jsonb calculation_inputs "şəffaflıq üçün"
}13.7 Universal cədvəllər
-- Polimorf əlaqələr (§7.2)
CREATE TABLE core.object_link (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
source_type VARCHAR(50) NOT NULL, source_id BIGINT NOT NULL,
target_type VARCHAR(50) NOT NULL, target_id BIGINT NOT NULL,
link_type VARCHAR(30) NOT NULL DEFAULT 'relates_to',
note TEXT, created_by BIGINT NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
deleted_at TIMESTAMPTZ,
UNIQUE (source_type, source_id, target_type, target_id, link_type)
);
CREATE INDEX ix_link_source ON core.object_link (source_type, source_id) WHERE deleted_at IS NULL;
CREATE INDEX ix_link_target ON core.object_link (target_type, target_id) WHERE deleted_at IS NULL;
-- Tapşırıq (universal)
CREATE TABLE workflow.task (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
code VARCHAR(20) UNIQUE NOT NULL,
organization_id BIGINT NOT NULL,
title VARCHAR(300) NOT NULL, description TEXT,
source_module VARCHAR(40) NOT NULL,
source_entity_type VARCHAR(50), source_entity_id BIGINT,
task_type VARCHAR(40) NOT NULL,
owner_user_id BIGINT NOT NULL, reviewer_user_id BIGINT, approver_user_id BIGINT,
delegated_from_user_id BIGINT,
priority VARCHAR(10) NOT NULL DEFAULT 'medium',
status VARCHAR(20) NOT NULL DEFAULT 'open',
due_date TIMESTAMPTZ, sla_hours INT, sla_breached BOOLEAN DEFAULT false,
reminder_schedule JSONB, escalation_chain JSONB,
blocked_by_task_id BIGINT, blocked_reason TEXT,
completion_evidence_id BIGINT, completion_note TEXT,
started_at TIMESTAMPTZ, completed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(), created_by BIGINT,
updated_at TIMESTAMPTZ, updated_by BIGINT, deleted_at TIMESTAMPTZ,
row_version INT NOT NULL DEFAULT 1
);
CREATE INDEX ix_task_owner_status ON workflow.task (owner_user_id, status, due_date)
WHERE deleted_at IS NULL;
-- Audit log (partisiyalaşdırılmış, dəyişməz)
CREATE TABLE auditlog.audit_log (
id UUID NOT NULL, -- UUIDv7
sequence_number BIGINT GENERATED ALWAYS AS IDENTITY,
timestamp_utc TIMESTAMPTZ NOT NULL,
actor_user_id BIGINT, actor_upn VARCHAR(200), actor_display_name VARCHAR(200),
actor_type VARCHAR(20) NOT NULL,
impersonated_by BIGINT,
action VARCHAR(60) NOT NULL,
object_type VARCHAR(50), object_id BIGINT, object_label VARCHAR(300),
module VARCHAR(40),
previous_value JSONB, new_value JSONB,
result VARCHAR(10) NOT NULL, failure_reason TEXT,
ip_address INET, user_agent TEXT, session_id VARCHAR(100), device_id VARCHAR(100),
justification TEXT,
correlation_id UUID, request_id VARCHAR(60),
classification_level_id BIGINT,
prev_hash BYTEA, record_hash BYTEA NOT NULL,
PRIMARY KEY (timestamp_utc, id)
) PARTITION BY RANGE (timestamp_utc);
REVOKE UPDATE, DELETE, TRUNCATE ON auditlog.audit_log FROM PUBLIC;
CREATE TRIGGER trg_audit_immutable BEFORE UPDATE OR DELETE ON auditlog.audit_log
FOR EACH ROW EXECUTE FUNCTION auditlog.raise_immutable();13.8 Statuslar (mərkəzi lookup)
core.status_definition (module, entity_type, status_key, name_az, name_en, name_ru, color, icon, order_index, is_terminal, is_initial) — bütün statuslar burada, UI lokalizasiyası və rəng/ikon buradan gəlir. Kod-da enum yoxdur, sabitlər var.
13.9 Verilənlər bazasının artımı (10 000 istifadəçi, 3 il)
| Cədvəl | Sətir/il | 3 il | Ölçü (təxmini) |
|---|---|---|---|
audit_log | ~150 mln | 450 mln | ~900 GB (partisiyalı, arxivlənən) |
phishing_event | ~1.5 mln | 4.5 mln | ~3 GB |
dlp_incident | ~200 min | 600 min | ~2 GB (+ məzmun ayrıca) |
training_progress | ~2 mln | 6 mln | ~4 GB |
notification | ~5 mln | 15 mln | ~10 GB |
policy_acknowledgement | ~150 min | 450 min | ~0.3 GB |
| Digər biznes cədvəlləri | — | — | ~20 GB |
| DB cəmi (audit istisna) | ~40 GB | ||
| Fayl saxlama (MinIO) | sübut ~50 GB/il, media ~100 GB | ~500 GB |
Arxivləşdirmə strategiyası: audit_log partisiyaları 24 aydan sonra sıxılır (pg_dump + imza) və WORM saxlamaya köçürülür, partisiya DETACH edilir. Bərpa: ATTACH ilə oxu rejimində.
14. API dizaynı
14.1 Ümumi konvensiyalar
| Aspekt | Qayda |
|---|---|
| Stil | REST + JSON. Əsaslandırma: sadə, alətlərlə yaxşı dəstəklənir, on-prem inteqrasiyalar üçün əlverişli, OpenAPI ilə sənədləşdirilir. GraphQL rədd edildi: sahə səviyyəsində avtorizasiya mürəkkəbliyi və audit çətinliyi. |
| Baza URL | https://etimad.qurum.gov.az/api/v1 |
| Versiyalaşdırma | URL-də major (/v1); minor dəyişikliklər geri uyğun. Köhnəlmə: Deprecation + Sunset header-ləri, minimum 12 ay dəstək |
| Format | application/json; charset=utf-8, camelCase sahə adları |
| Tarix | ISO 8601 UTC (2026-09-14T10:22:31Z) |
| ID | API-də public_id (UUID) və ya code (RSK-2026-0014); daxili bigint heç vaxt açıqlanmır |
| HTTP metodları | GET (oxuma, idempotent), POST (yaratma/əməliyyat), PUT (tam əvəzləmə), PATCH (qismən), DELETE (soft delete) |
| Statuslar | 200, 201 (+Location), 202 (asinxron), 204, 400, 401, 403, 404, 409 (konflikt/vəziyyət), 412 (ETag uyğunsuzluğu), 413, 415, 422 (validasiya), 423 (kilidli), 429, 500, 503 |
14.2 Səhifələmə, filtr, sıralama
GET /api/v1/risks?page=2&pageSize=50&sort=-residualScore,code
&filter[level]=high,critical&filter[status]=open
&filter[nextReviewDate][lte]=2026-12-31
&filter[owner]=me&q=BEC&fields=code,title,residualScore,ownerCavab zərfi:
{
"data": [ { "code": "RSK-2026-0014", "title": "...", "residualScore": 16 } ],
"meta": { "page": 2, "pageSize": 50, "totalItems": 327, "totalPages": 7,
"appliedFilters": {...}, "generatedAt": "2026-09-14T10:22:31Z" },
"links": { "self": "...", "next": "...", "prev": "...", "first": "...", "last": "..." }
}- Kursor əsaslı səhifələmə böyük məlumat dəstləri üçün (
audit-logs,phishing/events,dlp-incidents):?cursor=<opaque>&limit=100 - Maksimum
pageSize: 200 (audit log üçün 1000) q— full-text axtarış (OpenSearch);filter[...]— struktur filtr (DB)- Sıralama:
-prefiksi azalan; yalnız allowlist sahələr (SQL injection və performans) fields— sparse fieldsets (cavab ölçüsünün azaldılması)
14.3 Xəta formatı (RFC 9457 Problem Details)
{
"type": "https://etimad.qurum.gov.az/errors/validation-failed",
"title": "Validasiya xətası",
"status": 422,
"detail": "Bir və ya bir neçə sahə düzgün deyil.",
"instance": "/api/v1/risks",
"correlationId": "018f2a1c-7b3e-7c4a-9d2e-1a2b3c4d5e6f",
"errors": [
{ "field": "residualLikelihood", "code": "OUT_OF_RANGE",
"message": "Dəyər 1 ilə 5 arasında olmalıdır.", "messageEn": "..." },
{ "field": "applicabilityJustification", "code": "REQUIRED_WHEN",
"message": "Tətbiq olunmur seçildikdə əsaslandırma məcburidir." }
]
}Mesajlar istifadəçinin dilində (Accept-Language), texniki detal yoxdur, correlationId dəstək üçün.
14.4 Optimistic locking (eyni vaxtda redaktə)
GET /api/v1/policies/POL-0012 → 200, ETag: "W/\"7\""
PUT /api/v1/policies/POL-0012
If-Match: "W/\"7\""
→ 200 (uğur, yeni ETag "W/\"8\"")
→ 412 Precondition Failed (kimsə dəyişdi)
{ "title": "Sənəd dəyişdirilib", "detail": "A.Məmmədova 14:22-də dəyişdi.",
"currentVersion": 8, "diffUrl": "/api/v1/policies/POL-0012/diff?from=7&to=8" }If-Match məcburidir bütün PUT/PATCH sorğularında (yoxdursa 428 Precondition Required).
14.5 Idempotentlik
POST /api/v1/phishing-campaigns/{id}/launch
Idempotency-Key: 018f2a1c-7b3e-7c4a-9d2e-1a2b3c4d5e6f- Tələb olunur: kampaniya başlatma, toplu təyinat, hadisə qəbulu, bildiriş göndərmə, ixrac, ödəniş/təsdiq xarakterli əməliyyatlar
- Server açarı 24 saat saxlayır (Redis); eyni açarla təkrar sorğu → ilk cavab qaytarılır (yeni əməliyyat yoxdur)
- Fərqli body ilə eyni açar → 409 Conflict
- Konnektor hadisələri üçün:
(connectorId, externalId)təbii idempotentlik açarı
14.6 Toplu (bulk) əməliyyatlar
POST /api/v1/training-assignments/bulk
{ "programId": "...", "targets": { "type": "adGroup", "values": ["CN=Finance,..."] },
"dueDate": "2026-10-15", "dryRun": false }
→ 202 Accepted
{ "jobId": "job_01HX...", "estimatedCount": 234,
"statusUrl": "/api/v1/jobs/job_01HX..." }dryRun: true→ heç nə dəyişmir, yalnız təsir sahəsi qaytarılır (bütün toplu əməliyyatlarda məcburi dəstəklənir)- Nəticə:
GET /api/v1/jobs/{id}→{ status, processed, succeeded, failed, errors[] } - Qismən uğur mümkündür; xətalı elementlər ayrıca siyahıda
14.7 Avtorizasiya modeli (API səviyyəsində)
[HttpGet("{code}")]
[RequirePermission("risk:read")] // 1. Modul/əməliyyat səviyyəsi
public async Task<IActionResult> Get(string code) {
var risk = await _repo.GetAsync(code);
if (risk is null) return NotFound();
// 2. Obyekt səviyyəsi (BOLA müdafiəsi) — MƏCBURİ, hər obyekt üçün
var decision = await _authz.AuthorizeAsync(User, risk, Operations.Read);
if (!decision.Succeeded) return Forbid(); // 404 deyil 403 — mövcudluq sızması qəbul edilir,
// həssas obyektlərdə 404 qaytarılır (konfiqurasiya)
// 3. Sahə səviyyəsi filtrasiyası
var dto = _mapper.ToDto(risk, User); // icazəsi olmayan sahələr çıxarılır
return Ok(dto);
}Qayda (normativ): heç bir endpoint AuthorizeAsync(resource) çağırışı olmadan obyekt qaytara bilməz. Bu, arxitektura testi ilə yoxlanılır: hər [RequirePermission] olan action-da ya resource-based authorization, ya da skoup filtri olan repository metodu istifadə olunmalıdır.
Siyahı endpoint-ləri: avtorizasiya sorğuya tətbiq olunur (WHERE şərti), sonra filtrasiya deyil — performans və sızma qarşısı:
var query = _db.Risks.ApplyScope(User); // department subtree, ownership, classification14.8 Xüsusi API nümunələri
Effektiv icazələrin yoxlanması (UI üçün):
GET /api/v1/auth/me/permissions
→ { "permissions": ["risk:read","risk:create","policy:read",...],
"scopes": { "departments": [12,13,14], "organizations": [1] },
"uiCapabilities": { "canApprovePolicy": false, "canViewDlpContent": false } }Obyektin əlaqələri (universal):
GET /api/v1/risks/RSK-2026-0014/related?types=control,policy,evidence,task
→ { "control": [...], "policy": [...], "evidence": [...], "task": [...] }Səbəb tələb edən əməliyyatlar:
POST /api/v1/evidence/EVD-2026-00123/download-url
{ "justification": "Daxili audit AUD-2026-003 üçün sübutun yoxlanması" }
→ 200 { "url": "...", "expiresAt": "...", "auditLogId": "..." }
→ 422 əgər justification < 20 simvolAsinxron hesabat:
POST /api/v1/reports/run { "templateId": "risk-register", "format": "xlsx", "params": {...} }
→ 202 { "runId": "...", "statusUrl": "...", "estimatedSeconds": 45 }
GET /api/v1/reports/runs/{id} → { "status": "completed", "downloadUrl": "...", "rowCount": 327 }14.9 API təhlükəsizliyi (OWASP API Security Top 10)
| Risk | Müdafiə |
|---|---|
| API1 BOLA | §14.7 obyekt səviyyəsində avtorizasiya, arxitektura testi, negative testlər |
| API2 Broken Authentication | OIDC, qısa token, refresh rotasiyası, MFA |
| API3 Broken Object Property Level Authorization | DTO mapping (entity heç vaxt birbaşa qaytarılmır), yazılabilən sahələrin allowlist-i (mass assignment müdafiəsi) |
| API4 Unrestricted Resource Consumption | Rate limit, pageSize limit, sorğu mürəkkəbliyi limiti, fayl ölçüsü limiti, timeout |
| API5 Broken Function Level Authorization | [RequirePermission] hər endpoint-də məcburi (default deny; atribut yoxdursa 403 + startup xəbərdarlığı) |
| API6 Unrestricted Access to Sensitive Business Flows | Kampaniya başlatma, toplu ixrac — əlavə təsdiq və rate limit |
| API7 SSRF | §10.2 |
| API8 Security Misconfiguration | Secure defaults, konfiqurasiya yoxlaması startup-da, CIS benchmark |
| API9 Improper Inventory Management | OpenAPI avtomatik generasiya, köhnə versiyaların açıq sunset planı, sənədləşdirilməmiş endpoint qadağan (CI yoxlaması) |
| API10 Unsafe Consumption of 3rd Party APIs | Xarici cavabların validasiyası, timeout, circuit breaker |
14.10 API sənədləşdirilməsi
- OpenAPI 3.1 avtomatik generasiya (kod → sxem), hər endpoint üçün: təsvir (AZ + EN), tələb olunan icazə, nümunə sorğu/cavab, xəta halları
- Daxili portal: Swagger UI + Redoc (yalnız autentifikasiyalı istifadəçilər)
- Postman/Insomnia kolleksiyası avtomatik ixrac
- Dəyişiklik jurnalı (CHANGELOG) hər relizdə
15. RBAC matrisi
15.1 İcazə modeli — 7 səviyyə
Effektiv giriş = Modul ∧ Əməliyyat ∧ Qeyd ∧ Skoup ∧ Təsnifat ∧ Sahiblik ∧ Sahə| Səviyyə | Nümunə | Realizasiya |
|---|---|---|
| 1. Modul | risk, dlp, evidence | Permission açarının prefiksi |
| 2. Əməliyyat | read, create, update, delete, approve, export, download, preview, assign, override | Permission açarı: risk:approve |
| 3. Qeyd (Record) | Yalnız konkret obyekt | Obyekt səviyyəsində authorization handler |
| 4. Departament / Skoup | Yalnız öz alt ağacı | ltree skoup filtri sorğuda |
| 5. Təşkilat | Yalnız öz regional qurumu | organization_id filtri |
| 6. Təsnifat | CONFIDENTIAL+ üçün ayrıca icazə | classification:view:confidential |
| 7. Sahə (Field) | DLP hadisəsində contentSample | DTO mapping-də icazə yoxlaması |
Skoup tipləri:
| Skoup | Məna |
|---|---|
own | Yalnız istifadəçinin özünə aid (öz təlimi, öz nəticəsi) |
owned | İstifadəçinin sahibi olduğu obyektlər (owner_user_id = me) |
assigned | Təyin olunduğu obyektlər (auditor → audit, analitik → hadisə) |
department | Öz şöbəsi |
department_subtree | Öz şöbəsi + alt şöbələr (ltree <@) |
organization | Öz təşkilatı |
all | Bütün təşkilatlar (yalnız mərkəzi aparat rolları) |
15.2 Rol × Modul icazə matrisi
İşarələr: R oxuma · C yaratma · U redaktə · D silmə (soft) · A təsdiq · X ixrac · — giriş yox Aşağı indeks: ᵒ=own · ᵈ=department_subtree · ᵃ=assigned · ʷ=owned · *=şərtli (bax qeydlər)
| Rol ↓ \ Modul → | Təlim | Fişinq | İnsan riski | Siyasət | Uyğunluq | Risk | Audit | Sübut | Aktiv | Təchizatçı | Təsnifat | DLP siyasət | DLP hadisə | Təhl. hadisə | Tapşırıq | Hesabat | Admin | Audit log |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| employee | Rᵒ | — | Rᵒ | R* | — | — | — | — | — | — | R | — | Rᵒ | C,Rᵒ | RUᵒ | — | — | Rᵒ |
| department_manager | Rᵈ | Rᵈ(aqreqat) | Rᵈ(aqreqat) | R,A* | — | R,Cᵈ | Rᵃ | Rᵈ | Rᵈ | — | R | — | Rᵈ(L0) | Rᵈ | RUAᵈ | Xᵈ | — | Rᵒ |
| training_manager | RCUDA,X | — | R | R | — | — | — | R,C | — | — | R | — | — | — | RCU | X | — | — |
| content_author | RCU(məzmun) | — | — | R | — | — | — | — | — | — | R | — | — | — | RUᵒ | — | — | — |
| phishing_manager | R,C* | RCUD,X | RCU | R | — | R | — | R,C | — | — | R | — | — | R | RCU | X | — | — |
| policy_author | R | — | — | RCUᵒ | R | R | — | R,C | R | — | R | — | — | — | RUᵒ | X | — | — |
| policy_reviewer | R | — | — | R,U*(rəy) | R | R | — | R | R | — | R | — | — | — | RUᵃ | X | — | — |
| policy_approver | R | — | — | R,A | R | R | — | R | R | — | R | — | — | — | RUAᵃ | X | — | — |
| compliance_officer | R,X | R(aqreqat) | R(aqreqat) | RCUDA | RCUDA,X | R,C | R,C | RCUA,X | R,CU | R,C | RCU | R,A | R(statistika) | R | RCUA | X | — | R(uyğunluq) |
| control_owner | R | — | — | R | R,Uʷ | R,C | Rᵃ | R,C,Uʷ | R | — | R | — | — | R | RUᵃ | X | — | — |
| risk_owner | R | — | — | R | R | R,CUʷ | R | R,C | R | R | R | — | — | R | RUᵃ | X | — | — |
| risk_manager | R | R(aqreqat) | R | R | R,U | RCUDA,X | R | R,C | R | R | R | R | R(statistika) | R | RCUA | X | — | — |
| internal_auditor | R,X | R(aqreqat) | R(aqreqat) | R | R,X | R,X | RCUDAᵃ,X | R,X | R | R | R | R | R(statistika) | R | RCUᵃ | X | — | R,X |
| external_auditor | Rᵃ | — | — | Rᵃ | Rᵃ | Rᵃ | Rᵃ | Rᵃ* | Rᵃ | Rᵃ | Rᵃ | — | — | — | Rᵃ | Xᵃ | — | — |
| evidence_owner | R | — | — | R | R | R | Rᵃ | RCUʷ,X | R | — | R | — | — | — | RUᵃ | — | — | — |
| asset_owner | R | — | — | R | R | R,C | — | R,C | R,CUʷ | R | R,U* | — | — | R | RUᵃ | X | — | — |
| data_owner | R | — | — | R | R | R | — | R | R | R | RCUA*(öz) | R,A* | Rᵒ(öz məlumatı) | R | RUAᵃ | X | — | — |
| vendor_manager | R | — | — | R | R | R,C | R | R,C | R | RCUDA,X | R | — | — | R | RCUA | X | — | — |
| dlp_analyst | R | — | R* | R | R | R,C | — | R,C | R | R | R | R | RCUA(L0,L1) | R,C | RCUᵃ | X* | — | — |
| dlp_admin | R | — | — | R | R | R | — | R | R | R | R,U | RCUD | — | R | RUᵃ | X(siyasət) | — | — |
| security_incident_analyst | R | R | R | R | R | R,C | — | R,C | R | R | R | R | R(L0) | RCUDA,X | RCUA | X | — | — |
| security_lead | R,X | RA,X | R,X | R,A | R,X | R,A,X | R | R,X | R | R | R,A | R,A | RA(L0,L1,L2*) | RA,X | RCUA | X | — | R,X |
| executive_viewer | R(aqreqat) | R(aqreqat) | R(aqreqat) | R | R(aqreqat) | R(top) | R(xülasə) | — | R(xülasə) | R(xülasə) | R | — | R(aqreqat) | R(aqreqat) | Rᵒ | X | — | — |
| platform_admin | R(meta) | R(meta) | — | R(meta) | R(meta) | R(meta) | R(meta) | R(meta) | R,CU | R(meta) | R,U* | R(meta) | — | R(meta) | R | R(sistem) | RCUDA | R(sistem) |
| readonly_auditor | R | R | R | R | R | R | R | R | R | R | R | R | R(L0) | R | R | X | R(meta) | R,X |
| break_glass_admin | ⚠️ Tam giriş, lakin: hər əməliyyat alarm yaradır, sessiya 2 saat, məcburi post-mortem |
Kritik qeydlər:
| # | Qayda |
|---|---|
| N1 | employee siyasəti yalnız tətbiq dairəsində və nəşr olunmuş görür |
| N2 | department_manager siyasət təsdiqi yalnız ona açıq təyin edilmiş sənədlərdə |
| N3 | platform_admin DLP hadisə məzmununu və məxfi sübut məzmununu görmür (P8) — yalnız metadata |
| N4 | dlp_admin hadisə məlumatlarına ümumiyyətlə çıxışı yoxdur (SoD-4) |
| N5 | security_lead L2 məzmuna yalnız dual approval + səbəb + müddətli token ilə |
| N6 | external_auditor sübutu yalnız təyin olunmuş audit skoupunda, yükləmə hər dəfə loglanır, hesabı müddətlidir |
| N7 | data_owner yalnız öz məlumat aktivlərinin təsnifatını idarə edir |
| N8 | executive_viewer fərdi nəticələri görmür — yalnız aqreqat |
| N9 | Heç bir rol audit logunu dəyişə/silə bilmir |
| N10 | phishing_manager təlim yarada bilir, lakin yalnız fişinqlə əlaqəli mikro-təlimləri |
| N11 | dlp_analyst ixracı yalnız maskalanmış metadata ilə |
| N12 | Bütün A (təsdiq) əməliyyatları SoD yoxlamasından keçir |
15.3 İcazə açarlarının kataloqu (nümunə — tam siyahı ~280 açar)
# Format: <modul>:<əməliyyat>[:<kvalifikator>]
training:read training:create training:publish
training:assign training:result:read:all training:result:override
phishing:campaign:read phishing:campaign:create phishing:campaign:approve
phishing:campaign:stop phishing:results:individual phishing:results:export
humanrisk:view:own humanrisk:view:department humanrisk:view:all
policy:read policy:create policy:review
policy:approve policy:publish policy:withdraw
policy:acknowledgement:report policy:exception:approve
compliance:control:read compliance:control:create compliance:control:update
compliance:mapping:manage compliance:soa:baseline
compliance:applicability:change
risk:read risk:create risk:update
risk:accept:low risk:accept:medium risk:accept:high risk:accept:critical
risk:matrix:configure risk:signal:approve risk:score:override
audit:plan:manage audit:create audit:checklist:complete
audit:workingpaper:read audit:finding:issue audit:finding:verify
evidence:read evidence:create evidence:preview
evidence:download evidence:approve evidence:delete
evidence:classification:confidential:view
asset:read asset:create asset:criticality:change
vendor:read vendor:create vendor:assessment:approve
classification:read classification:assign classification:downgrade:approve
classification:scheme:manage dataset:manage
dlp:policy:read dlp:policy:create dlp:policy:approve
dlp:policy:mode:change dlp:policy:emergency:disable
dlp:rule:test dlp:datatype:manage dlp:edm:manage
dlp:incident:read dlp:incident:triage dlp:incident:content:l1
dlp:incident:content:l2 dlp:incident:content:l2:approve dlp:incident:export
incident:report incident:read incident:triage incident:close
task:read task:create task:reassign task:complete
workflow:definition:manage notification:template:manage
report:run report:export:large report:schedule
admin:config admin:users admin:roles
admin:integrations admin:featureflags admin:retention
auditlog:read auditlog:read:all auditlog:export15.4 Skoup hesablanması (alqoritm)
public ScopeContext ComputeScope(User user, string module) {
var scope = new ScopeContext();
foreach (var role in user.EffectiveRoles) {
var def = _roleScopes[role.Key][module]; // konfiqurasiya
switch (def.Type) {
case ScopeType.Own:
scope.UserIds.Add(user.Id); break;
case ScopeType.Owned:
scope.OwnershipRequired = true; break;
case ScopeType.Assigned:
scope.AssignedObjectIds.UnionWith(GetAssignments(user, module)); break;
case ScopeType.DepartmentSubtree:
scope.DepartmentPaths.Add(user.Department.Path); // ltree
break;
case ScopeType.Organization:
scope.OrganizationIds.Add(user.OrganizationId); break;
case ScopeType.All:
scope.IsUnrestricted = true; break;
}
scope.MaxClassificationLevel = Math.Max(scope.MaxClassificationLevel,
def.MaxClassification);
}
return scope; // ən geniş skoup qalib gəlir (rollar birləşir)
}
// Sorğuya tətbiq
public IQueryable<T> ApplyScope<T>(this IQueryable<T> q, ScopeContext s) where T : IScopedEntity {
if (s.IsUnrestricted) return q.Where(x => x.ClassificationLevel <= s.MaxClassificationLevel);
return q.Where(x =>
(s.OwnershipRequired && x.OwnerUserId == s.CurrentUserId) ||
s.AssignedObjectIds.Contains(x.Id) ||
s.DepartmentPaths.Any(p => EF.Functions.IsDescendantOf(x.DepartmentPath, p)) ||
s.OrganizationIds.Contains(x.OrganizationId)
).Where(x => x.ClassificationLevel <= s.MaxClassificationLevel);
}15.5 SoD qaydalarının icrası
sod_rule (id, name, rule_type, subject_a, subject_b, scope, enforcement, is_active)rule_type:role_conflict(iki rol bir istifadəçidə) və yaobject_conflict(eyni obyektdə iki fəaliyyət)enforcement:blockvə yawarn_dual_approval- Yoxlama nöqtələri: rol təyinatı, obyekt sahibliyinin təyini, iş axını keçidi (təsdiq), tapşırıq təyinatı
- Pozuntu halında:
block→ 403 +SOD_VIOLATION_BLOCKED;warn→ ikinci administratorun təsdiqi +SOD_OVERRIDE_APPROVED - SoD hesabatı: mövcud pozuntular (məs. konfiqurasiya dəyişdikdən sonra yaranan) — aylıq baxış
15.6 Qəbul meyarları
- Hər endpoint üçün açıq icazə tələbi var; atributsuz endpoint startup-da xəbərdarlıq verir və 403 qaytarır.
- Obyekt səviyyəsində avtorizasiya testləri hər modul üçün mövcuddur (negative testlər prioritetlidir).
platform_adminhesabı ilə məxfi sübut və DLP məzmununa cəhd 403 qaytarır.- Şöbə müdiri qonşu şöbənin obyektini birbaşa ID ilə ala bilmir.
- Rolların birləşməsində ən geniş skoup tətbiq olunur, lakin təsnifat limiti ən yüksək icazəli roldan gəlir (konfiqurasiya ilə ən məhdud da seçilə bilər).
- SoD pozuntusu rol təyinatı zamanı bloklanır və audit logunda görünür.
- İcazə dəyişikliyi ≤ 5 dəqiqə ərzində aktiv sessiyalarda əks olunur (cache invalidasiyası).
16. Audit logging modeli
16.1 Hadisə taksonomiyası
| Qrup | Prefiks | Nümunələr | Retention |
|---|---|---|---|
| Autentifikasiya | AUTH_ | LOGIN_SUCCESS, LOGIN_FAILED, LOGOUT, MFA_*, STEP_UP, SESSION_REVOKED | 24 ay + 7 il arxiv |
| Avtorizasiya | AUTHZ_ | ACCESS_DENIED, SOD_VIOLATION_BLOCKED, SOD_OVERRIDE_APPROVED, PERMISSION_CHECK_FAILED | 24 ay + 7 il |
| Məlumat (CRUD) | <OBJ>_ | RISK_CREATED, POLICY_UPDATED, CONTROL_DELETED | 24 ay + 7 il |
| Baxış | <OBJ>_VIEWED | EVIDENCE_PREVIEWED, DLP_INCIDENT_VIEWED, WORKING_PAPER_VIEWED | 24 ay |
| İxrac | <OBJ>_EXPORTED | RISK_REGISTER_EXPORTED, AUDITLOG_EXPORTED | 24 ay + 7 il |
| Fayl | FILE_ | UPLOADED, DOWNLOADED, MALWARE_DETECTED, INTEGRITY_FAILED | 24 ay + 7 il |
| İcazə | ROLE_, PERM_ | ROLE_ASSIGNED, ROLE_REVOKED, PERMISSION_CHANGED | 7 il |
| Təsdiq | *_APPROVED/REJECTED | POLICY_APPROVED, RISK_ACCEPTED, DLP_POLICY_APPROVED | 7 il |
| Konfiqurasiya | CONFIG_ | CONFIG_CHANGED, FEATURE_FLAG_CHANGED, RETENTION_CHANGED | 7 il |
| İnteqrasiya | INTEGRATION_ | AD_SYNC_*, SIEM_*, CONNECTOR_* | 24 ay |
| API | API_ | API_KEY_ISSUED, API_KEY_REVOKED, API_RATE_LIMITED | 24 ay |
| Sistem | SYSTEM_ | BACKUP_COMPLETED, JOB_FAILED, INTEGRITY_CHECK_FAILED | 24 ay |
16.2 Hansı əməliyyatlar mütləq loglanır (normativ minimum)
✅ Hər autentifikasiya cəhdi (uğurlu/uğursuz) ✅ Hər avtorizasiya rəddi (403) ✅ Hər yaratma/dəyişmə/silmə (köhnə + yeni dəyər) ✅ Həssas obyektlərin baxışı: sübut, DLP hadisə, iş kağızı, audit log, fərdi fişinq nəticəsi, HRS detalı ✅ Hər ixrac və fayl yükləməsi ✅ Hər icazə/rol dəyişikliyi ✅ Hər təsdiq/rədd qərarı ✅ Hər konfiqurasiya dəyişikliyi ✅ Hər inteqrasiya əməliyyatı (sinxronizasiya, hadisə qəbulu) ✅ Hər iş axını keçidi ✅ Hər fövqəladə əməliyyat (emergency stop, emergency disable, break-glass) ✅ Hər avtomatik qərar (risk siqnalı, avtomatik təyinat) — actor_type=system
❌ Loglanmır: parol, token, açar, tam FİN/kart nömrəsi, DLP məzmun nümunəsi, fişinq form dəyərləri, sübut faylının məzmunu
16.3 Dəyər maskalama qaydaları
// AuditValueSanitizer — mərkəzi, hər audit yazısından əvvəl
private static readonly string[] ForbiddenKeys = {
"password","pass","pwd","secret","token","apikey","api_key","privatekey",
"bindPassword","smtpPassword","contentSample","clientSecret","otp","pin","mfaCode"
};
private static readonly (string Type, Func<string,string> Mask)[] PatternMasks = {
("AZ_FIN", v => v[..3] + "****"),
("BANK_CARD", v => "**** **** **** " + v[^4..]),
("IBAN", v => v[..6] + "****" + v[^4..]),
("EMAIL", v => v[..1] + "***@" + v.Split('@')[1]),
};Nəticə: {"password":"[REDACTED]","fin":"AZE****","email":"e***@qurum.gov.az"}
16.4 Bütövlük mexanizmi (detallı)
Yazma (hər sətir):
canonical = JSON(record, sahələr əlifba sırası ilə, whitespace-siz)
record_hash = SHA256( prev_hash || canonical )
prev_hash = əvvəlki sətrin record_hash-ı (sequence_number − 1)
Möhürləmə (hər saat, background job):
seal = { from_seq, to_seq, last_hash, sealed_at, count }
seal_signature = HMAC-SHA256(seal, key_from_vault)
→ auditlog.audit_seal cədvəlinə yazılır
→ SIEM-ə göndərilir (xarici surət)
Yoxlama (gündəlik):
for each seal:
hər sətri yenidən hash-la, zənciri yoxla
sequence_number boşluğu varmı?
seal imzası düzgündürmü?
→ uğursuzluq: CRITICAL alarm + təhlükəsizlik hadisəsi + CISO bildirişiNiyə blockchain deyil: əlavə mürəkkəblik, on-prem əməliyyat yükü, faydası yoxdur. Hash zənciri + xarici surət (SIEM) + WORM arxiv + ayrıca DB rolu praktikada kifayət edən və audit edilə bilən müdafiədir.
16.5 Audit log-un istifadəsi
| İstifadə | Necə |
|---|---|
| İstintaq | Korrelyasiya ID ilə bütün zəncir; istifadəçi üzrə timeline |
| Uyğunluq sübutu | Nəzarət tədbirinə bağlı log çıxarışı → sübut obyekti (M07) |
| Audit | Auditor öz sorğusunu qurur, ixrac edir (ixrac loglanır) |
| Şəffaflıq | İstifadəçi /my/activity-də öz fəaliyyətini görür |
| Anomaliya aşkarlanması (Faza 4) | Qeyri-adi baxış həcmi, iş saatı xarici fəaliyyət, kütləvi ixrac |
| SIEM korrelyasiyası | Real vaxtda CEF axını |
16.6 Performans
- Yazma: asinxron (channel/buffer), fon prosesi toplu INSERT (COPY), itki riski üçün
outboxvə ya sinxron rejim (kritik hadisələr üçün — auth, icazə, təsdiq) - Kritik hadisələr sinxron yazılır — audit yazılmasa əməliyyat da uğursuz sayılır
- Oxuma: partisiyalaşdırma (aylıq), indekslər:
(timestamp_utc, actor_user_id),(object_type, object_id, timestamp_utc),(action, timestamp_utc),correlation_id - Axtarış: OpenSearch-ə paralel indeksləmə (mətn axtarışı üçün), DB həqiqət mənbəyidir
16.7 Qəbul meyarları
- Audit yazısı uğursuz olarsa kritik əməliyyat (təsdiq, icazə dəyişikliyi) də uğursuz olur (atomiklik).
- Hash zənciri gündəlik yoxlanılır; pozuntu kritik alarm yaradır.
- Maskalama testi: audit logunda parol/token/FİN patternləri axtarılır → 0 nəticə.
- 100 mln sətirdə aktor + tarix filtri ≤ 3 saniyə.
- Audit log ixracı özü loglanır və imzalanır.
- Saatlıq möhür SIEM-ə çatmadıqda xəbərdarlıq yaranır.
17. Hesabat modeli
17.1 Hesabat kataloqu (21 məcburi hesabat)
| # | Hesabat | Modul | Əsas parametrlər | Format | Auditoriya | Faza |
|---|---|---|---|---|---|---|
| RPT-01 | Təlim tamamlanma hesabatı | M01 | dövr, şöbə, proqram, status | PDF/XLSX/CSV | Menecer, GRC | 1 |
| RPT-02 | İmtahan nəticələri hesabatı | M01 | proqram, dövr, şöbə | XLSX/CSV | Təlim meneceri | 1 |
| RPT-03 | Fişinq kampaniya hesabatı | M02 | kampaniya | PDF/XLSX | Təhlükəsizlik, rəhbərlik | 1 |
| RPT-04 | Şöbə üzrə insan riski hesabatı | M02 | dövr, şöbə | PDF/XLSX | Menecer, CISO | 1 |
| RPT-05 | Siyasətlə tanışlıq hesabatı | M03 | sənəd, şöbə, versiya | XLSX/CSV | Compliance | 1 |
| RPT-06 | Vaxtı keçmiş/baxış tələb edən sənədlər | M03 | dövr | XLSX | Compliance | 1 |
| RPT-07 | Statement of Applicability (SoA) | M04 | framework, versiya/baseline | PDF/XLSX | Auditor, sertifikasiya | 1 |
| RPT-08 | Uyğunluq boşluqları (Gap) hesabatı | M04 | framework, domain | PDF/XLSX | Compliance, rəhbərlik | 1 |
| RPT-09 | Nəzarət tədbirlərinin statusu | M04 | framework, sahib, status | XLSX | Compliance | 1 |
| RPT-10 | Risk reyestri | M05 | səviyyə, status, şöbə, kateqoriya | XLSX/PDF | Risk meneceri, auditor | 1 |
| RPT-11 | Risk emalı hesabatı | M05 | dövr, status | XLSX | Risk meneceri | 1 |
| RPT-12 | Risk qəbulları hesabatı | M05 | dövr, səviyyə | PDF/XLSX | Rəhbərlik | 1 |
| RPT-13 | Daxili audit hesabatı | M06 | audit | PDF/DOCX | Auditee, rəhbərlik | 2 |
| RPT-14 | Açıq tapıntılar hesabatı | M06 | tip, şöbə, gecikmə | XLSX | Auditor, menecer | 2 |
| RPT-15 | Sübutun bitmə hesabatı | M07 | üfüq (30/60/90 gün) | XLSX | Sübut sahibləri | 1 |
| RPT-16 | Aktiv reyestri | M08 | tip, kritiklik, şöbə | XLSX | Compliance, İT | 2 |
| RPT-17 | Təchizatçı riski hesabatı | M09 | kritiklik, risk zolağı | PDF/XLSX | Vendor meneceri, rəhbərlik | 2 |
| RPT-18 | Məlumat təsnifatı hesabatı | M10 | səviyyə, şöbə, obyekt tipi | XLSX | Data owner, Compliance | 3 |
| RPT-19 | DLP hadisə hesabatı | M13 | dövr, şöbə, kanal, severity | PDF/XLSX | CISO, SOC | 3 |
| RPT-20 | DLP siyasətinin effektivliyi | M12/M13 | dövr, siyasət | PDF/XLSX | DLP admin, CISO | 3 |
| RPT-21 | Rəhbərlik üçün təhlükəsizlik hesabatı | Hamısı | dövr (rüb) | PDF/DOCX | Rəhbərlik | 2 |
Əlavə (Faza 2+): Sinxronizasiya hesabatı, SoD pozuntuları hesabatı, İcazə/rol attestasiya hesabatı, Audit log çıxarışı, Tapşırıq/SLA hesabatı, Bildiriş çatdırılma hesabatı, Məlumat axını hesabatı, Sertifikasiya hazırlığı paketi (SoA + risk reyestri + nəzarət statusu + sübut siyahısı bir arxivdə).
17.2 Rəsmi hesabat tərtibatı (PDF/DOCX)
┌────────────────────────────────────────────────────────┐
│ [Qurum gerbi] QURUMUN ADI │
│ İnformasiya Təhlükəsizliyi Şöbəsi │
│ │
│ RİSK REYESTRİ │
│ 01.01.2026 – 30.09.2026 │
│ │
│ Təsnifat: MƏHDUD GİRİŞLİ │
│ Hesabat nömrəsi: RPT-10-2026-0042 │
│ Hazırlanma tarixi: 14.09.2026 10:22 │
│ Hazırlayan: R.Həsənov (ETİMAD platforması) │
│ Məlumat kəsimi: 14.09.2026 10:00 │
├────────────────────────────────────────────────────────┤
│ 1. Xülasə │
│ 2. Metodologiya (risk matrisi, şkalalar) │
│ 3. Risk reyestri cədvəli │
│ 4. İstilik xəritəsi │
│ 5. Əlavələr │
├────────────────────────────────────────────────────────┤
│ MƏHDUD GİRİŞLİ Səh. 1 / 24 ETİMAD v1.4.2 │
└────────────────────────────────────────────────────────┘- Su nişanı: təsnifat + istifadəçi adı + tarix (sızma izlənməsi)
- Hər hesabatda metodologiya bölməsi — auditor rəqəmin necə hesablandığını görməlidir
- Məlumat kəsimi vaxtı (as-of) həmişə göstərilir
17.3 Hesabat mühərrikinin dizaynı
Hesabat tərifi (ReportDefinition)
├ Parametr sxemi (JSON Schema) → UI avtomatik forma yaradır
├ Məlumat mənbəyi: named query / stored view (skoup filtri məcburi tətbiq olunur)
├ Sütun tərifi (ad AZ/EN/RU, format, aqreqasiya)
├ Şablon: PDF (QuestPDF layout), DOCX (OpenXML şablon), XLSX (sütun mapping)
└ İcazə tələbi (permission key)
▼
Report Renderer servisi (ayrıca, CPU-limitli)
▼
Nəticə → MinIO (müddətli obyekt, 7 gün) → imzalı yükləmə linkiVacib: Hesabat sorğusu həmişə istifadəçinin skoupu ilə filtrlənir — hesabat vasitəsilə icazə keçmək mümkün deyil. Planlaşdırılmış hesabatlarda: hesabat alıcının skoupu ilə generasiya olunur (yaradanın deyil).
17.4 Metriklərin hesablanması və trend
MetricSnapshotcədvəli: hər gecə bütün əsas metriklərin dəyəri (metric_key, dimension (department/framework/...), value, as_of_date)- Trend qrafikləri bu snapshot-lardan (canlı hesablama yox — performans)
- Metriklərin tərifi sənədləşdirilir: hər metrik üçün düstur, mənbə, yenilənmə tezliyi —
/reports/metrics-catalogsəhifəsi
17.5 Qəbul meyarları
- Hər hesabat 4 formatda (PDF/DOCX/XLSX/CSV) ixrac edilə bilir (bəziləri təbii olaraq yalnız cədvəl formatında).
- SoA PDF-i ISO 27001 auditoru tərəfindən qəbul edilə biləcək tam formatdadır (bütün 93 nəzarət, əsaslandırmalar).
- Hesabat istifadəçinin skoupunu keçmir (negative test).
- Planlaşdırılmış hesabat alıcının icazəsinə görə filtrlənir.
- > 50 000 sətirlik XLSX ixracı streaming ilə yaddaş problemi yaratmadan işləyir.
- Hər PDF-də təsnifat etiketi, su nişanı, məlumat kəsimi vaxtı var.
18. İnteqrasiya arxitekturası
18.1 İnteqrasiya kataloqu
| # | Sistem | İstiqamət | Protokol | Kritiklik | Faza |
|---|---|---|---|---|---|
| I1 | Active Directory / LDAP | ETİMAD ← AD (oxuma) | LDAPS 636, GC 3269 | Kritik | 1 |
| I2 | Keycloak / ADFS (SSO) | ETİMAD ↔ IdP | OIDC, SAML 2.0 | Kritik | 1 |
| I3 | SMTP / Exchange (bildiriş) | ETİMAD → | SMTP/TLS 587 | Yüksək | 1 |
| I4 | SMTP relay (fişinq) | ETİMAD → | SMTP/TLS, ayrıca relay | Yüksək | 1 |
| I5 | Email gateway (allowlist + report) | ETİMAD ↔ | Konfiqurasiya + IMAP/Graph | Orta | 1–2 |
| I6 | Outlook / M365 add-in | → ETİMAD | REST + OAuth | Orta | 2 |
| I7 | SIEM | ETİMAD → | Syslog CEF/LEEF (TLS), webhook | Yüksək | 1 |
| I8 | SOAR | ETİMAD ↔ | REST webhook | Orta | 2 |
| I9 | Ticketing (Jira/ServiceNow/GLPI) | ETİMAD ↔ | REST | Orta | 2 |
| I10 | Antivirus / ICAP | ETİMAD → | ICAP və ya clamd | Kritik (fayl) | 1 |
| I11 | DLP endpoint agent | ETİMAD ↔ | Qayda pull (REST), hadisə push | Yüksək | 3 |
| I12 | DLP email/network | ETİMAD ← | Syslog/REST | Yüksək | 3 |
| I13 | HR sistemi | ETİMAD ← | CSV/SFTP və ya REST | Orta | 2 |
| I14 | CMDB | ETİMAD ← | CSV/REST | Aşağı | 2 |
| I15 | Vault / KMS | ETİMAD → | HTTPS API | Kritik | 1 |
| I16 | Backup sistemi | ↔ | Agent/snapshot | Kritik | 1 |
| I17 | Monitorinq (Prometheus/Zabbix) | ETİMAD → | /metrics, SNMP | Yüksək | 1 |
| I18 | NTP | ETİMAD → | NTP | Kritik (audit vaxtı) | 1 |
| I19 | PKI / Sertifikat | ← | Əl ilə/ACME daxili | Yüksək | 1 |
| I20 | SCORM/xAPI məzmun | ← | Paket import, LRS | Aşağı | 2 |
18.2 İnteqrasiya prinsipləri
| Prinsip | Tətbiq |
|---|---|
| Anti-corruption layer | Hər xarici sistem üçün adapter; xarici model heç vaxt domenə sızmır |
| Konfiqurasiya, kod deyil | Yeni SIEM/ticketing əlavə etmək üçün adapter + konfiqurasiya; kod dəyişikliyi minimal |
| Asinxron üstünlük | Xarici sistemə göndərmə növbə vasitəsilə; sinxron yalnız AD auth |
| Etibarlı çatdırılma | Outbox + retry + DLQ; itki yoxdur |
| Circuit breaker | Xarici sistem çökdükdə platforma işləməyə davam edir |
| Timeout həmişə | Default 30 s; heç bir sonsuz gözləmə |
| Sertifikat yoxlaması | Həmişə; TrustAll konfiqurasiyası mövcud deyil |
| Secret Vault-da | Heç bir inteqrasiya kredensialı DB-də və ya konfiqurasiya faylında açıq deyil |
| Test rejimi | Hər inteqrasiya üçün "Test bağlantısı" düyməsi — nəticə detallı |
| Sağlamlıq monitorinqi | Hər inteqrasiya üçün: son uğurlu əlaqə, xəta sayı, gecikmə — admin panelində |
18.3 SIEM inteqrasiyası (detallı)
Göndərilən hadisələr: bütün AUTH_*, AUTHZ_*, DLP hadisələri, təhlükəsizlik hadisələri, fövqəladə əməliyyatlar, konfiqurasiya dəyişiklikləri, audit möhürləri, bütövlük xətaları, fişinq kampaniya başlanğıcı/bitməsi (SOC-un real hücumla qarışdırmaması üçün).
CEF nümunəsi:
CEF:0|ETIMAD|SecurityPlatform|1.4.2|DLP_INCIDENT_CREATED|DLP incident detected|7|
rt=1757840551000 suser=elnur.m@qurum.gov.az suid=4821 shost=WS-0432 src=10.20.30.44
cs1Label=Channel cs1=email cs2Label=Classification cs2=CONFIDENTIAL
cs3Label=Policy cs3=DLP-001 cs4Label=Action cs4=blocked
cn1Label=Confidence cn1=92 cn2Label=MatchCount cn2=23
fname=siyahi.xlsx fileHash=a3f5... outcome=blocked
externalId=DLP-2026-00341 cs5Label=CorrelationId cs5=018f2a1c-...Diqqət: CEF mesajında məzmun nümunəsi, tam fayl yolu və tam IP (konfiqurasiyaya görə) göndərilmir.
Buferləmə: SIEM əlçatmaz olduqda hadisələr RabbitMQ-da bufer edilir (maks 7 gün / 5 GB), bərpa olunduqda sıra ilə göndərilir.
18.4 Ticketing inteqrasiyası (iki istiqamətli)
ETİMAD tapşırığı yaranır → (konfiqurasiya: hansı tapşırıq tipləri) → Jira issue yaradılır
external_ticket_id saxlanılır
Jira-da status dəyişir → webhook → ETİMAD tapşırığı yenilənir
ETİMAD-da tapşırıq bağlanır → Jira issue bağlanır
Konflikt: son dəyişiklik qalib (timestamp) + audit qeydi18.5 Air-gapped / məhdud internet rejimi
| Ehtiyac | Həll |
|---|---|
| Konteyner imicləri | Daxili Harbor registry; imicler əl ilə köçürülür (docker save/load) |
| Paket asılılıqları | Daxili NuGet/npm proxy (Nexus/Verdaccio) |
| Şrift və ikonlar | Lokal, CDN yoxdur |
| Framework yeniləmələri (ISO, NIST) | Əl ilə import faylı (imzalanmış) |
| Zəiflik bazası (Trivy) | Offline DB, dövri əl ilə yeniləmə |
| Vaxt sinxronizasiyası | Daxili NTP |
| Sertifikatlar | Daxili PKI |
| OCR dil paketləri | İmicə daxil edilir |
| Yeniləmə paketi | İmzalanmış offline paket (imicler + miqrasiyalar + release notes) |
18.6 Qəbul meyarları
- Hər inteqrasiya üçün "Test bağlantısı" funksiyası var və detallı nəticə qaytarır.
- Xarici sistem əlçatmaz olduqda platforma işləməyə davam edir (graceful degradation testi).
- SIEM buferi dolduqda ən köhnə hadisələr deyil, xəbərdarlıq yaranır və admin bildirilir.
- Heç bir inteqrasiya secret-i DB-də və ya log-da açıq görünmür.
- Air-gapped quraşdırma sənədləşdirilib və test mühitində yoxlanılıb.
19. Qeyri-funksional tələblər (NFR)
19.1 Performans
| Metrik | Hədəf (P95) | Hədəf (P99) | Ölçmə |
|---|---|---|---|
| Səhifə ilk yüklənməsi (TTI) | ≤ 2.0 s | ≤ 3.5 s | LAN, orta iş stansiyası |
| API GET (sadə obyekt) | ≤ 200 ms | ≤ 500 ms | Server tərəfi |
| API GET (siyahı, 50 sətir, filtrli) | ≤ 400 ms | ≤ 900 ms | |
| API POST/PUT (yazma) | ≤ 500 ms | ≤ 1.2 s | |
| Qlobal axtarış (OpenSearch) | ≤ 300 ms | ≤ 800 ms | |
| Dashboard tam yüklənməsi | ≤ 2.0 s | ≤ 4.0 s | Widget-lər paralel |
| Risk reyestri (1 000 sətir, filtr+sort) | ≤ 1.0 s | ≤ 2.0 s | |
| Audit log axtarışı (100 mln sətir) | ≤ 3.0 s | ≤ 6.0 s | Partisiya + indeks |
| Sənəd redaktoru avtosave | ≤ 300 ms | — | Fon, UI bloklanmır |
| Fayl yükləmə (10 MB, virus skanı ilə) | ≤ 8 s | ≤ 15 s | |
| Sübut önizləmə (PDF, 5 MB) | ≤ 2 s | ≤ 4 s | |
| Hesabat PDF (SoA, 93 nəzarət) | ≤ 20 s | ≤ 40 s | Asinxron, bildirişlə |
| XLSX ixrac (50 000 sətir) | ≤ 60 s | ≤ 120 s | Streaming |
| AD tam sinxronizasiya (10 000 istifadəçi) | ≤ 15 dəq | ≤ 25 dəq | |
| AD artımlı sinxronizasiya | ≤ 2 dəq | ≤ 5 dəq | |
| Fişinq göndərmə (5 000 email) | ≤ 4 saat | — | Qəsdən paylanmış |
| DLP hadisə qəbulu | ≤ 100 ms/hadisə | ≤ 300 ms | Qəbul → növbə |
| DLP detection (10 MB DOCX) | ≤ 3 s | ≤ 8 s | OCR-siz |
| Bildiriş göndərilməsi | ≤ 60 s | ≤ 180 s | Hadisədən emailə |
19.2 Miqyas və tutum
| Parametr | MVP | Hədəf | Maksimum layihələndirilmiş |
|---|---|---|---|
| Ümumi istifadəçi | 2 000 | 10 000 | 25 000 |
| Eyni anda aktiv sessiya | 200 | 800 | 2 000 |
| Eyni anda API sorğusu (RPS) | 50 | 200 | 500 |
| Risklər | 500 | 3 000 | 10 000 |
| Nəzarət tədbirləri | 150 | 500 | 2 000 |
| Sənədlər | 100 | 800 | 3 000 |
| Sübutlar | 2 000 | 20 000 | 100 000 |
| Aktivlər | 500 | 5 000 | 20 000 |
| Təchizatçılar | 50 | 500 | 2 000 |
| DLP hadisəsi / gün | — | 1 000 | 10 000 |
| Fişinq hadisəsi / kampaniya | 10 000 | 50 000 | 200 000 |
| Audit log / gün | 200 000 | 500 000 | 2 000 000 |
| Fayl saxlama | 100 GB | 1 TB | 10 TB |
Miqyaslanma strategiyası: API/worker/renderer — horizontal (stateless, Redis-də sessiya); PostgreSQL — vertikal + read replica (hesabat/dashboard sorğuları replikaya yönlənir); OpenSearch/MinIO — horizontal (shard/erasure).
19.3 Əlçatanlıq və fəlakətdən bərpa
| Parametr | Dəyər | Qeyd |
|---|---|---|
| Əlçatanlıq hədəfi | 99.5% (iş saatlarında 99.9%) | Ayda ~3.6 saat planlanmamış dayanma |
| Planlaşdırılmış texniki fasilə | Ayda 1 dəfə, ≤ 2 saat, iş saatı xarici | Əvvəlcədən bildirişlə |
| RPO (məlumat itkisi) | ≤ 15 dəqiqə | WAL streaming replikasiya |
| RTO (bərpa müddəti) | ≤ 4 saat (əsas sayt) / ≤ 8 saat (DR sayt) | |
| RPO (audit log) | 0 (sinxron replikasiya) | Audit log itkisi qəbuledilməzdir |
| Backup tezliyi | Tam: həftəlik; artımlı: gündəlik; WAL: davamlı | |
| Backup saxlama | Gündəlik 30 gün, həftəlik 12 həftə, aylıq 24 ay, illik 7 il | |
| Backup şifrələnməsi | AES-256, ayrıca açar (Vault-dan kənar surət seyfdə) | |
| Backup bərpa testi | Rüblük, sənədləşdirilmiş | Test olunmayan backup — backup deyil |
| DR keçid testi | İllik, tam | |
| Fayl saxlaması (MinIO) | Erasure coding (4+2) + DR replikasiyası | |
| Konfiqurasiya backup | GitOps — bütün konfiqurasiya versiya nəzarətində |
Fəlakət ssenariləri və cavab:
| Ssenari | Cavab | RTO |
|---|---|---|
| API pod çökdü | K8s avtomatik restart; digər replikalar işləyir | 0 |
| PostgreSQL primary çökdü | Patroni/repmgr avtomatik failover standby-a | ≤ 2 dəq |
| Bütöv data mərkəzi | DR sayta əl ilə keçid (DNS + promote) | ≤ 8 saat |
| Ransomware | İmmutable backup-dan bərpa (WORM); audit log ilə təsir analizi | ≤ 8 saat |
| Məlumat pozulması (korrupsiya) | Point-in-time recovery (PITR) WAL ilə | ≤ 4 saat |
| Açar itkisi (Vault) | Shamir açarları 5 nəfərdə, 3-ü kifayət edir; seyfdə surət | ≤ 4 saat |
19.4 Saxlama müddətləri (Retention)
| Məlumat | Onlayn | Arxiv | Sonra |
|---|---|---|---|
| Audit log | 24 ay | 7 il (WORM) | Məhv (akt ilə) |
| Təhlükəsizlik hadisələri | 36 ay | 7 il | |
| DLP hadisə metadata | 24 ay | 5 il | |
| DLP məzmun nümunəsi | 90 gün | — | Avtomatik silinmə |
| Fişinq fərdi hadisələri | 24 ay | — | Anonimləşdirmə → aqreqat |
| Təlim nəticələri və sertifikatlar | İşdən çıxana + 3 il | 10 il | Uyğunluq sübutu |
| Siyasətlə tanışlıq | Sənəd qüvvədə + 5 il | 10 il | |
| Sübutlar | Nəzarət tədbiri aktiv + 3 il | Auditdən sonra 7 il | |
| Risk qeydləri | Bağlanandan 5 il | 10 il | |
| Audit sənədləri və iş kağızları | 7 il | 10 il | ISO tələbi |
| Bildirişlər | 12 ay | — | Silinmə |
| Sessiya qeydləri | 90 gün | — | |
| Tətbiq logları | 90 gün | 12 ay | |
| İşdən çıxmış işçinin şəxsi məlumatları | — | — | 3 ildən sonra anonimləşdirmə (tarixi qeydlər ID ilə qalır) |
19.5 Fayl və giriş limitləri
| Limit | Dəyər |
|---|---|
| Fayl ölçüsü (sübut, qoşma) | 100 MB (konfiqurasiya, maks 500 MB) |
| Video dərs | 500 MB |
| Sorğu ölçüsü (toplu yükləmə) | 500 MB |
| İstifadəçi başına saatlıq yükləmə | 2 GB |
| İstifadəçi başına saatlıq endirmə | 5 GB |
| İxrac sətir limiti (sinxron) | 5 000 |
| İxrac sətir limiti (asinxron) | 500 000 |
API pageSize | 200 (audit log 1 000) |
| Yüklənən fayl tipləri | Allowlist: pdf, docx, xlsx, pptx, doc, xls, ppt, txt, csv, png, jpg, jpeg, gif, bmp, tiff, zip, 7z, eml, msg, log, json, xml, mp4, webm, vtt |
| Arxiv dərinliyi | 3 |
| Arxiv açılmış ölçü | 1 GB (zip bomb müdafiəsi) |
19.6 Brauzer və platforma dəstəyi
| Brauzer | Minimum versiya | Dəstək səviyyəsi |
|---|---|---|
| Microsoft Edge (Chromium) | Son 2 major | Tam (dövlət qurumlarında əsas) |
| Google Chrome | Son 2 major | Tam |
| Mozilla Firefox | Son 2 major + ESR | Tam |
| Safari | 16+ | Əsas funksiyalar |
| Internet Explorer 11 | — | Dəstəklənmir (açıq xəbərdarlıq səhifəsi) |
| Mobil (iOS Safari, Chrome Android) | Son 2 versiya | Yalnız əməkdaş səhifələri: təlim, siyasət oxuma, tanışlıq, tapşırıq, hadisə bildirmə |
Ekran ölçüləri: ≥1280px tam; 768–1279px sıxılmış; <768px mobil (məhdud dəst).
19.7 Əlçatanlıq (Accessibility)
| Tələb | Səviyyə |
|---|---|
| Standart | WCAG 2.2 Level AA |
| Kontrast | Mətn ≥ 4.5:1, böyük mətn ≥ 3:1, UI komponentləri ≥ 3:1 |
| Klaviatura | Bütün funksiyalar klaviatura ilə; görünən fokus göstəricisi; tələ (trap) yoxdur |
| Ekran oxuyucu | NVDA + Edge ilə test; ARIA landmark, label, live region |
| Rəng | Status heç vaxt yalnız rənglə; ikon + mətn + naxış |
| Mətn ölçüsü | 200% zoom-da funksionallıq itmir |
| Animasiya | prefers-reduced-motion dəstəyi |
| Forma | Hər sahə üçün <label>, xəta mesajı sahə ilə əlaqəli (aria-describedby) |
| Qrafiklər | Hər qrafik üçün cədvəl alternativi + aria-label xülasəsi |
| Dil | lang atributu düzgün (az/en/ru), qarışıq məzmunda lang dəyişir |
| Test | Avtomatik (axe-core CI-də) + əl ilə (klaviatura + NVDA) hər relizdə |
19.8 Lokalizasiya
| Aspekt | Tələb |
|---|---|
| Dillər | AZ (default, tam), EN (tam), RU (tam) |
| Tərcümə mənbəyi | JSON resurs faylları, i18next formatı; qurum tərəfindən redaktə edilə bilən |
| Tərcümə olunmayan məzmun | Qurumun yaratdığı məzmun (siyasət, dərs) — çoxdilli versiya opsional, fallback görünən xəbərdarlıqla |
| Tarix formatı | dd.MM.yyyy, saat 24 saatlıq |
| Rəqəm formatı | Onluq ayırıcı: , (AZ), minlik: boşluq |
| Valyuta | AZN (₼) |
| Sıralama (collation) | AZ əlifbası düzgün sıralanır (az-AZ ICU collation) |
| Axtarış | AZ hərfləri (ə, ğ, ı, ö, ş, ü, ç) və latın ekvivalentləri bir-birini tapır (folding) |
| Vaxt qurşağı | Asia/Baku (konfiqurasiya) |
| Təqvim | İş günləri + rəsmi bayramlar (deadline hesablaması) — konfiqurasiya edilə bilən |
19.9 Müşahidə (Observability)
| Qat | Alət | Məzmun |
|---|---|---|
| Metriklər | Prometheus + Grafana | RED (Rate/Errors/Duration) hər endpoint üçün; USE (Utilization/Saturation/Errors) infrastruktur; biznes metrikləri (aktiv sessiya, növbə uzunluğu, işləyən kampaniya, gözləyən tapşırıq) |
| Loglar | Struktur JSON → Loki/OpenSearch | Korrelyasiya ID, istifadəçi ID (həssas deyil), modul, səviyyə; həssas məlumat maskalanmış |
| İzləmə (Tracing) | OpenTelemetry → Tempo/Jaeger | W3C Trace Context; DB, HTTP, MQ, LDAP spanları; sampling 10% + xətalar 100% |
| Sağlamlıq | /health/live, /health/ready | Hər asılılıq ayrıca statusla |
| Alarmlar | Alertmanager | Aşağıdakı cədvəl |
Kritik alarmlar:
| Alarm | Şərt | Prioritet |
|---|---|---|
| Audit log bütövlüyü pozuldu | Hash zənciri uyğunsuzluğu | P1 — dərhal |
| Break-glass giriş | İstifadə edildi | P1 |
| Zərərli proqram aşkarlandı | Fayl yükləməsində | P1 |
| DLP fövqəladə söndürmə | İstifadə edildi | P1 |
| Verilənlər bazası əlçatmazdır | Health check uğursuz | P1 |
| Backup uğursuz oldu | 2 ardıcıl | P1 |
| SIEM göndərməsi dayandı | 15 dəq | P2 |
| AD sinxronizasiya uğursuz | 2 ardıcıl | P2 |
| Növbə uzunluğu kritik | > 10 000 mesaj | P2 |
| Disk dolur | > 85% | P2 |
| Xəta nisbəti yüksək | 5xx > 1% (5 dəq) | P2 |
| Cavab müddəti pisləşdi | P95 > 2× hədəf | P3 |
| Sertifikat bitir | < 30 gün | P3 |
19.10 Tutum planlaması
| Dövr | Fəaliyyət |
|---|---|
| Həftəlik | Disk, növbə, xəta nisbəti baxışı |
| Aylıq | Artım trendi (istifadəçi, obyekt, log həcmi); proqnoz 6 ay |
| Rüblük | Yük testi (hədəf yükün 150%-i); tutum hesabatı |
| İllik | Arxitektura baxışı; miqyaslanma qərarı |
Artım proqnozu (3 il): DB ~40 GB (audit istisna) + audit ~900 GB (partisiyalı, arxivlənən) + fayl ~1.5 TB → ümumi ~2.5 TB; 30% ehtiyat → 3.5 TB planlaşdırılmalıdır.
20. Təhlükə modeli (Threat Model)
20.1 Metodologiya
STRIDE (komponent üzrə) + hücum ağacları (kritik ssenarilər üçün). Qiymətləndirmə: DREAD-bənzəri sadələşdirilmiş (Təsir 1–5 × Ehtimal 1–5). Baxış tezliyi: hər major reliz + illik.
20.2 Qorunan aktivlər (Crown Jewels)
| # | Aktiv | Niyə kritik | Təsnifat |
|---|---|---|---|
| CJ1 | DLP hadisə məzmunu | Real həssas məlumat nümunələri | Xüsusi əhəmiyyətli |
| CJ2 | Məxfi sübut faylları | Qurumun təhlükəsizlik konfiqurasiyası, zəiflikləri | Məxfi |
| CJ3 | Audit izi | Bütün fəaliyyətin sübutu; pozulması hər şeyi şübhəli edir | Məxfi |
| CJ4 | Risk reyestri | Qurumun bütün zəifliklərinin xəritəsi | Məxfi |
| CJ5 | AD servis hesabı | Kataloqa giriş | Xüsusi əhəmiyyətli |
| CJ6 | Şifrələmə açarları (Vault) | Bütün şifrələnmiş məlumat | Xüsusi əhəmiyyətli |
| CJ7 | İstifadəçi kredensialları | Hesab ələ keçirmə | Xüsusi əhəmiyyətli |
| CJ8 | DLP siyasətləri | Nədən qorunduğumuzun xəritəsi; söndürülməsi | Məhdud girişli |
| CJ9 | Fişinq infrastrukturu | Sui-istifadə → real hücum aləti | Məhdud girişli |
| CJ10 | İnsan riski profilləri | Fərdi məlumat, sui-istifadə riski | Məhdud girişli |
20.3 Təhdid aktorları
| Aktor | Motivasiya | İmkan | Prioritet |
|---|---|---|---|
| TA1 — Xarici hücumçu (dövlət dəstəkli) | Kəşfiyyat, sabotaj | Yüksək | Yüksək |
| TA2 — Xarici hücumçu (maliyyə) | Ransomware, məlumat satışı | Orta | Yüksək |
| TA3 — Zərərli daxili istifadəçi | Məlumat oğurluğu, izlərin gizlədilməsi | Yüksək (giriş var) | Kritik |
| TA4 — Səhlənkar daxili istifadəçi | Yoxdur (təsadüfi) | Orta | Yüksək |
| TA5 — İmtiyazlı istifadəçinin sui-istifadəsi (admin) | Nəzarətdən yayınma, məlumat | Çox yüksək | Kritik |
| TA6 — Kompromis olunmuş təchizatçı | Tədarük zənciri | Orta | Orta |
| TA7 — Audit subyekti (tapıntını gizlətmək) | Nəticələri manipulyasiya | Orta | Orta |
20.4 STRIDE analizi — komponent üzrə
20.4.1 Autentifikasiya / IAM
| STRIDE | Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|---|
| S | Kredensial doldurma (credential stuffing) | 5 | 3 | MFA, rate limit, hesab kilidi, anormal giriş aşkarlanması |
| S | Sessiya oğurluğu (XSS/şəbəkə) | 5 | 2 | HttpOnly+Secure+SameSite, TLS, CSP, qısa token, sessiya bağlanması |
| S | Token təkrar istifadəsi (replay) | 4 | 2 | Qısa exp, jti blacklist, refresh rotasiyası |
| S | Kerberos bilet oğurluğu (Pass-the-ticket) | 5 | 2 | Bu ETİMAD-dan kənar risk; AD sərtləşdirilməsi tövsiyəsi, MFA step-up |
| T | JWT dəyişdirilməsi (alg=none) | 5 | 1 | Yalnız RS256 qəbul; alg allowlist; JWKS yoxlaması |
| R | "Mən giriş etməmişəm" | 3 | 3 | Audit log + IP + UA + SIEM surəti |
| I | İstifadəçi sayımı (enumeration) | 2 | 4 | Eyni xəta mesajı, eyni cavab müddəti |
| D | Auth endpoint-inə DoS | 4 | 3 | Rate limit, CAPTCHA, WAF |
| E | Rol mapping manipulyasiyası | 5 | 2 | Yalnız admin, dual control, audit, SoD |
| E | Break-glass sui-istifadəsi | 5 | 2 | Fiziki seyf, 2 nəfər, FIDO2+TOTP, dərhal alarm, post-mortem |
20.4.2 Fişinq modulu (ən yüksək sui-istifadə potensialı)
| STRIDE | Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|---|
| S | Platformadan real fişinq hücumu göndərmək | 5 | 3 | Təsdiq iş axını (SoD-10), şablon rəyi, hədəf önizləməsi, SOC bildirişi, bütün kampaniyalar audit olunur, sürət limiti |
| I | Real parolun saxlanması/oxunması | 5 | 2 | §4.2.5 tam dizayn: klient göndərmir, server oxumur, log yazmır, ayrıca servis, CI testi |
| T | Landing səhifəsinin dəyişdirilməsi (real fişinq üçün) | 5 | 2 | Ayrıca servis, DB yazma yox, dəyişikliklər audit, imzalanmış deployment |
| I | Hədəf siyahısının sızması (kimin zəif olduğu) | 4 | 3 | Fərdi nəticələr məhdud rol, ixrac səbəb+audit, etik qaydalar |
| R | "Bu kampaniyanı mən başlatmamışam" | 3 | 2 | Təsdiq zənciri + audit |
| D | Email gateway-in doldurulması | 3 | 3 | Sürət limiti, paylanmış göndərmə, ayrıca relay |
| E | Tracking domenindən sui-istifadə | 4 | 2 | Ayrıca domen, token validasiyası, müddət limiti |
20.4.3 DLP modulu
| STRIDE | Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|---|
| I | Analitikin lazımsız məzmun görməsi | 5 | 4 | L0/L1/L2 modeli, maskalama serverdə, dual approval, müddətli token, audit |
| E | dlp_admin-in siyasəti özünə uyğunlaşdırıb məlumat oxuması | 5 | 3 | SoD-4: admin hadisə məzmununu görmür; siyasət dəyişikliyi təsdiq tələb edir |
| T | Qayda paketinin saxtalaşdırılması (agentə saxta qayda) | 5 | 2 | Rəqəmsal imza, agent yoxlayır, key rotation |
| T | Hadisənin silinməsi/dəyişdirilməsi (izi gizlətmək) | 5 | 3 | Soft delete + audit; hadisə SIEM-ə də gedir (xarici surət) |
| D | Hadisə seli (hadisə qəbulu endpoint-inə) | 4 | 3 | Rate limit konnektor üzrə, dedupe, növbə, backpressure |
| S | Saxta konnektor hadisə göndərir | 4 | 2 | mTLS + API key + konnektor allowlist |
| I | Fövqəladə söndürmə ilə DLP-nin bağlanması | 5 | 2 | Dual control, dərhal alarm, 24 saat avtomatik bərpa sorğusu, audit |
20.4.4 Sübut və sənəd idarəetməsi
| STRIDE | Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|---|
| T | Sübutun auditdən əvvəl dəyişdirilməsi | 5 | 3 | Hash + versiyalaşdırma + dəyişməz tarixçə + dövri bütövlük yoxlaması |
| I | Məxfi sübutun sızması (admin vasitəsilə) | 5 | 3 | P8: admin avtomatik giriş almır; təsnifat yoxlaması; audit; su nişanı |
| S | Zərərli fayl yüklənməsi (webshell, makro) | 5 | 3 | Magic bytes, allowlist, ClamAV, sandbox önizləmə, Content-Disposition, CSP |
| I | IDOR ilə başqasının sübutunun yüklənməsi | 5 | 3 | Obyekt səviyyəsində авторizasiya, imzalı müddətli URL, negative testlər |
| R | "Bu sübutu mən yükləməmişəm" | 3 | 2 | Audit + hash + versiya |
| D | Zip bomb / böyük fayl ilə resurs tükətmə | 3 | 3 | Ölçü/dərinlik/açılmış ölçü limitləri, timeout |
20.4.5 Audit izi
| STRIDE | Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|---|
| T | Admin log sətrini dəyişir/silir | 5 | 3 | 7 qatlı müdafiə (§4.18.3): tətbiq, DB rolu, trigger, hash zənciri, möhür, SIEM surəti, WORM |
| T | DB-yə birbaşa giriş ilə dəyişiklik | 5 | 2 | Hash zənciri aşkarlayır; SIEM ilə müqayisə; DBA fəaliyyəti ayrıca monitorinq |
| R | Log-un olmaması ("hadisə qeydə alınmayıb") | 4 | 2 | Kritik hadisələr sinxron yazılır; yazma uğursuzsa əməliyyat uğursuz |
| I | Log-dan həssas məlumatın oxunması | 4 | 3 | Maskalama, auditlog:read icazəsi, giriş audit olunur |
| D | Log ilə disk doldurma | 3 | 3 | Partisiya, arxivləşdirmə, kvota monitorinqi |
20.4.6 Xarici interfeyslər (DMZ)
| STRIDE | Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|---|
| E | Landing servisindən daxili şəbəkəyə keçid | 5 | 2 | Ayrıca zona, DB yazma yox, yalnız MQ write-only, minimal imic, firewall allowlist |
| E | Vendor portalından daxili sistemə keçid | 5 | 2 | Ayrıca servis, yalnız API, token skoupu, DMZ |
| S | Vendor token-in oğurlanması | 3 | 3 | Müddətli, birdəfəlik, IP bağlama (opsional), rate limit |
| D | Publik endpoint-lərə DDoS | 4 | 3 | WAF, rate limit, upstream müdafiə |
| T | Tracking URL-in manipulyasiyası | 3 | 3 | İmzalanmış token (HMAC), müddət |
20.4.7 İnsan / proses təhdidləri
| Təhdid | Təsir | Ehtimal | Nəzarət |
|---|---|---|---|
| Auditee tapıntını "yanlış pozitiv" kimi bağlatdırır | 4 | 3 | SoD-7: icra edən yoxlaya bilməz; auditor təsdiqi məcburi; audit izi |
| Risk sahibi öz riskini qəbul edir | 4 | 3 | SoD-2 blok; səviyyəyə görə təsdiq ierarxiyası |
| Siyasət müəllifi öz sənədini təsdiqləyir | 3 | 3 | SoD-1 blok |
| Fişinq nəticələri intizam tədbiri üçün istifadə olunur | 4 | 4 | E5 etik qaydası, hesabatda normativ qeyd, HR ixracı ayrıca icazə+audit |
| İstifadəçilərin utandırılması → bildirmə mədəniyyətinin ölməsi | 4 | 4 | E1–E10 etik qaydaları, leaderboard yoxdur, neytral terminologiya |
| Uyğunluq balının "gözəlləşdirilməsi" | 4 | 3 | Hesablama şəffaf və auditlənə bilən; status dəyişikliyi audit olunur; sübut tələbi |
20.5 Ən yüksək riskli 10 təhdid və mitigasiya statusu
| # | Təhdid | Xal (T×E) | Əsas mitigasiya | Status |
|---|---|---|---|---|
| 1 | Real parolun fişinq simulyasiyasında saxlanması | 25 | §4.2.5 tam dizayn + CI testi | Dizaynda həll olunub |
| 2 | Zərərli daxili istifadəçinin məxfi sübutları sızdırması | 20 | Təsnifat + P8 + audit + su nişanı + DLP | Dizaynda |
| 3 | DLP analitikinin lazımsız məzmun görməsi | 20 | L0/L1/L2 + dual approval | Dizaynda |
| 4 | Admin-in audit izini dəyişməsi | 20 | 7 qatlı müdafiə | Dizaynda |
| 5 | Platformadan real fişinq göndərilməsi | 20 | Təsdiq + SoD-10 + SOC bildirişi + audit | Dizaynda |
| 6 | Sübutun auditdən əvvəl dəyişdirilməsi | 20 | Hash + versiya + bütövlük yoxlaması | Dizaynda |
| 7 | Hesab ələ keçirmə (imtiyazlı) | 20 | MFA məcburi + step-up + anomaliya | Dizaynda |
| 8 | AD servis hesabının kompromisi | 20 | Vault + minimum icazə + LDAPS + rotasiya + monitorinq | Dizaynda |
| 9 | IDOR / obyekt səviyyəsində avtorizasiya boşluğu | 20 | Məcburi resource authorization + negative testlər + arxitektura testi | Test strategiyasında |
| 10 | Ransomware (bütöv platforma) | 20 | Immutable backup + WORM + seqmentasiya + bərpa testi | Əməliyyatda |
20.6 Qalıq risklər (qəbul edilən)
| Risk | Səbəb | Kompensasiya |
|---|---|---|
| Endpoint DLP icrası 3-cü tərəfdən asılıdır | Skoup qərarı (A7) | ETİMAD orkestrasiya və hadisə idarəetməsini təmin edir; agent seçimi ayrıca layihə |
| ETİMAD daxilində ekran görüntüsünün qarşısı tam alına bilmir | Brauzer məhdudiyyəti | Su nişanı + audit + siyasət + endpoint agent (varsa) |
| İstifadəçi legitim girişi ilə məlumatı əl ilə köçürə bilər | Fundamental məhdudiyyət | Minimum giriş + audit + anomaliya aşkarlanması + DLP |
| AD kompromisi platformanı da kompromis edir | AD həqiqət mənbəyidir | Break-glass hesablar, MFA, AD sərtləşdirilməsi tövsiyəsi (ayrıca layihə) |
21. Test strategiyası
21.1 Test piramidası və əhatə hədəfləri
╱╲
╱E2E╲ 5% — kritik istifadəçi axınları (40–60 ssenari)
╱──────╲
╱ İnteqr.╲ 25% — API, DB, xarici sistem mock-ları
╱──────────╲
╱ Unit ╲ 70% — domen məntiqi, hesablamalar, validasiya
╱──────────────╲
┌────────────────────────────────┐
│ Çarpaz kəsimli (hər səviyyədə):│
│ Təhlükəsizlik · RBAC · Perf. │
│ Accessibility · Lokalizasiya │
└────────────────────────────────┘| Test növü | Əhatə hədəfi | Alət |
|---|---|---|
| Unit | Kod ≥ 75%; domen məntiqi ≥ 90% (risk skorinq, HRS, uyğunluq balı, confidence) | xUnit + FluentAssertions |
| İnteqrasiya | Bütün API endpoint-ləri; hər repository | Testcontainers (PostgreSQL, Redis, RabbitMQ, MinIO) |
| E2E | 40–60 kritik axın | Playwright |
| Müqavilə (contract) | Modul kontraktları, konnektor API-ləri | Pact və ya sxem validasiyası |
| Arxitektura | Modul sərhədləri, dövri asılılıq, avtorizasiya atributları | NetArchTest / ArchUnitNET |
21.2 Test kateqoriyaları (tələb olunan)
21.2.1 RBAC və avtorizasiya testləri — ƏN YÜKSƏK PRİORİTET
Qayda (normativ): Hər endpoint üçün ən azı 1 pozitiv və 3 neqativ avtorizasiya testi. Neqativ testlər pozitivlərdən çoxdur.
Neqativ test matrisi (hər qorunan resurs üçün):
1. Autentifikasiyasız sorğu → 401
2. İcazəsi olmayan rol → 403
3. Düzgün rol, YANLIŞ skoup (başqa şöbə) → 403 ← ən çox unudulan
4. Düzgün rol, YANLIŞ sahiblik → 403
5. Təsnifat limitini aşan obyekt → 403
6. SoD pozuntusu yaradan əməliyyat → 403 + audit
7. Birbaşa ID ilə müraciət (IDOR) → 403/404
8. Sahə səviyyəsində: icazəsiz sahə cavabda YOXDUR
9. Siyahı endpoint-i: icazəsiz obyektlər siyahıda YOXDUR
10. Toplu əməliyyat: icazəsiz obyektlər emal EDİLMİRKonkret kritik testlər:
| Test | Gözlənilən |
|---|---|
platform_admin → məxfi sübut yükləmə | 403 |
platform_admin → DLP hadisə məzmunu | 403 |
dlp_admin → DLP hadisə siyahısı | 403 |
dlp_analyst → L2 məzmun (təsdiqsiz) | 403 |
dept_manager (A şöbəsi) → B şöbəsinin fişinq nəticəsi | 403 |
employee → başqasının HRS-i | 403 |
policy_author → öz sənədini təsdiq | 403 + SoD audit |
risk_owner → öz riskini qəbul | 403 + SoD audit |
internal_auditor → öz nəzarət tədbirinin auditi | 403 + SoD audit |
| Düzəldici tədbiri icra edən → onu yoxlamaq | 403 + SoD audit |
external_auditor → skoupdan kənar sübut | 403 |
external_auditor (müddəti bitmiş) → istənilən sorğu | 401 |
executive_viewer → fərdi fişinq nəticəsi | 403 |
21.2.2 Fişinq təhlükəsizlik testləri — BLOKLAYICI (CI)
| # | Test | Gözlənilən |
|---|---|---|
| PS-1 | Landing formuna unikal test sətri göndər → DB-də axtar | 0 nəticə |
| PS-2 | Eyni sətri bütün log fayllarında axtar | 0 nəticə |
| PS-3 | Eyni sətri RabbitMQ mesajlarında axtar | 0 nəticə |
| PS-4 | Eyni sətri MinIO obyektlərində axtar | 0 nəticə |
| PS-5 | Landing servisinin DB istifadəçisinin yazma icazəsi | Yalnız MQ, DB yazma yox |
| PS-6 | form-urlencoded body ilə POST | Body parse edilmir, 400 |
| PS-7 | Təsdiqsiz kampaniya başlatma cəhdi (API) | 409 |
| PS-8 | Yaradan tərəfindən təsdiq cəhdi | 403 + SoD audit |
| PS-9 | Xidməti hesabın hədəf siyahısına düşməsi | Siyahıda yoxdur |
| PS-10 | Fövqəladə dayandırma → gözləyən emaillər | ≤ 30 s ərzində ləğv |
| PS-11 | Tracking domeni = əsas domen | Təsdiqə göndərilə bilmir |
| PS-12 | Real emaildən şablon → skript/link/qoşma | Hamısı təmizlənib |
| PS-13 | Kod bazasında "repeat offender" axtarışı | 0 nəticə (lint) |
| PS-14 | Simulyasiya emailində X-ETIMAD-Simulation | Mövcud |
21.2.3 DLP təhlükəsizlik testləri
| # | Test | Gözlənilən |
|---|---|---|
| DS-1 | API cavablarında tam FİN/kart regex axtarışı (L1 endpoint) | 0 nəticə |
| DS-2 | L2 giriş təsdiqsiz | 403 |
| DS-3 | L2 token 30 dəqiqədən sonra | 401 |
| DS-4 | Konnektor mTLS-siz hadisə göndərir | 401 |
| DS-5 | Eyni externalId ilə təkrar hadisə | Dublikat, yeni qeyd yox |
| DS-6 | Qayda paketi imzasız | Agent qəbul etmir |
| DS-7 | Yeni siyasət birbaşa enforce | 400 |
| DS-8 | Fövqəladə söndürmə tək təsdiqlə | 403 |
| DS-9 | EDM mənbə faylı indeksləmədən sonra | Fayl yoxdur |
| DS-10 | EDM indeksində açıq dəyər axtarışı | 0 nəticə (yalnız hash) |
| DS-11 | Məzmun nümunəsi 90 gündən sonra | NULL |
| DS-12 | contentSample log-da | [REDACTED] |
21.2.4 Audit log bütövlük testləri
| # | Test | Gözlənilən |
|---|---|---|
| AL-1 | Tətbiq vasitəsilə UPDATE cəhdi | Metod yoxdur (kompilyasiya) |
| AL-2 | Birbaşa SQL UPDATE | Exception (trigger) |
| AL-3 | Birbaşa SQL DELETE | Exception |
| AL-4 | Sətir dəyişdir → bütövlük yoxlaması | Uğursuz + alarm |
| AL-5 | Sətir sil → sequence boşluğu | Aşkarlanır + alarm |
| AL-6 | Parol/token/FİN patternləri log-da | 0 nəticə |
| AL-7 | Kritik əməliyyat + audit yazma xətası | Əməliyyat da uğursuz |
| AL-8 | Möhür imzası yoxlaması | Düzgün |
| AL-9 | Audit log ixracı | Öz növbəsində loglanır |
21.2.5 Fayl yükləmə təhlükəsizlik testləri
EICAR test faylı → karantin + alarm; .exe → .pdf adı ilə (magic bytes uyğunsuzluğu) → rədd; polyglot fayl (GIFAR) → rədd; zip bomb → limit tətbiq olunur; SVG içində skript → sanitizasiya/attachment; 10 000 fayllı arxiv → rədd; path traversal fayl adı (../../etc/passwd) → normallaşdırılır; çox uzun fayl adı → kəsilir; unicode RTL override fayl adı → normallaşdırılır; müddəti bitmiş imzalı URL → 403.
21.2.6 AD inteqrasiya testləri
Test AD (Samba DC və ya izolyasiya olunmuş Windows DC) ilə: tam sinxronizasiya; artımlı; sAMAccountName dəyişikliyi → dublikat yoxdur; istifadəçi deaktiv → sessiya ≤ 5 dəq ləğv; silinmiş istifadəçi → soft delete, tarixçə qalır; manager dövrü → aşkarlanır; nested qrup → düzgün açılır; xidməti hesab → istisna; >20% deaktivləşdirmə → iş dayandırılır; LDAP injection (*)(uid=*) → escape; açıq LDAP konfiqurasiyası → rədd; DC failover ≤ 10 s; 10 000 istifadəçi ≤ 15 dəq.
21.2.7 İş axını və SoD testləri
Hər iş axını üçün: bütün keçidlər (pozitiv), qadağan olunmuş keçidlər (403), SLA eskalasiyası (vaxt manipulyasiyası ilə), delegasiya və müddət bitməsi, paralel təsdiq (all/any/quorum), versiya dəyişikliyi zamanı aktiv instansiyaların davranışı, SoD blokları.
21.2.8 Hesablama düzgünlüyü testləri (domen)
| Hesablama | Test yanaşması |
|---|---|
| Risk skorinq (3×3, 5×5, custom) | Sərhəd dəyərləri, matris dəyişikliyi, əl ilə override |
| Qalıq risk (nəzarət effektivliyindən) | Hər status kombinasiyası |
| Uyğunluq balı | Hər status; düzəlişlər (sübut yox, istisna var, baxış gecikib); məxrəcdən not_applicable çıxarılması |
| Audit hazırlığı balı | Hər komponent ayrıca + kombinasiya + major NC limiti |
| HRS | Hər hadisə tipi, zaman sönməsi (6 ay yarı ömür), band sərhədləri |
| Confidence scoring | Hər mexanizm, kontekst/yaxınlıq bonusları, istisna cəzaları |
| Təchizatçı risk balı | red_flag → minimum "Yüksək" |
| SLA/deadline hesablanması | İş günləri, bayramlar, saat qurşağı |
21.2.9 Performans testləri
| Ssenari | Yük | Meyar |
|---|---|---|
| Normal iş günü | 200 eyni anda istifadəçi, 30 dəq | P95 hədəflərə uyğun |
| Pik (kampaniya başlanğıcı) | 800 eyni anda, 15 dəq | P95 < 2× hədəf |
| Toplu təyinat | 10 000 istifadəçi | ≤ 5 dəq |
| Hesabat generasiyası | 10 paralel böyük hesabat | Sistem cavab verir |
| DLP hadisə seli | 100 hadisə/saniyə, 10 dəq | İtki yoxdur, növbə boşalır |
| Audit log yazma | 2 000 hadisə/saniyə | Gecikmə < 100 ms |
| Böyük siyahı | 10 000 risk, filtr+sort | ≤ 2 s |
| Stress (sındırma nöqtəsi) | Artan yük | Graceful degradation, çökmə yox |
| Dözümlülük (soak) | 8 saat normal yük | Yaddaş sızması yoxdur |
21.2.10 Fəlakət və bərpa testləri
DB primary çökməsi → failover ≤ 2 dəq; API pod çökməsi → sorğu itkisi yoxdur; RabbitMQ çökməsi → mesaj itkisi yoxdur (persistent); MinIO node çökməsi → fayllar əlçatan (erasure); backup-dan tam bərpa → RTO ≤ 4 saat, məlumat bütövlüyü yoxlanılır; PITR → istənilən nöqtəyə; DR sayta keçid → illik, sənədləşdirilmiş; Vault unseal proseduru; şəbəkə kəsilməsi (AD/SMTP/SIEM) → graceful degradation.
21.2.11 Accessibility testləri
axe-core CI-də (0 kritik pozuntu); klaviatura ilə tam naviqasiya (hər səhifə); NVDA + Edge ilə əsas axınlar; 200% zoom; kontrast yoxlaması; prefers-reduced-motion; qrafiklərin cədvəl alternativi; forma xətalarının elan edilməsi.
21.2.12 Lokalizasiya testləri
Hər üç dildə UI; tərcümə olunmamış açarların aşkarlanması (CI-də: MissingTranslation siyahısı); AZ hərflərinin sıralanması; AZ axtarış folding (ə↔e); uzun alman/rus mətnlərində layout pozulmaması; tarix/rəqəm formatları; PDF-də AZ hərflərinin düzgün render olunması.
21.2.13 Təhlükəsizlik testləri (avtomatlaşdırılmış + əl ilə)
| Növ | Alət | Tezlik | Blok? |
|---|---|---|---|
| SAST | SonarQube + Semgrep (təhlükəsizlik qaydaları) | Hər commit | ✅ (kritik) |
| SCA | Trivy / OWASP Dependency-Check | Hər build | ✅ (kritik CVE) |
| Secret scanning | gitleaks + CI history scan | Hər commit | ✅ |
| Konteyner skanı | Trivy | Hər image build | ✅ (kritik) |
| IaC skanı | Checkov / tfsec | Hər dəyişiklik | ✅ |
| SBOM | Syft → SPDX/CycloneDX | Hər reliz | Artefakt |
| Image imzalama | Cosign | Hər reliz | ✅ |
| DAST | OWASP ZAP (autentifikasiyalı skan) | Gecə (nightly) | ⚠️ xəbərdarlıq |
| API fuzzing | Schemathesis (OpenAPI əsaslı) | Həftəlik | ⚠️ |
| Penetrasiya testi | Xarici komanda | Relizdən əvvəl + illik | ✅ (kritik tapıntılar) |
| Təhlükəsizlik kod review | Əl ilə, kritik modullar (auth, fişinq landing, DLP məzmun, audit log) | Hər dəyişiklik | ✅ |
21.3 Test məlumatı
| Qayda | Detal |
|---|---|
| Prod məlumatı test mühitində qadağandır | Normativ |
| Sintetik məlumat generatoru | Realistik AZ adları, şöbələr, risklər, sənədlər |
| Həssas tiplər üçün test dəyərləri | Rəsmi test FİN/kart nömrələri (istisna siyahısına salınmış) + qəsdən yanlış pozitiv yaradan nümunələr |
| Maskalama boru xətti | Əgər prod surəti lazımdırsa: tam anonimləşdirmə + ayrıca təsdiq |
| Test AD | Ayrıca Samba DC, 1 000 sintetik istifadəçi, müxtəlif kənar hallar |
21.4 CI/CD pipeline (keyfiyyət qapıları)
1. Commit
2. Lint + format (blok)
3. Unit testlər (blok, coverage ≥75% / domen ≥90%)
4. SAST + secret scan (blok: kritik)
5. Build
6. SCA + SBOM (blok: kritik CVE)
7. Konteyner build + skan (blok: kritik)
8. İnteqrasiya testləri (blok, Testcontainers)
9. Arxitektura testləri (blok: modul sərhədləri, avtorizasiya atributları)
10. RBAC/neqativ testlər (blok — ayrıca dəst)
11. Fişinq/DLP təhlükəsizlik (blok — §21.2.2, §21.2.3)
12. Audit bütövlük testləri (blok)
13. Deploy → test mühiti
14. E2E (Playwright) (blok: kritik axınlar)
15. Accessibility (axe) (blok: kritik)
16. DAST (nightly) (xəbərdarlıq)
17. Performans (həftəlik) (xəbərdarlıq → trend)
18. İmza + artefakt registry
19. Manual təsdiq → prod21.5 UAT (İstifadəçi qəbul testi)
| Aspekt | Detal |
|---|---|
| İştirakçılar | Hər personadan 3–5 nəfər (əməkdaş, müdir, GRC, auditor, DLP analitiki, rəhbərlik) |
| Müddət | Hər faza sonunda 2 həftə |
| Ssenarilər | Real iş axınları, əvvəlcədən yazılmış (hər modul üçün 5–10) |
| Meyar | Kritik ssenarilərin 100%-i uğurlu; istifadəçi məmnunluğu ≥ 4/5; "60 saniyə testi" (yeni istifadəçi nə etməli olduğunu başa düşür) |
| Nəticə | Tapıntılar prioritetləşdirilir; kritik/yüksək relizdən əvvəl həll olunur |
21.6 Qəbul meyarları (test strategiyası üçün)
- CI-də bloklayıcı təhlükəsizlik testləri (§21.2.2, §21.2.3, §21.2.4) mövcuddur və keçir.
- Hər yeni endpoint üçün ən azı 3 neqativ avtorizasiya testi tələb olunur (kod review checklist).
- Domen hesablamalarının test əhatəsi ≥ 90%.
- Prod məlumatı heç bir test mühitində yoxdur (yoxlanılır).
- Backup bərpa testi rüblük aparılır və sənədləşdirilir.
- Penetrasiya testi hər major relizdən əvvəl aparılır; kritik tapıntılar reliz bloklayıcıdır.
22. MVP skoupu
22.1 MVP-nin tərifi
MVP = dövlət qurumunun ISO 27001 üzrə ilk daxili qiymətləndirməsini ETİMAD ilə apara bilməsi + işçilərin təlim/siyasət/fişinq dövrünü tam keçməsi.
MVP demo deyil — istismara verilir və real məlumatla işləyir.
22.2 MVP-yə DAXİL olanlar
| # | Funksiya | Modul | Əsaslandırma |
|---|---|---|---|
| 1 | AD/LDAP sinxronizasiyası (oxuma) + SSO (OIDC) + MFA (TOTP) | M14 | Onsuz heç nə işləmir |
| 2 | Təşkilati struktur, istifadəçi, şöbə, rəhbər münasibəti | M14 | Skoup üçün bünövrə |
| 3 | RBAC (7 səviyyə) + SoD qaydaları | M14/M15 | Təhlükəsizliyin bünövrəsi |
| 4 | Dəyişməz audit izi (hash zənciri + SIEM göndərmə) | M18 | Auditlənə bilənlik tələbi |
| 5 | İş axını mühərriki + tapşırıq + bildiriş (platforma + email) | M17 | Bütün modullar istifadə edir |
| 6 | Dizayn sistemi + AZ/EN/RU lokalizasiya karkası | — | Sonrakı bütün UI |
| 7 | Maarifləndirmə təlimi: mətn/şəkil/video dərs, proqram, kampaniya, təyinat qaydaları | M01 | Əsas dəyər |
| 8 | İmtahan: sual bankı, təsadüfi seçim, taymer, keçid balı, sertifikat | M01 | Sübut |
| 9 | Fişinq: şablon, landing, göndərən profili, hədəfləmə, təsdiq, göndərmə, izləmə, fövqəladə dayandırma | M02 | Əsas dəyər + differensiator |
| 10 | İnsan Riski Profili (əsas formula + izah) | M02 | Ölçmə |
| 11 | Siyasət idarəetməsi: redaktor, versiya, təsdiq iş axını, nəşr, tanışlıq, PDF ixrac | M03 | Əsas dəyər |
| 12 | Siyasət istisnaları | M03 | ISO tələbi |
| 13 | ISO 27001:2022 framework import + 93 nəzarət tədbiri + bənd 4–10 | M04 | Əsas məqsəd |
| 14 | Nəzarət tədbirlərinin idarəsi + mapping + status + sahiblik | M04 | Əsas məqsəd |
| 15 | Statement of Applicability + baseline + PDF/XLSX | M04 | Sertifikasiya üçün məcburi |
| 16 | Uyğunluq balı + boşluq analizi (şəffaf hesablama) | M04 | Ölçmə |
| 17 | Risk reyestri: konfiqurasiya edilə bilən matris, ilkin/qalıq, emal, qəbul, istilik xəritəsi | M05 | Əsas məqsəd |
| 18 | Risk siqnalları (fişinq → risk, əl ilə təsdiqlə) | M05 | Modullararası dəyər |
| 19 | Sübut: yükləmə, virus skanı, hash, versiya, bitmə tarixi, sorğu, nəzarətə bağlama | M07 | ISO tələbi |
| 20 | Təsnifat taksonomiyası (əsas) + obyektlərə tətbiq + etiket | M10 (qismən) | Sübut/sənəd üçün lazımdır |
| 21 | Təhlükəsizlik hadisələrinin bildirilməsi (sadə forma + anonim) | M15 | Aşağı xərc, yüksək dəyər |
| 22 | Employee + Security dashboard-ları | M16 | Görünürlük |
| 23 | 12 hesabat (RPT-01…RPT-12, RPT-15) | M16 | Sübut və idarəetmə |
| 24 | Platforma administrasiyası + konfiqurasiya + sağlamlıq | M18 | Əməliyyat |
| 25 | SIEM inteqrasiyası (CEF çıxış) | I7 | Təhlükəsizlik tələbi |
| 26 | Backup/restore proseduru + sənədləşdirmə | — | Əməliyyat |
22.3 MVP-dən KƏNAR (əsaslandırma ilə)
| Funksiya | Faza | Niyə təxirə salınır |
|---|---|---|
| Audit idarəetməsi (plan, checklist, tapıntı, CAP) | 2 | İlk il daxili audit əl ilə də aparıla bilər; nəzarət tədbirləri və sübut bazası əvvəl qurulmalıdır |
| Aktiv reyestri | 2 | Risk qiymətləndirmə mətn sahəsi ilə də başlaya bilər; struktur reyestr sonra |
| Təchizatçı riski | 2 | Ayrıca prosesdir, gecikdirmə biznes dəyərini azaltmır |
| Executive dashboard | 2 | Əvvəl məlumat toplanmalıdır (trend üçün ≥ 3 ay) |
| Məlumat inventarı və axın xəritəsi | 3 | DLP-nin ön şərtidir, MVP-də DLP yoxdur |
| Həssas məlumat aşkarlanması | 3 | |
| DLP siyasətləri və hadisələri | 3 | A7 fərziyyəsi: endpoint agent ayrıca layihədir |
| Kerberos SSO, FIDO2 | 2 | TOTP MFA kifayətdir |
| Outlook add-in | 2 | Poçt qutusu ilə fallback var |
| SCORM/xAPI | 2 | Native dərs formatı kifayətdir |
| Ticketing inteqrasiyası | 2 | Daxili tapşırıqlar kifayətdir |
| Avtomatik sübut toplanması | 4 | |
| AI köməkçilər, anomaliya aşkarlanması | 4 | |
| NIST CSF, PCI DSS və digər framework-lər | 2+ | Import mexanizmi MVP-də hazırdır, məzmun sonra |
| Mobil tətbiq (native) | — | Responsive web kifayətdir |
22.4 MVP uğur meyarları (ölçülə bilən)
| # | Meyar | Ölçmə |
|---|---|---|
| 1 | 100% işçi SSO ilə daxil olur, rolları avtomatik | AD sinxronizasiya hesabatı |
| 2 | ≥ 3 məcburi siyasət nəşr olunub, ≥ 90% tanışlıq | RPT-05 |
| 3 | ISO 27001 Annex A 93 nəzarət tədbiri sistemdə, SoA generasiya olunur | RPT-07 |
| 4 | ≥ 1 fişinq kampaniyası təhlükəsiz keçirilib | Kampaniya hesabatı + təhlükəsizlik testi PASS |
| 5 | ≥ 30 risk, hər birinin sahibi və qalıq riski var | RPT-10 |
| 6 | ≥ 50 sübut yüklənib və nəzarət tədbirlərinə bağlanıb | RPT-15 |
| 7 | ≥ 95% işçi ən azı 1 təlimi tamamlayıb | RPT-01 |
| 8 | Bütün kritik əməliyyatlar audit logunda, bütövlük yoxlaması keçir | Bütövlük hesabatı |
| 9 | Negative authorization testlərinin 100%-i keçir | CI nəticəsi |
| 10 | Penetrasiya testində kritik tapıntı yoxdur | Pentest hesabatı |
| 11 | UAT-da kritik ssenarilərin 100%-i uğurlu | UAT hesabatı |
| 12 | Backup bərpa testi uğurlu (RTO ≤ 4 saat) | Bərpa hesabatı |
23. Development roadmap
23.1 Ümumi mənzərə
| Faza | Ad | Həftə | Komanda | Əsas nəticə |
|---|---|---|---|---|
| 0 | Discovery və Foundation | 1–8 | 5 | Arxitektura, RBAC, audit log, iş axını, dizayn sistemi |
| 1 | MVP | 9–28 | 8–9 | İstismara verilə bilən platforma (§22) |
| 2 | GRC genişlənməsi | 29–44 | 8 | Audit, aktiv, təchizatçı, executive |
| 3 | Təsnifat və DLP | 45–62 | 9 | Tam məlumat qorunması qatı |
| 4 | Avtomatlaşdırma və analitika | 63–76 | 7 | Avtomatik sübut, təkmil analitika, AI köməkçilər |
Komanda tərkibi (Faza 1 pik): 1 Tech Lead, 3 Backend, 2 Frontend, 1 DevSecOps, 1 QA Automation, 1 UX/UI, 0.5 Product Owner, 0.5 GRC mütəxəssisi (biznes analitik rolunda), 0.5 Security Architect (məsləhətçi).
23.2 Faza 0 — Discovery və Foundation (8 həftə)
Skoup
| # | İş | Nəticə |
|---|---|---|
| 0.1 | Detallı tələblərin toplanması (workshop ×6) | Tələblər sənədi, terminologiya lüğəti təsdiqi |
| 0.2 | Təşkilati strukturun modelləşdirilməsi | OU/şöbə xəritəsi, skoup qaydaları |
| 0.3 | AD discovery (atributlar, qruplar, OU-lar, servis hesabı) | AD inteqrasiya spesifikasiyası |
| 0.4 | Risk metodologiyasının təsdiqi (matris, şkalalar, iştaha) | Metodologiya sənədi (rəhbərlik təsdiqi) |
| 0.5 | Təsnifat taksonomiyasının ilkin layihəsi | Səviyyələr + qaydalar (təsdiqə) |
| 0.6 | Təhlükəsizlik arxitekturası + threat model | §10, §20 təsdiqi |
| 0.7 | Repo, CI/CD, mühitlər (dev/test/staging), registry, Vault | İşləyən pipeline |
| 0.8 | Modul karkası + arxitektura testləri | Boş modullar + sərhəd yoxlaması |
| 0.9 | RBAC nüvəsi (7 səviyyə, skoup, SoD) | İşləyən avtorizasiya + testlər |
| 0.10 | Audit log servisi (hash zənciri, möhür, SIEM) | İşləyən + bütövlük testləri |
| 0.11 | İş axını mühərriki (state machine, tapşırıq, təsdiq) | İşləyən + konfiqurasiya UI-nin karkası |
| 0.12 | Bildiriş servisi (şablon, çoxdilli, email) | İşləyən |
| 0.13 | Dizayn sistemi (40 komponent, Storybook, AZ font/tipoqrafiya) | @etimad/ui paketi |
| 0.14 | Lokalizasiya karkası (AZ/EN/RU) | i18n işləyir |
| 0.15 | Auth (OIDC + Keycloak + AD federasiya + MFA) | Giriş işləyir |
Təhlükəsizlik tələbləri
Vault quraşdırılıb və istifadə olunur; CI-də SAST/SCA/secret scan aktiv; audit log dəyişməzliyi DB səviyyəsində təsdiqlənib; bütün mühitlərdə TLS.
DB dəyişiklikləri
core sxemi (organization, ou, department, user, role, permission, group), workflow sxemi (definition, instance, task, approval, notification), auditlog sxemi (partisiyalı cədvəl, seal), object_link, status_definition.
Test halları
RBAC neqativ testləri (≥ 50), audit bütövlük testləri (AL-1…AL-9), iş axını keçid testləri, auth testləri, arxitektura testləri.
Definition of Done (Faza 0)
- <input type="checkbox" disabled> Bütün 15 iş tamamlanıb və nümayiş olunub
- <input type="checkbox" disabled> CI pipeline bütün qapılarla işləyir (blok testlər daxil)
- <input type="checkbox" disabled> Audit log bütövlüyü DB səviyyəsində sübut olunub (UPDATE/DELETE exception)
- <input type="checkbox" disabled> RBAC neqativ testləri keçir
- <input type="checkbox" disabled> Dizayn sistemi Storybook-da sənədləşdirilib, accessibility yoxlanılıb
- <input type="checkbox" disabled> AD test mühitinə qoşulub və sinxronizasiya işləyir
- <input type="checkbox" disabled> Arxitektura qərarları ADR kimi sənədləşdirilib
- <input type="checkbox" disabled> Risk metodologiyası və təsnifat taksonomiyası rəhbərlik tərəfindən təsdiqlənib
Risklər
| Risk | Mitigasiya |
|---|---|
| AD-yə test girişi gecikir | Samba DC ilə paralel işləmək, sonra real AD-yə keçid |
| Risk metodologiyası razılaşdırıla bilmir | Default 5×5 ilə başlamaq, sonra konfiqurasiya ilə dəyişmək |
| Terminologiya razılaşdırılmır | Lüğəti §0.3-dən başlamaq, iterativ təsdiq |
Mürəkkəblik: Yüksək (bünövrə). Təxmini effort: 200 adam-gün.
23.3 Faza 1 — MVP (20 həftə)
Sprint planı (2 həftəlik sprintlər)
| Sprint | Əsas məzmun |
|---|---|
| S1 (h9–10) | AD sinxronizasiya tam, istifadəçi/şöbə UI, admin panel karkası |
| S2 (h11–12) | Təlim: dərs, kateqoriya, media, proqram, pleyer |
| S3 (h13–14) | Təlim: kampaniya, təyinat qaydaları, imtahan, sertifikat |
| S4 (h15–16) | Siyasət: redaktor, versiya, diff, təsdiq iş axını |
| S5 (h17–18) | Siyasət: nəşr, tanışlıq, PDF ixrac, istisnalar |
| S6 (h19–20) | Uyğunluq: framework import, nəzarət tədbirləri, mapping |
| S7 (h21–22) | Uyğunluq: SoA, bal, boşluq analizi; təsnifat (əsas) |
| S8 (h23–24) | Risk: reyestr, matris, qiymətləndirmə, istilik xəritəsi, emal, qəbul |
| S9 (h25–26) | Fişinq: şablon, landing, göndərən, hədəfləmə, təsdiq, göndərmə, izləmə |
| S10 (h27–28) | Sübut, HRS, risk siqnalları, dashboard-lar, hesabatlar, hadisə bildirmə, stabilləşdirmə |
Epik → User story nümunələri (tam siyahı §25-də)
Hər sprint üçün 8–15 user story, hər birinin qəbul meyarları §25 formatındadır.
Təhlükəsizlik tələbləri (Faza 1)
- §4.2.5 fişinq kredensial dizaynı tam realizasiya + CI testləri (PS-1…PS-14)
- Fayl yükləmə təhlükəsizliyi (S1–S12) tam
- Bütün endpoint-lərdə obyekt səviyyəsində avtorizasiya
- Penetrasiya testi (relizdən 3 həftə əvvəl), kritik tapıntılar bloklayıcı
- DAST nightly aktiv
DB dəyişiklikləri
training, phishing, policy, compliance, risk, evidence, classification, incident sxemləri (§13).
API dəyişiklikləri
~180 endpoint (§4-dəki modul API-ləri), OpenAPI sənədləşdirilmiş.
UI səhifələri
~65 səhifə (§4-dəki modul UI siyahıları).
Definition of Done (Faza 1)
- <input type="checkbox" disabled> §22.4-dəki 12 uğur meyarının hamısı ödənilib
- <input type="checkbox" disabled> Bütün MVP funksiyaları UAT-dan keçib
- <input type="checkbox" disabled> Penetrasiya testi: kritik/yüksək tapıntı yoxdur
- <input type="checkbox" disabled> Performans hədəfləri (§19.1) ödənilib
- <input type="checkbox" disabled> Accessibility: axe-core 0 kritik
- <input type="checkbox" disabled> AZ/EN/RU tərcümələr tam
- <input type="checkbox" disabled> İstifadəçi təlimatı (AZ) və admin təlimatı hazırdır
- <input type="checkbox" disabled> Backup/restore test olunub
- <input type="checkbox" disabled> İstismara vermə planı və rollback planı təsdiqlənib
- <input type="checkbox" disabled> Dəstək prosesi (support) müəyyən edilib
Risklər
| Risk | Ehtimal | Təsir | Mitigasiya |
|---|---|---|---|
| Fişinq təhlükəsizlik dizaynı gec anlaşılır | Orta | Kritik | S9-dan əvvəl ayrıca təhlükəsizlik review; prototip S5-də |
| ISO məzmununun daxil edilməsi gecikir | Yüksək | Yüksək | GRC mütəxəssisi S6-dan əvvəl məzmunu hazırlasın (paralel iş) |
| AD real mühitdə fərqli davranır | Orta | Yüksək | S1-də real AD-yə erkən qoşulma |
| SMTP/gateway konfiqurasiyası gecikir | Orta | Orta | S7-dən infrastruktur komandası ilə paralel iş |
| UAT-da böyük UX dəyişikliyi tələbi | Orta | Orta | S5 və S8-də ara UAT sessiyaları |
Mürəkkəblik: Çox yüksək. Təxmini effort: 760 adam-gün.
23.4 Faza 2 — GRC genişlənməsi (16 həftə)
Skoup
| # | Funksiya | Sprint |
|---|---|---|
| 2.1 | Audit planı, audit, checklist (nəzarətlərdən avtomatik generasiya) | S11–S12 |
| 2.2 | Müsahibə, seçmə, iş kağızları, sübut sorğusu | S12 |
| 2.3 | Tapıntı, RCA, düzəldici tədbir, yoxlama, bağlanma | S13 |
| 2.4 | Audit hesabatı (PDF/DOCX), audit hazırlığı balı | S13–S14 |
| 2.5 | Aktiv reyestri + import + sahiblik attestasiyası | S14 |
| 2.6 | Təchizatçı: profil, sorğu vərəqəsi, qiymətləndirmə, risk balı, offboarding | S15–S16 |
| 2.7 | Executive dashboard + RPT-13, 14, 16, 17, 21 | S17 |
| 2.8 | Əlavə framework-lər (NIST CSF 2.0, CIS Controls) + cross-mapping | S17 |
| 2.9 | Kerberos SSO, FIDO2, Outlook add-in | S18 |
| 2.10 | Ticketing inteqrasiyası, SCORM/xAPI | S18 |
Asılılıqlar
Faza 1 tam (nəzarət tədbirləri, sübut, risk); aktiv reyestri risk qiymətləndirməsinin təkmilləşdirilməsi üçün.
Təhlükəsizlik tələbləri
Xarici auditor girişinin izolyasiyası və müddətliliyi; iş kağızlarının auditee-dən gizlədilməsi; təchizatçı portalının DMZ izolyasiyası (əgər aktivləşdirilirsə).
Definition of Done
- <input type="checkbox" disabled> Tam bir daxili audit dövrü platformada aparılıb (pilot)
- <input type="checkbox" disabled> Audit hazırlığı balı hesablanır və izah olunur
- <input type="checkbox" disabled> ≥ 200 aktiv reyestrdə, hamısının sahibi və təsnifatı var
- <input type="checkbox" disabled> ≥ 20 təchizatçı qiymətləndirilib
- <input type="checkbox" disabled> Executive dashboard rəhbərlik tərəfindən qəbul edilib
- <input type="checkbox" disabled> İkinci framework (NIST CSF) mapping ilə əlavə olunub
Mürəkkəblik: Yüksək. Effort: 550 adam-gün.
23.5 Faza 3 — Təsnifat və DLP (18 həftə)
Skoup
| # | Funksiya | Sprint |
|---|---|---|
| 3.1 | Təsnifat taksonomiyası tam (səviyyə siyasətləri, endirmə iş axını) | S19 |
| 3.2 | Fayl etiketləmə (Office metadata + vizual + HMAC) | S20 |
| 3.3 | Məlumat inventarı + axın xəritəsi + vizualizasiya | S20–S21 |
| 3.4 | Həssas məlumat tipləri kitabxanası (AZ kontekstində) | S21 |
| 3.5 | Detection engine (regex, keyword, dictionary, checksum, context, proximity) | S22 |
| 3.6 | EDM, fingerprinting, OCR, arxiv inspeksiyası | S23 |
| 3.7 | Qayda test mühərriki (sandbox, backtest, regression) | S23 |
| 3.8 | DLP siyasət qurucusu + rejimlər + versiyalaşdırma + münaqişə detektoru | S24 |
| 3.9 | DLP istisnaları + təsdiq iş axını | S24 |
| 3.10 | DLP Integration Gateway (qayda paketi, imza, hadisə qəbulu, normalizasiya) | S25 |
| 3.11 | DLP hadisə idarəetməsi (L0/L1/L2, triage, istifadəçi/müdir cavabı) | S26 |
| 3.12 | DLP dashboard + RPT-18, 19, 20 | S27 |
| 3.13 | ETİMAD daxili DLP icrası (ixrac nəzarəti, etiket, su nişanı) | S27 |
Kritik ön şərtlər
- Endpoint/email DLP məhsulunun seçilmiş və quraşdırılmış olması (A7) — əks halda yalnız orkestrasiya qatı işləyir
- Təsnifat taksonomiyasının rəsmi təsdiqi (rəhbərlik)
- Data owner-lərin təyin edilmiş olması
Təhlükəsizlik tələbləri
§4.13.4 L0/L1/L2 modeli tam; DS-1…DS-12 testləri; qayda paketinin imzalanması; EDM mənbəyinin silinməsi; məzmun retention (90 gün).
Definition of Done
- <input type="checkbox" disabled> Təsnifat taksonomiyası təsdiqlənib və ≥ 500 obyektə tətbiq olunub
- <input type="checkbox" disabled> Məlumat inventarında ≥ 30 məlumat toplusu, axın xəritəsi qurulub
- <input type="checkbox" disabled> ≥ 15 həssas məlumat tipi konfiqurasiya olunub və test edilib
- <input type="checkbox" disabled> Ən azı 1 DLP siyasəti tam rollout dövrünü (Test→Enforce) keçib
- <input type="checkbox" disabled> Yanlış pozitiv nisbəti < 10%
- <input type="checkbox" disabled> DS-1…DS-12 təhlükəsizlik testləri keçir
- <input type="checkbox" disabled> Konnektor inteqrasiyası real DLP məhsulu ilə işləyir
Mürəkkəblik: Çox yüksək. Effort: 680 adam-gün.
23.6 Faza 4 — Avtomatlaşdırma və analitika (14 həftə)
Skoup
| # | Funksiya | Dəyər |
|---|---|---|
| 4.1 | Avtomatik sübut toplanması (AD parol siyasəti, backup statusu, antivirus, patch, log konfiqurasiyası) | Sübut əməyinin 40% azalması |
| 4.2 | Təkmil HRS (davranış modeli, kontekst, peer qrup normallaşdırması) | Dəqiqlik |
| 4.3 | Nəzarət effektivliyi analitikası (test nəticələrindən trend) | Obyektivlik |
| 4.4 | Risk korrelyasiyası (əlaqəli risklərin aşkarlanması, kaskad təsir) | Keyfiyyət |
| 4.5 | Ağıllı təlim təyinatı (zəiflik profilinə görə şəxsi tövsiyələr) | Effektivlik |
| 4.6 | Anomaliya aşkarlanması (qeyri-adi giriş/ixrac/baxış davranışı) | Daxili təhdid |
| 4.7 | AI köməkçi: siyasət layihəsinin hazırlanması | Sürət |
| 4.8 | AI köməkçi: audit hazırlığı (boşluq izahı, sübut təklifi) | Sürət |
| 4.9 | Mapping təklifi (framework cross-mapping avtomatik təklif) | Sürət |
| 4.10 | Proqnozlaşdırma (risk trendi, uyğunluq proqnozu) | Planlaşdırma |
⚠️ AI istifadəsi üçün normativ qaydalar
| # | Qayda |
|---|---|
| AI-1 | On-premise model məcburidir — heç bir məlumat qurumdan kənara çıxmır (lokal LLM: Llama/Qwen sinifli model, öz GPU serverində) |
| AI-2 | AI heç vaxt avtonom qərar vermir — yalnız təklif; insan təsdiqi məcburi |
| AI-3 | Məxfi və xüsusi əhəmiyyətli məlumat AI-yə verilmir (təsnifat filtri) |
| AI-4 | Hər AI təklifi source: ai_suggestion ilə işarələnir və audit olunur |
| AI-5 | AI-nin istifadə etdiyi kontekst loglanır (izah edilə bilənlik) |
| AI-6 | AI funksiyaları feature flag ilə tam söndürülə bilər |
| AI-7 | Model və versiyası qeyd olunur (təkrar istehsal oluna bilənlik) |
Definition of Done
- <input type="checkbox" disabled> Avtomatik sübut ≥ 40% nəzarət tədbirini əhatə edir
- <input type="checkbox" disabled> Anomaliya aşkarlanması yanlış pozitiv nisbəti < 15%
- <input type="checkbox" disabled> AI təklifləri insan təsdiqi olmadan heç nə dəyişmir (test)
- <input type="checkbox" disabled> Məxfi məlumat AI-yə ötürülmür (test)
Mürəkkəblik: Yüksək. Effort: 450 adam-gün.
23.7 Buraxılış strategiyası
| Aspekt | Yanaşma |
|---|---|
| Mühitlər | dev → test → staging (prod kopyası, anonimləşdirilmiş) → prod |
| Buraxılış tezliyi | Faza daxilində 2 həftədə bir (test mühitinə), fazada bir dəfə prod |
| Miqrasiya | Forward-only, geri uyğun (expand-contract pattern); hər miqrasiya rollback skripti ilə |
| Feature flag | Yeni modullar bağlı vəziyyətdə deploy olunur, sonra aktivləşdirilir |
| Pilot | Hər faza: 1 şöbə (50–100 nəfər), 2 həftə, sonra tam yayım |
| Rollback | Konteyner imicinin əvvəlki versiyası + DB geri uyğunluğu; RTO ≤ 30 dəq |
| İstifadəçi hazırlığı | Hər faza: video təlimat (AZ), qısa bələdçi, daxili çempionlar (hər şöbədə 1 nəfər) |
| Dəstək | Faza 1-dən: daxili helpdesk kateqoriyası + platformadaxili "Kömək" bölməsi |
24. Prioritetləşdirilmiş backlog
24.1 Prioritetləşdirmə metodologiyası
MoSCoW + dəyər/effort matrisi. Prioritet nömrəsi: P0 (bloklayıcı bünövrə) → P1 (MVP must) → P2 (MVP should) → P3 (Faza 2) → P4 (Faza 3) → P5 (Faza 4).
Estimasiya: Story point (Fibonacci: 1, 2, 3, 5, 8, 13, 21). 1 SP ≈ 0.5 adam-gün (komandanın velositesi ilə kalibrlənəcək).
24.2 Epiklər
| Epic | Ad | Faza | SP | Prioritet |
|---|---|---|---|---|
| E-01 | Platforma bünövrəsi (repo, CI/CD, mühitlər) | 0 | 55 | P0 |
| E-02 | Kimlik və giriş (AD, SSO, MFA) | 0–1 | 89 | P0 |
| E-03 | RBAC və SoD | 0 | 89 | P0 |
| E-04 | Audit izi | 0 | 55 | P0 |
| E-05 | İş axını, tapşırıq və bildiriş mühərriki | 0 | 89 | P0 |
| E-06 | Dizayn sistemi və lokalizasiya | 0 | 55 | P0 |
| E-07 | Təşkilati struktur və istifadəçi idarəetməsi | 1 | 34 | P1 |
| E-08 | Təlim məzmunu və kataloq | 1 | 55 | P1 |
| E-09 | Təlim kampaniyası və təyinat | 1 | 55 | P1 |
| E-10 | İmtahan və sertifikat | 1 | 55 | P1 |
| E-11 | Siyasət redaktoru və versiyalaşdırma | 1 | 55 | P1 |
| E-12 | Siyasət təsdiqi və nəşri | 1 | 34 | P1 |
| E-13 | Siyasətlə tanışlıq | 1 | 34 | P1 |
| E-14 | Siyasət istisnaları | 1 | 21 | P2 |
| E-15 | Framework və nəzarət tədbirləri | 1 | 89 | P1 |
| E-16 | Control mapping və SoA | 1 | 55 | P1 |
| E-17 | Uyğunluq balı və boşluq analizi | 1 | 34 | P1 |
| E-18 | Risk reyestri və qiymətləndirmə | 1 | 89 | P1 |
| E-19 | Risk emalı və qəbulu | 1 | 34 | P1 |
| E-20 | Risk siqnalları (modullararası) | 1 | 34 | P2 |
| E-21 | Fişinq şablon və landing | 1 | 55 | P1 |
| E-22 | Fişinq kampaniya və göndərmə | 1 | 89 | P1 |
| E-23 | Fişinq izləmə və hadisələr | 1 | 34 | P1 |
| E-24 | İnsan Riski Profili | 1 | 34 | P2 |
| E-25 | Sübut idarəetməsi | 1 | 55 | P1 |
| E-26 | Təsnifat (əsas) | 1 | 34 | P2 |
| E-27 | Təhlükəsizlik hadisələrinin bildirilməsi | 1 | 34 | P2 |
| E-28 | Dashboard (employee + security) | 1 | 55 | P1 |
| E-29 | Hesabat mühərriki və 13 hesabat | 1 | 55 | P1 |
| E-30 | Platforma administrasiyası | 1 | 34 | P1 |
| E-31 | SIEM inteqrasiyası | 1 | 21 | P2 |
| E-32 | Audit planlaması və icrası | 2 | 89 | P3 |
| E-33 | Tapıntı və düzəldici tədbir | 2 | 55 | P3 |
| E-34 | Audit hazırlığı balı | 2 | 21 | P3 |
| E-35 | Aktiv reyestri | 2 | 55 | P3 |
| E-36 | Təchizatçı riski | 2 | 89 | P3 |
| E-37 | Executive dashboard | 2 | 34 | P3 |
| E-38 | Əlavə framework-lər və cross-mapping | 2 | 34 | P3 |
| E-39 | Genişlənmiş autentifikasiya (Kerberos, FIDO2) | 2 | 34 | P3 |
| E-40 | Outlook add-in və ticketing | 2 | 34 | P3 |
| E-41 | Təsnifat (tam) və fayl etiketləmə | 3 | 89 | P4 |
| E-42 | Məlumat inventarı və axın xəritəsi | 3 | 55 | P4 |
| E-43 | Həssas məlumat tipləri və detection engine | 3 | 144 | P4 |
| E-44 | DLP siyasət qurucusu | 3 | 89 | P4 |
| E-45 | DLP Integration Gateway | 3 | 89 | P4 |
| E-46 | DLP hadisə idarəetməsi | 3 | 89 | P4 |
| E-47 | DLP analitikası | 3 | 34 | P4 |
| E-48 | Avtomatik sübut toplanması | 4 | 89 | P5 |
| E-49 | Təkmil analitika və anomaliya | 4 | 89 | P5 |
| E-50 | AI köməkçilər | 4 | 89 | P5 |
Cəmi: ~2 900 SP ≈ 1 450 adam-gün ≈ 2 640 adam-gün (overhead, test, sənədləşdirmə, görüşlərlə birlikdə ~1.8× əmsalı).
24.3 Sprint 1–10 detallı backlog (MVP)
| Sprint | Story ID | Story | SP | Prioritet |
|---|---|---|---|---|
| S1 | US-001 | AD-dən istifadəçilərin sinxronizasiyası | 8 | P0 |
| S1 | US-002 | AD qrup və OU sinxronizasiyası | 5 | P0 |
| S1 | US-003 | AD → rol mapping konfiqurasiyası | 5 | P0 |
| S1 | US-004 | Sinxronizasiya hesabatı və xəta idarəetməsi | 3 | P1 |
| S1 | US-005 | SSO ilə giriş (OIDC) | 8 | P0 |
| S1 | US-006 | MFA (TOTP) qeydiyyatı və doğrulaması | 5 | P0 |
| S1 | US-007 | İstifadəçi profili və dil seçimi | 3 | P1 |
| S1 | US-008 | Admin: istifadəçi siyahısı, rol təyinatı, SoD yoxlaması | 8 | P0 |
| S2 | US-009 | Dərs yaratma (mətn/şəkil) | 8 | P1 |
| S2 | US-010 | Video dərs + altyazı tələbi | 5 | P1 |
| S2 | US-011 | Dərs kateqoriyaları və versiyalaşdırma | 5 | P1 |
| S2 | US-012 | Dərs tərcümələri (AZ/EN/RU) | 5 | P1 |
| S2 | US-013 | Təlim proqramı yaratma | 5 | P1 |
| S2 | US-014 | Dərs pleyeri + irəliləyişin saxlanması | 8 | P1 |
| S3 | US-015 | Təlim kampaniyası sihirbazı | 8 | P1 |
| S3 | US-016 | Qayda əsaslı avtomatik təyinat + simulyasiya | 13 | P1 |
| S3 | US-017 | Sual bankı və idxal | 5 | P1 |
| S3 | US-018 | İmtahan konfiqurasiyası (təsadüfi seçim, taymer, keçid balı) | 8 | P1 |
| S3 | US-019 | İmtahan keçirilməsi (server taymeri, cavabların saxlanması) | 8 | P1 |
| S3 | US-020 | Sertifikat generasiyası və doğrulanması | 5 | P1 |
| S3 | US-021 | Deadline, xatırlatma, eskalasiya | 5 | P1 |
| S4 | US-022 | Siyasət yaratma və rich-text redaktor | 13 | P1 |
| S4 | US-023 | Avtosave və qeyd olunmamış dəyişiklik xəbərdarlığı | 3 | P1 |
| S4 | US-024 | Versiyalaşdırma və dəyişiklik tarixçəsi | 5 | P1 |
| S4 | US-025 | Sənəd müqayisəsi (diff) | 8 | P2 |
| S4 | US-026 | Şərhlər və rəy sorğusu | 5 | P1 |
| S4 | US-027 | Təsdiq iş axını (SoD-1 ilə) | 8 | P1 |
| S5 | US-028 | Nəşr və effektiv tarix | 5 | P1 |
| S5 | US-029 | Tətbiq dairəsi (şöbə/AD qrupu/rol) | 5 | P1 |
| S5 | US-030 | Tanışlıq təsdiqi + qısa test | 8 | P1 |
| S5 | US-031 | Tanışlıq hesabatı və xatırlatma | 5 | P1 |
| S5 | US-032 | PDF/DOCX ixrac (su nişanı, təsnifat etiketi) | 8 | P1 |
| S5 | US-033 | Siyasət istisnaları (sorğu → təsdiq → avtomatik bitmə) | 8 | P2 |
| S6 | US-034 | Framework import (YAML/JSON) | 8 | P1 |
| S6 | US-035 | ISO 27001:2022 məzmununun yüklənməsi | 5 | P1 |
| S6 | US-036 | Nəzarət tədbiri CRUD + sahiblik | 8 | P1 |
| S6 | US-037 | Control mapping (N:M, versiyalanmış) | 8 | P1 |
| S6 | US-038 | Nəzarət tədbirinin statusu və effektivliyi | 5 | P1 |
| S6 | US-039 | Əlaqəli obyektlər paneli (universal) | 5 | P1 |
| S7 | US-040 | SoA generasiyası | 8 | P1 |
| S7 | US-041 | SoA baseline (dondurma + hash) | 5 | P1 |
| S7 | US-042 | SoA ixracı (PDF/XLSX) | 5 | P1 |
| S7 | US-043 | Uyğunluq balı + izah | 8 | P1 |
| S7 | US-044 | Boşluq analizi + tapşırıq yaratma | 5 | P1 |
| S7 | US-045 | Təsnifat səviyyələri və obyektlərə tətbiq | 8 | P2 |
| S8 | US-046 | Risk matrisi konfiqurasiyası | 8 | P1 |
| S8 | US-047 | Risk yaratma sihirbazı | 13 | P1 |
| S8 | US-048 | Qalıq riskin nəzarət effektivliyindən hesablanması | 8 | P1 |
| S8 | US-049 | Risk istilik xəritəsi (accessible) | 5 | P1 |
| S8 | US-050 | Risk emalı planı və tapşırıqlar | 5 | P1 |
| S8 | US-051 | Risk qəbulu (SoD-2, müddətli) | 5 | P1 |
| S9 | US-052 | Fişinq şablon redaktoru (vizual + HTML) | 13 | P1 |
| S9 | US-053 | Landing page qurucusu (kredensial təhlükəsizliyi) | 13 | P0 |
| S9 | US-054 | Göndərən profili və tracking domeni | 5 | P1 |
| S9 | US-055 | Hədəfləmə və istisna siyahıları | 8 | P1 |
| S9 | US-056 | Kampaniya təsdiq iş axını (yoxlama siyahısı) | 8 | P1 |
| S9 | US-057 | Göndərmə (paylanmış, sürət limitli) | 8 | P1 |
| S9 | US-058 | Hadisə izləmə (open/click/submit/report) | 8 | P1 |
| S9 | US-059 | Fövqəladə dayandırma | 5 | P0 |
| S10 | US-060 | Sübut yükləmə (virus skanı, hash, tip yoxlaması) | 13 | P1 |
| S10 | US-061 | Sübut bitmə tarixi və xəbərdarlıqlar | 5 | P1 |
| S10 | US-062 | Sübut sorğusu | 5 | P1 |
| S10 | US-063 | İnsan Riski Profili + izah | 8 | P2 |
| S10 | US-064 | Risk siqnalı (fişinq → risk təklifi) | 8 | P2 |
| S10 | US-065 | Employee dashboard | 8 | P1 |
| S10 | US-066 | Security dashboard | 13 | P1 |
| S10 | US-067 | Hesabat mühərriki + 13 hesabat | 13 | P1 |
| S10 | US-068 | Təhlükəsizlik hadisəsinin bildirilməsi (anonim daxil) | 8 | P2 |
| S10 | US-069 | SIEM CEF çıxışı | 5 | P2 |
| S10 | US-070 | Stabilləşdirmə, performans, accessibility düzəlişləri | 13 | P1 |
25. User story-lər və qəbul meyarları
25.1 Format
US-NNN | [Epic] | Prioritet | SP
Kim kimi: <rol>
İstəyirəm: <funksiya>
Ki: <biznes dəyəri>
Qəbul meyarları (Given/When/Then):
AC-1 ...
Təhlükəsizlik meyarları:
SC-1 ...
Definition of Done: kod + test + sənəd + a11y + lokalizasiya + audit log25.2 Bünövrə story-ləri
US-001 | E-02 | P0 | 8 SP — AD istifadəçilərinin sinxronizasiyası
Platforma administratoru olaraq AD-dəki istifadəçilərin platformaya avtomatik köçürülməsini istəyirəm ki, hər işçini əl ilə yaratmayım və məlumatlar həmişə aktual olsun.
Qəbul meyarları:
- AC-1: Given AD bağlantısı konfiqurasiya olunub, When tam sinxronizasiya işə salınır, Then bütün istifadəçilər
objectGUIDaçarı ilə yaradılır və mapping olunmuş atributlar doldurulur. - AC-2: Given istifadəçinin
sAMAccountName-i AD-də dəyişib, When sinxronizasiya işləyir, Then dublikat yaranmır, mövcud qeyd yenilənir. - AC-3: Given istifadəçi AD-də deaktiv edilib, When sinxronizasiya işləyir, Then
is_enabled=falseolur və aktiv sessiyaları ≤ 5 dəqiqə ərzində ləğv edilir. - AC-4: Given istifadəçi AD-də silinib, When tam sinxronizasiya işləyir, Then soft delete olunur, tarixi qeydləri (təlim, tanışlıq) qalır.
- AC-5: Given hesabda
servicePrincipalNamevar və ya istisna OU-dadır, When sinxronizasiya işləyir, Then hesabis_service_account=trueişarələnir və platformaya giriş ala bilmir. - AC-6: Given 10 000 istifadəçi var, When tam sinxronizasiya işləyir, Then ≤ 15 dəqiqədə tamamlanır.
- AC-7: Given sinxronizasiya zamanı bəzi qeydlərdə xəta var, When iş bitir, Then uğurlu qeydlər saxlanılır, xətalar hesabatda görünür, administratora bildiriş gedir.
- AC-8: Given bir işdə istifadəçilərin > 20%-i deaktiv/silinəcək, When sinxronizasiya işləyir, Then iş dayandırılır və administrator təsdiqi tələb olunur.
Təhlükəsizlik meyarları:
- SC-1: Yalnız LDAPS/StartTLS istifadə olunur; açıq LDAP konfiqurasiyası rədd edilir.
- SC-2: Sertifikat yoxlaması məcburidir;
TrustAllopsiyası mövcud deyil. - SC-3: Bind parolu yalnız Vault-dan alınır; DB-də, konfiqurasiya faylında və log-da görünmür.
- SC-4: LDAP filtr parametrləri RFC 4515 üzrə escape edilir (injection testi keçir).
- SC-5:
AD_SYNC_*hadisələri audit logunda.
US-003 | E-03 | P0 | 5 SP — AD qrupundan rol mapping
Platforma administratoru olaraq AD qruplarını platforma rollarına bağlamaq istəyirəm ki, rollar mərkəzləşdirilmiş şəkildə AD-dən idarə olunsun.
- AC-1: Mapping qaydası yaradıla bilir (AD qrupu → bir və ya bir neçə rol).
- AC-2: Atribut əsaslı mapping dəstəklənir (
title LIKE '%müdir%'→department_manager). - AC-3: Given istifadəçi AD qrupundan çıxarılıb, When sinxronizasiya işləyir, Then müvafiq rol dərhal ləğv olunur və aktiv sessiyada əks olunur (≤ 5 dəq).
- AC-4: AD-dən gələn rol platformada əl ilə silinə bilmir (yalnız müvəqqəti bloklama, əsaslandırma ilə).
- AC-5: Given mapping SoD qaydasını pozan rol kombinasiyası yaradır, When saxlanılır, Then xəbərdarlıq göstərilir və
SOD_*audit hadisəsi yazılır. - AC-6: Lokal (AD-dən asılı olmayan) rol təyinatları ayrıca işarələnir və 6 aylıq attestasiya tələb edir.
- SC-1: Rol dəyişikliyi
ROLE_ASSIGNED/ROLE_REVOKEDkimi audit olunur (köhnə/yeni dəyər).
US-004a | E-04 | P0 | 8 SP — Dəyişməz audit izi
Daxili auditor olaraq platformadakı bütün əməliyyatların dəyişdirilə bilməyən qeydini istəyirəm ki, istənilən hadisəni sübut edə bilim.
- AC-1: §16.2-dəki bütün əməliyyat kateqoriyaları loglanır.
- AC-2: Hər sətirdə aktor, əməliyyat, obyekt, köhnə/yeni dəyər, vaxt, IP, sessiya, korrelyasiya ID var.
- AC-3: Given istənilən rol, When audit log sətrini dəyişməyə/silməyə cəhd edir (UI/API/SQL), Then əməliyyat rədd edilir.
- AC-4: Hash zənciri hər sətirdə hesablanır və saatlıq möhürlənir.
- AC-5: Given DB-də sətir birbaşa dəyişdirilib, When gündəlik bütövlük yoxlaması işləyir, Then pozuntu aşkarlanır və kritik alarm yaranır.
- AC-6: Kritik hadisələr (auth, icazə, təsdiq) sinxron yazılır — audit yazılmazsa əməliyyat da uğursuz olur.
- AC-7: Audit log SIEM-ə real vaxtda CEF formatında göndərilir.
- AC-8: İstifadəçi
/my/activitysəhifəsində öz fəaliyyətini görə bilir. - AC-9: 100 mln sətirdə aktor+tarix filtri ≤ 3 saniyədə nəticə verir.
- SC-1: Parol, token, FİN, kart nömrəsi, DLP məzmunu log-da maskalanır (avtomatlaşdırılmış skan 0 nəticə).
- SC-2: Audit log ixracı öz növbəsində loglanır.
25.3 Təlim modulu story-ləri
US-016 | E-09 | P1 | 13 SP — Qayda əsaslı avtomatik təlim təyinatı
Təlim meneceri olaraq təlimlərin işçilərin roluna, şöbəsinə və riskinə görə avtomatik təyin olunmasını istəyirəm ki, hər dəfə əl ilə siyahı hazırlamayım.
- AC-1: Qayda qurucusunda şərtlər birləşdirilə bilir: AD qrupu, şöbə, vəzifə (wildcard), insan riski bandı, əvvəlki nəticə, vəzifəyə təyinat tarixi.
- AC-2: Given qayda yaradılıb, When "Simulyasiya et" basılır, Then neçə istifadəçiyə təsir edəcəyi və siyahı göstərilir — heç bir təyinat yaradılmır.
- AC-3: Given yeni istifadəçi AD-dən gəlir, When sinxronizasiya bitir, Then ≤ 15 dəqiqə ərzində uyğun qaydalara görə təyinatlar yaranır.
- AC-4: Given istifadəçinin şöbəsi dəyişir, When dəyişiklik sinxronizasiya olunur, Then yeni şöbənin məcburi proqramları təyin olunur, köhnə təyinatlar tarixçədə qalır.
- AC-5: Given istifadəçi fişinq simulyasiyasında uğursuz olur, When kampaniya hadisəsi emal olunur, Then konfiqurasiya olunmuş mikro-təlim təyin olunur.
- AC-6: Təkrar təyinat yaranmır (eyni proqram, eyni aktiv dövr üçün idempotent).
- AC-7: 5 000 istifadəçiyə təyinat ≤ 5 dəqiqədə (background job).
- SC-1: Xidməti hesablara təyinat yaranmır.
- SC-2:
ASSIGNMENT_RULE_CHANGEDvəTRAINING_ASSIGNEDaudit olunur.
US-019 | E-10 | P1 | 8 SP — İmtahanın keçirilməsi
Əməkdaş olaraq təlimdən sonra imtahan vermək istəyirəm ki, biliyimi təsdiqləyim və sertifikat alım.
- AC-1: Given dərslər tamamlanıb, When imtahan başladılır, Then konfiqurasiya olunmuş kvotalara görə təsadüfi suallar seçilir və variantlar qarışdırılır.
- AC-2: Taymer serverdə saxlanılır; brauzer bağlanıb açıldıqda qalan vaxt düzgün göstərilir.
- AC-3: Given vaxt bitib, When cavab göndərilir, Then qəbul edilmir (409) və cəhd avtomatik tamamlanır.
- AC-4: Eyni istifadəçi eyni imtahanda paralel iki cəhd aça bilmir.
- AC-5: Given bal keçid balından aşağıdır, When cəhd bitir, Then "keçmədi" göstərilir və cooldown müddətindən sonra təkrar cəhd mümkün olur.
- AC-6: Given maksimum cəhd sayı tükənib, When istifadəçi yenidən cəhd edir, Then bloklanır və müdirə eskalasiya olunur.
- AC-7: Nəticə səhifəsində bal, keçid statusu və (konfiqurasiya olunubsa) səhvlərin izahı göstərilir.
- SC-1: Düzgün cavab bayrağı heç bir API cavabında klientə göndərilmir (avtomatlaşdırılmış test).
- SC-2: Cavablar server tərəfdə yoxlanılır; klient hesablaması qəbul edilmir.
- SC-3:
EXAM_STARTED,EXAM_SUBMITTEDaudit olunur; nəticənin əl ilə dəyişdirilməsiEXAM_RESULT_OVERRIDDEN+ səbəb tələb edir.
25.4 Fişinq modulu story-ləri (kritik)
US-053 | E-21 | P0 | 13 SP — Kredensial simulyasiyası səhifəsi (təhlükəsiz)
Fişinq kampaniya meneceri olaraq işçilərin məlumat daxil etmə davranışını ölçmək istəyirəm, lakin heç bir real parolun saxlanmaması mütləq şərtdir.
- AC-1: Landing səhifəsində giriş forması göstərilir (konfiqurasiya olunmuş dizaynla).
- AC-2: Given istifadəçi formu doldurub göndərir, When göndərmə baş verir, Then serverə yalnız
{"fieldCount": n}göndərilir. - AC-3: Given göndərmə baş verib, When səhifə yenilənir, Then dərhal izah səhifəsi göstərilir: "Bu təhlükəsizlik simulyasiyası idi. Daxil etdiyiniz məlumat saxlanılmadı."
- AC-4: İzah səhifəsində parol dəyişmə tövsiyəsi və daxili link var; ittiham edən dil yoxdur.
- AC-5: Hadisə
DATA_SUBMITTEDkimi qeyd olunur (yalnız fakt + sahə sayı). - AC-6: Landing səhifəsi 3 dildə mövcuddur.
Təhlükəsizlik meyarları (BLOKLAYICI):
- SC-1: Klient JS
submithadisəsini kəsir,preventDefault()edir; heç bir sahə dəyəri şəbəkəyə çıxmır (şəbəkə trafiki testi). - SC-2: Server endpoint-i yalnız
application/jsonvə yalnız{fieldCount:int}sxemini qəbul edir;form-urlencoded/multipartbody parse edilmədən atılır. - SC-3: Reverse proxy bu marşrut üçün request body loglamır.
- SC-4: Tətbiq log filtri
password,pass,pwd,otp,pin,tokenaçarlarını redaktə edir. - SC-5: Landing servisi əsas verilənlər bazasına yazma girişinə malik deyil — yalnız mesaj növbəsinə.
- SC-6:
autocomplete="off",Cache-Control: no-store. - SC-7: CI testi: unikal test sətri göndərilir; DB, bütün log faylları, MQ və MinIO-da axtarılır → 0 nəticə. Uğursuzluq build-i bloklayır.
US-056 | E-22 | P1 | 8 SP — Kampaniya təsdiq iş axını
Təhlükəsizlik rəhbəri olaraq heç bir fişinq kampaniyasının nəzarətsiz göndərilməməsini istəyirəm ki, platforma real hücum aləti kimi istifadə edilə bilməsin.
- AC-1: Kampaniya
Draft→Ready for Review→Security Review→Approved→Scheduledmərhələlərindən keçir. - AC-2: Given kampaniya təsdiqlənməyib, When başlatma cəhdi edilir (UI və ya API), Then 409 qaytarılır.
- AC-3: Given kampaniyanı yaradan şəxs onu təsdiqləməyə cəhd edir, When təsdiq göndərilir, Then 403 və
SOD_VIOLATION_BLOCKEDaudit qeydi (SoD-10). - AC-4: Təsdiqdən əvvəl sistem yoxlama siyahısını göstərir (§4.2.6): hədəf sayı, xidməti hesabların istisnası, tracking domeninin fərqliliyi, landing təhlükəsizlik yoxlaması nəticəsi, SOC bildirişi, təlim təyinatı.
- AC-5: Given tracking domeni əsas qurum domeni ilə eynidir, When təsdiqə göndərilir, Then bloklanır.
- AC-6: Təsdiqləyici hədəf siyahısını görə bilir (ad sayı + nümunə).
- AC-7: Rədd halında səbəb məcburidir və yaradana bildiriş gedir.
- SC-1: Bütün mərhələ keçidləri audit olunur.
- SC-2: Kampaniya başladıqda SOC-a avtomatik bildiriş gedir (real hücumla qarışdırmamaq üçün).
US-059 | E-22 | P0 | 5 SP — Fövqəladə dayandırma
Təhlükəsizlik rəhbəri olaraq işləyən kampaniyanı dərhal dayandıra bilmək istəyirəm ki, gözlənilməz problem (biznes pozuntusu, panika, real hadisə ilə üst-üstə düşmə) halında ziyanı minimuma endirim.
- AC-1: Kampaniya detalında görünən "FÖVQƏLADƏ DAYANDIR" düyməsi var (qırmızı, təsdiq dialoqu ilə).
- AC-2: Səbəb məcburidir (min 20 simvol).
- AC-3: When dayandırma təsdiqlənir, Then ≤ 30 saniyə ərzində: göndərmə növbəsi boşaldılır, gözləyən emaillər ləğv edilir.
- AC-4: Mövcud tracking linklər neytral "Bu kampaniya dayandırılıb" səhifəsinə yönləndirilir.
- AC-5: SOC-a və kampaniya menecerinə dərhal bildiriş gedir.
- AC-6: Səlahiyyət:
phishing_manager,security_lead,platform_admin. - AC-7: Kampaniya
EmergencyStoppedstatusuna keçir; qismən nəticələr saxlanılır və hesabatda "dayandırılıb" qeydi ilə göstərilir. - SC-1:
PHISHING_CAMPAIGN_EMERGENCY_STOPPEDaudit + SIEM.
25.5 Uyğunluq və risk story-ləri
US-040 | E-16 | P1 | 8 SP — Statement of Applicability generasiyası
Compliance Officer olaraq ISO 27001 Annex A üzrə SoA-nı avtomatik yaratmaq istəyirəm ki, audit üçün əl ilə Excel hazırlamayım.
- AC-1: SoA Annex A-nın bütün 93 nəzarət tədbirini əhatə edir; heç biri siyahıdan düşmür.
- AC-2: Hər sətirdə: nəzarət ID, başlıq, tətbiq olunur/olunmur, əsaslandırma, əlaqəli daxili nəzarət tədbiri, icra statusu, sübut mövcudluğu, istisna, sahib, son baxış.
- AC-3: Given nəzarət tədbiri
not_applicablevə əsaslandırma boşdur, When SoA generasiya olunur, Then həmin sətir görünən şəkildə "ƏSASLANDIRMA TƏLƏB OLUNUR" kimi işarələnir. - AC-4: SoA PDF və XLSX formatında ixrac olunur; PDF rəsmi tərtibatdadır (§17.2).
- AC-5: 93 nəzarət tədbiri üçün PDF ≤ 20 saniyədə generasiya olunur.
- AC-6: İki SoA versiyası müqayisə oluna bilir (nə dəyişdi).
- SC-1:
SOA_GENERATED,SOA_EXPORTEDaudit olunur.
US-041 | E-16 | P1 | 5 SP — SoA baseline (dondurma)
Daxili auditor olaraq audit tarixinə SoA-nın dəyişməz nüsxəsini istəyirəm ki, sonradan dəyişdirilmədiyinə əmin olum.
- AC-1: SoA "Baseline yarat" ilə dondurulur; ad, tarix və təsvir verilir.
- AC-2: Baseline edilmiş SoA heç bir rol tərəfindən dəyişdirilə bilmir.
- AC-3: Baseline-ın SHA-256 hash-ı hesablanır və saxlanılır; yoxlanıla bilir.
- AC-4: Baseline rəhbərlik tərəfindən elektron təsdiqlənə bilir (təsdiq audit olunur).
- AC-5: Baseline-lar siyahıda tarixlə görünür və istənilən vaxt ixrac oluna bilər.
- SC-1:
SOA_BASELINEDaudit olunur.
US-048 | E-18 | P1 | 8 SP — Qalıq riskin avtomatik hesablanması
Risk meneceri olaraq qalıq riskin nəzarət tədbirlərinin effektivliyindən avtomatik hesablanmasını istəyirəm ki, qiymətləndirmə subyektiv olmasın və nəzarət dəyişikliyi dərhal əks olunsun.
- AC-1: Riskə nəzarət tədbirləri bağlandıqda effektivlik
Σ(score × coverage) / Σ(coverage)düsturu ilə hesablanır. - AC-2: Qalıq risk
inherent × (1 − effectiveness)kimi təklif olunur. - AC-3: Risk sahibi təklifin üstündən yaza bilər; bu halda əsaslandırma məcburidir və dəyər
manual_overrideişarəsi ilə UI-da görünür. - AC-4: Given nəzarət tədbirinin statusu
ineffective-ə dəyişir, When dəyişiklik saxlanılır, Then əlaqəli risklər üçün yenidən hesablama siqnalı yaranır. - AC-5: Hər hesablama
RiskAssessmenttarixçəsində mənbə (manual/control_change/automated_signal) ilə saxlanılır. - AC-6: UI-da hesablamanın izahı göstərilir (hansı nəzarət nə qədər töhfə verdi).
- SC-1:
RISK_SCORE_CHANGEDköhnə/yeni dəyərlərlə audit olunur.
US-051 | E-19 | P1 | 5 SP — Risk qəbulu
Risk sahibi olaraq aradan qaldırıla bilməyən riski rəsmi qaydada qəbul etdirmək istəyirəm ki, qərar sənədləşdirilsin və məsuliyyət aydın olsun.
- AC-1: Qəbul sorğusunda əsaslandırma məcburidir (min 100 simvol).
- AC-2: Təsdiqçi qalıq risk səviyyəsinə görə avtomatik təyin olunur (Aşağı→sahib, Orta→müdir, Yüksək→CISO, Kritik→rəhbərlik).
- AC-3: Given risk sahibi öz riskinin qəbulunu təsdiqləməyə cəhd edir, When təsdiq göndərilir, Then 403 +
SOD_VIOLATION_BLOCKED(SoD-2). - AC-4: Qəbulun bitmə tarixi məcburidir və maksimum müddəti keçə bilməz (default 12 ay).
- AC-5: Given qəbul müddəti bitir, When bitmə tarixi çatır, Then risk avtomatik
Under Reviewstatusuna keçir və sahibə bildiriş gedir. - AC-6: Qəbul edilmiş risklər RPT-12 hesabatında və executive dashboard-da görünür.
- SC-1:
RISK_ACCEPTED,RISK_ACCEPTANCE_EXPIREDaudit olunur.
25.6 Sübut və DLP story-ləri
US-060 | E-25 | P1 | 13 SP — Sübut yükləmə (təhlükəsiz)
Sübut sahibi olaraq nəzarət tədbirinin icrasını təsdiqləyən faylı yükləmək istəyirəm ki, audit zamanı sübut hazır olsun.
- AC-1: Drag-and-drop ilə bir və ya bir neçə fayl yüklənə bilir; toplu metadata təyinatı mümkündür.
- AC-2: Yükləmə zamanı: başlıq, tip, sahib, təsnifat, etibarlılıq müddəti, əlaqəli nəzarət tədbiri göstərilir.
- AC-3: Given fayl yüklənir, When yükləmə tamamlanır, Then SHA-256 hash hesablanır və saxlanılır.
- AC-4: Given eyni sübutun yeni nüsxəsi yüklənir, When saxlanılır, Then yeni versiya yaranır, köhnəsi qalır.
- AC-5: Bitmə tarixinə 30/14/7 gün qalmış bildiriş gedir; keçdikdə status
Expiredolur və əlaqəli nəzarət tədbirinin uyğunluq balı azalır.
Təhlükəsizlik meyarları:
- SC-1: Magic bytes + uzantı + MIME uyğunluğu yoxlanılır; uyğunsuzluq → rədd (400).
- SC-2: ClamAV skanı aparılır;
cleanolmadan fayl əlçatan olmur;infected→ karantin + kritik alarm. - SC-3: Fayl MinIO-da SSE-KMS ilə şifrələnir (hər fayl üçün ayrı DEK).
- SC-4: Yükləmə linki 5 dəqiqəlik, imzalı və istifadəçiyə bağlıdır.
- SC-5:
evidence:previewvəevidence:downloadayrı icazələrdir. - SC-6: Məxfi təsnifatlı sübuta
platform_adminavtomatik giriş almır. - SC-7: ZIP daxili yoxlanılır (dərinlik ≤3, açılmış ölçü ≤1 GB, fayl sayı limiti).
- SC-8:
EVIDENCE_UPLOADED,EVIDENCE_PREVIEWED,EVIDENCE_DOWNLOADEDaudit olunur (səbəb tələb olunan hallarda səbəblə).
US-DLP-01 | E-46 | P4 | 13 SP — DLP hadisəsinin triage-ı (məlumat minimallaşdırılması ilə)
DLP analitiki olaraq hadisəni qiymətləndirmək istəyirəm, lakin işim üçün lazım olandan artıq həssas məlumat görməməliyəm.
- AC-1: Hadisə siyahısında L0 metadata görünür: istifadəçi, şöbə, kanal, siyasət, severity, vaxt, SLA sayğacı, fayl adı (təsnifata görə qismən maskalana bilər).
- AC-2: Hadisə detalında L1 maskalanmış uyğunluqlar göstərilir:
AZE****,**** **** **** 1234, kontekst ±20 simvol. - AC-3: Given analitik tam məzmun tələb edir, When "Tam məzmuna giriş" basılır, Then səbəb (min 50 simvol) və ikinci təsdiqçi tələb olunur.
- AC-4: Given təsdiq alınıb, When məzmun açılır, Then giriş 30 dəqiqədən sonra avtomatik bitir və hər baxış audit olunur.
- AC-5: Məlumat sahibinə L2 girişi haqqında bildiriş gedir.
- AC-6: Analitik hadisəni
Confirmed/False Positive/Duplicatekimi triage edə bilir. - AC-7: FP işarələndikdə qayda tuning backlog-una düşür və qaydanın FP nisbəti yenilənir.
- AC-8: Toplu triage mümkündür (eyni siyasətin çoxlu hadisəsi).
- AC-9: SLA keçdikdə avtomatik eskalasiya işə düşür.
Təhlükəsizlik meyarları:
- SC-1:
dlp_analystL2 məzmuna heç bir yolla (UI/API) təsdiqsiz çata bilmir (403). - SC-2:
dlp_adminvəplatform_adminhadisə məzmununa ümumiyyətlə çata bilmir (403). - SC-3: Maskalama serverdə aparılır; maskalanmamış dəyər heç vaxt klientə göndərilmir.
- SC-4: Maskalanmış cavabda tam FİN/kart regex axtarışı 0 nəticə verir.
- SC-5: Məzmun nümunəsi 90 gündən sonra avtomatik silinir.
- SC-6: İstifadəçiyə göndərilən izahat sorğusunda ittiham edən dil yoxdur.
25.7 Dashboard və hesabat story-ləri
US-065 | E-28 | P1 | 8 SP — Əməkdaş dashboard-u
Əməkdaş olaraq ilk baxışda nə etməli olduğumu görmək istəyirəm ki, vaxt itirməyim və heç nəyi qaçırmayım.
- AC-1: Ən yuxarıda "Diqqət tələb edən" bloku: gecikmiş və yaxınlaşan öhdəliklər (təlim, siyasət, tapşırıq).
- AC-2: Hər element: nə, son tarix (gün sayı + rəng + ikon), birbaşa fəaliyyət düyməsi.
- AC-3: Kartlar: Mənim təlimlərim (irəliləyiş), Sertifikatlarım, Oxumalı olduğum siyasətlər, Tapşırıqlarım, Şəxsi risk göstəricim.
- AC-4: Hər səhifədən əlçatan "Təhlükəsizlik hadisəsi bildir" və "Şübhəli email bildir" düymələri.
- AC-5: Öhdəlik yoxdursa müsbət boş vəziyyət göstərilir ("Hazırda gözləyən tapşırığınız yoxdur").
- AC-6: Yüklənmə ≤ 2 saniyə; widget-lər progressiv yüklənir.
- AC-7: Şəxsi risk göstəricisi etik təqdim olunur: yalnız band (rəqəm "İzah" ilə), müsbət tövsiyələr, başqaları ilə müqayisə yoxdur.
- SC-1: Dashboard yalnız istifadəçinin öz məlumatını göstərir.
- SC-2: Mobil cihazda (≥375px) tam funksional.
- SC-3: Klaviatura ilə tam naviqasiya; axe-core 0 kritik pozuntu.
25.8 Story yazma qaydaları (komanda üçün)
| # | Qayda |
|---|---|
| 1 | Hər story-nin ən azı 1 təhlükəsizlik meyarı (SC) olmalıdır; olmaması review-da rədd səbəbidir |
| 2 | Hər story-nin ən azı 1 audit log meyarı olmalıdır (dəyişdirici əməliyyatlarda) |
| 3 | Hər siyahı/detal story-si üçün ən azı 1 neqativ avtorizasiya AC-si |
| 4 | AC-lər Given/When/Then formatında və ölçülə bilən olmalıdır ("yaxşı işləsin" qəbul edilmir) |
| 5 | Performans tələbi olan yerdə rəqəm göstərilməlidir |
| 6 | Hər UI story-si üçün accessibility meyarı |
| 7 | Hər mətn göstərən story üçün lokalizasiya meyarı (AZ/EN/RU) |
| 8 | Toplu əməliyyat story-lərində dryRun dəstəyi məcburidir |
| 9 | Story 13 SP-dən böyükdürsə bölünməlidir |
| 10 | Definition of Done (universal): kod + unit/inteqrasiya testləri + neqativ RBAC testi + OpenAPI yeniləməsi + AZ/EN/RU tərcümə + a11y yoxlaması + audit log + kod review (təhlükəsizlik aspekti ilə) + sənədləşdirmə |
26. Risklər və mitigasiyalar
26.1 Layihə riskləri
| # | Risk | E | T | Xal | Mitigasiya | Sahib |
|---|---|---|---|---|---|---|
| PR-01 | DLP endpoint agent-i ayrıca layihədir və gecikir → Faza 3-ün dəyəri realizasiya olunmur | Yüksək | Kritik | 20 | A7 fərziyyəsi açıq elan olunub; Faza 3 iki hissəyə bölünür (təsnifat+kataloq müstəqil dəyər verir); agent seçimi Faza 2-də başlamalıdır | Layihə rəhbəri |
| PR-02 | ISO 27001 məzmununun (93 nəzarət, daxili təsvirlər) hazırlanması gecikir | Yüksək | Yüksək | 16 | GRC mütəxəssisi Faza 0-dan paralel işləyir; şablon məzmun hazırlanır; import faylı formatı erkən təsdiqlənir | GRC |
| PR-03 | AD strukturunun real vəziyyəti gözləniləndən qarışıqdır (OU, qruplar, atributlar natamam) | Yüksək | Yüksək | 16 | Faza 0-da tam discovery; atribut mapping konfiqurasiya edilə biləndir; AD təmizləmə ayrıca tapşırıq kimi qaldırılır | İT/Arxitekt |
| PR-04 | Terminologiya və taksonomiya razılaşdırıla bilmir (dövlət qurumunun rəsmi dili) | Orta | Yüksək | 12 | §0.3 lüğəti erkən təsdiqə verilir; konfiqurasiya edilə bilən terminlər; hüquq şöbəsi cəlb olunur | PO |
| PR-05 | Komanda kadr dəyişikliyi (açar mütəxəssisin itirilməsi) | Orta | Yüksək | 12 | Cüt işləmə (pairing), ADR sənədləşdirilməsi, bilik paylaşımı sessiyaları, bus factor ≥ 2 hər modul üçün | Tech Lead |
| PR-06 | Skoup sürüşməsi (hər workshop-da yeni tələb) | Yüksək | Orta | 12 | Faza sərhədləri müqavilədə; dəyişiklik idarəetməsi prosesi; backlog şəffaf | PO |
| PR-07 | İstifadəçi qəbulu zəif (işçilər platformadan istifadə etmir) | Orta | Yüksək | 12 | UX araşdırması Faza 0-da; "60 saniyə testi"; şöbə çempionları; video təlimatlar; rəhbərlik dəstəyi | PO/UX |
| PR-08 | İnfrastruktur hazır deyil (serverlər, şəbəkə, sertifikat) | Orta | Yüksək | 12 | Faza 0-da infrastruktur tələbləri sənədi; paralel hazırlıq; Docker Compose ilə erkən başlanğıc | DevSecOps |
| PR-09 | Penetrasiya testində kritik tapıntı → reliz gecikməsi | Orta | Yüksək | 12 | Təhlükəsizlik dizaynı erkən review; SAST/DAST davamlı; pentest relizdən 3 həftə əvvəl (buffer) | Security |
| PR-10 | Performans hədəflərinə çatılmır (böyük siyahılar, hesabatlar) | Orta | Orta | 9 | Performans testləri S5-dən; indeks strategiyası erkən; read replica | Backend |
| PR-11 | Çoxdilli məzmunun tərcüməsi gecikir | Yüksək | Aşağı | 8 | AZ birinci; EN/RU fallback mexanizmi; tərcümə prosesi ayrıca planlanır | PO |
| PR-12 | Hüquqi problem: ISO mətninin istifadəsi | Aşağı | Yüksək | 8 | §4.3.7 dizaynı; hüquq şöbəsinin təsdiqi Faza 0-da | Hüquq |
| PR-13 | Backup/DR infrastrukturu yoxdur | Orta | Kritik | 15 | Faza 0-da tələb kimi qaldırılır; MVP-yə qədər hazır olmalıdır; bərpa testi DoD-a daxildir | İT |
| PR-14 | Air-gapped mühitdə asılılıqların idarə edilməsi çətinləşir | Orta | Orta | 9 | Faza 0-da daxili registry (Harbor, Nexus) qurulur; offline yeniləmə proseduru sənədləşdirilir | DevSecOps |
26.2 Məhsul/istifadə riskləri
| # | Risk | Mitigasiya |
|---|---|---|
| UR-01 | Fişinq nəticələrinin intizam tədbiri üçün istifadəsi → bildirmə mədəniyyətinin ölməsi | E1–E10 etik qaydaları normativdir; hesabatlarda qeyd; HR ixracı ayrıca icazə + audit; rəhbərliklə açıq razılaşma (yazılı) |
| UR-02 | DLP-nin çox aqressiv tətbiqi → biznes prosesinin dayanması | Məcburi mərhələli rollout (§4.12.5); fövqəladə söndürmə; pilot qrup; FP tuning mərhələsi |
| UR-03 | Yanlış pozitiv seli → analitiklərin yorulması, hadisələrin göz ardı edilməsi | Öyrənmə rejimi, confidence hədləri, istisna mexanizmləri, FP nisbətinin monitorinqi, toplu triage |
| UR-04 | Bildiriş yorğunluğu (notification fatigue) | Digest rejimi, istifadəçi tənzimləmələri, dedupe, sakit saatlar, yalnız məcburi bildirişlər defoltda |
| UR-05 | Uyğunluq balının "gözəlləşdirilməsi" (status manipulyasiyası) | Şəffaf hesablama, sübut tələbi, status dəyişikliyinin audit olunması, daxili audit yoxlaması |
| UR-06 | Platformanın "kağız üçün" istifadəsi (real dəyər yaratmadan) | Modullararası əlaqələr (§5), avtomatik siqnallar, executive metrikləri, rüblük dəyər hesabatı |
| UR-07 | Məlumatın köhnəlməsi (sahiblər yeniləmir) | Dövri baxış tapşırıqları, attestasiya kampaniyaları, eskalasiya, dashboard-da "köhnə məlumat" göstəricisi |
| UR-08 | Rol və icazələrin zamanla şişməsi (privilege creep) | 6 aylıq rol attestasiyası, SoD hesabatı, effektiv icazələrin görünürlüyü |
26.3 Texniki/təhlükəsizlik riskləri
| # | Risk | Mitigasiya (qısa) | Detal |
|---|---|---|---|
| TR-01 | Real parolun fişinq simulyasiyasında saxlanması | 8 qatlı dizayn + CI bloklayıcı test | §4.2.5, US-053 |
| TR-02 | Obyekt səviyyəsində avtorizasiya boşluğu (IDOR/BOLA) | Məcburi resource authorization + arxitektura testi + neqativ testlər | §14.7, §21.2.1 |
| TR-03 | Audit izinin pozulması | 7 qatlı müdafiə | §4.18.3 |
| TR-04 | Məxfi sübutun/DLP məzmununun sızması | Təsnifat + P8 + L0/L1/L2 + audit + su nişanı | §4.7.5, §4.13.4 |
| TR-05 | AD servis hesabının kompromisi | Vault + minimum icazə + LDAPS + rotasiya + monitorinq | §11.3 |
| TR-06 | Platformadan real fişinq göndərilməsi | Təsdiq + SoD-10 + SOC bildirişi + sürət limiti | §4.2.6 |
| TR-07 | Zərərli fayl yüklənməsi | Magic bytes + allowlist + ClamAV + sandbox + CSP | §4.7.5 |
| TR-08 | Ransomware | Immutable backup (WORM) + seqmentasiya + bərpa testi | §19.3 |
| TR-09 | Modul sərhədlərinin pozulması → monolitin "böyük palçıq topuna" çevrilməsi | Arxitektura testləri CI-də bloklayıcı; kod review | §9.3 |
| TR-10 | Verilənlər bazasının böyüməsi (audit log) | Partisiyalaşdırma + arxivləşdirmə + tutum planlaması | §13.9 |
| TR-11 | Açıq mənbə komponentində kritik CVE | SCA CI-də bloklayıcı + SBOM + yeniləmə prosesi + offline DB | §21.2.13 |
| TR-12 | Vault açarlarının itirilməsi | Shamir bölgüsü (5-dən 3), seyfdə surət, bərpa proseduru test edilir | §19.3 |
26.4 Risklərin idarə edilməsi prosesi
- Risk reyestri layihənin özündə (ETİMAD-da, dogfooding) saxlanılır
- Həftəlik: yeni risklərin identifikasiyası (komanda stand-up-ında)
- Sprint sonu: risklərin yenidən qiymətləndirilməsi
- Faza sonu: tam risk baxışı + rəhbərliyə hesabat
- Kritik risklər üçün: sahib, mitigasiya planı, tarix, eskalasiya
27. Açıq qərarlar və suallar
27.1 Qərara təsir edən 10 sual (cavab tələb olunur)
Bu suallara cavab Faza 0-ın ilk 2 həftəsində alınmalıdır. Cavab gəlməyənə qədər §0.4-dəki fərziyyələr qüvvədədir və iş dayandırılmır.
| # | Sual | Niyə kritikdir | Fərziyyə (cavab gəlməzsə) | Təsir |
|---|---|---|---|---|
| S1 | DLP-nin icra qatı (endpoint/email/network agent) hansı məhsuldur və mövcuddurmu? Yoxdursa, satınalma planlanırmı və nə vaxt? | Faza 3-ün 60%-i bu cavabdan asılıdır. Agent yoxdursa ETİMAD yalnız siyasət+hadisə idarəetməsi qatı olaraq qalır | A7: agent üçüncü tərəf məhsuludur və Faza 3-ə qədər seçilib quraşdırılır | Kritik — Faza 3 skoupu |
| S2 | Məlumat təsnifatı üçün qurumun rəsmi/normativ terminologiyası varmı? (qanunvericilikdə müəyyən edilmiş məxfilik qrifləri) | Taksonomiya bütün DLP və sənəd idarəetməsinin bünövrəsidir; sonradan dəyişməsi bahalıdır | §4.10.2-dəki 5 səviyyə, konfiqurasiya edilə bilən | Yüksək — M10, M12, M03 |
| S3 | ISO 27001 sertifikasiyası planlanırmı, planlanırsa nə vaxt və hansı orqan tərəfindən? | Sertifikasiya varsa SoA, sübut və audit funksiyalarının prioriteti artır və konkret format tələbləri yaranır | Sertifikasiya 18–24 ay ərzində planlaşdırılır; platforma hazırlığı təmin edir | Yüksək — prioritetləşdirmə |
| S4 | İstifadəçi sayı, şöbə sayı və təşkilati struktur (mərkəzi aparat + regional qurumlar)? | Tutum planlaması, organization_id modeli, skoup qaydaları | A2: 2 000–10 000 istifadəçi; A10: multi-organization bir instansiyada | Yüksək — arxitektura, infrastruktur |
| S5 | AD mühiti: domen sayı, forest strukturu, DC sayı, mövcud SSO (ADFS varmı)? Servis hesabı veriləcəkmi? | Autentifikasiya arxitekturası və sinxronizasiya dizaynı | A1/A8: tək domen, LDAPS, Keycloak+OIDC | Kritik — M14 |
| S6 | Fişinq simulyasiyası üçün rəhbərlik və HR-in yazılı razılığı varmı? Etik qaydalar (§4.2.9) qəbul edilirmi? | Razılıq olmadan modul istifadəyə verilə bilməz; etik qaydalar məhsul dizaynını müəyyən edir | Razılıq Faza 1-in sonuna qədər alınır; etik qaydalar qəbul edilir | Kritik — M02 |
| S7 | Mövcud SIEM/SOAR və ticketing sistemləri hansılardır? İnteqrasiya tələb olunurmu? | İnteqrasiya adapterlərinin planlaşdırılması | SIEM var (CEF dəstəkləyir), ticketing Faza 2-də | Orta — I7, I9 |
| S8 | Deployment modeli: Docker Compose (sadə) yoxsa Kubernetes (HA)? Mövcud K8s klasteri varmı? DR saytı varmı? | İnfrastruktur dizaynı, əməliyyat mürəkkəbliyi, xərc | A3: VMware/Proxmox üzərində; ölçüyə görə Variant A və ya B | Yüksək — §9.5 |
| S9 | İş axını təsdiq mərhələləri: qurumun rəsmi sənəd dövriyyəsi qaydaları hansılardır? (kim təsdiqləyir, neçə mərhələ, elektron imza tələb olunurmu) | M03, M17 iş axını konfiqurasiyası; elektron imza ayrıca inteqrasiya tələb edir | §6.1-dəki default axın; elektron imza MVP-də yoxdur (sadə elektron təsdiq) | Yüksək — M03, M17 |
| S10 | Məlumatın saxlanma müddətləri üçün normativ tələblər hansılardır? (audit log, şəxsi məlumat, sənəd arxivi) | Retention siyasəti, arxitektura (arxivləşdirmə), hüquqi uyğunluq | §19.4-dəki cədvəl; audit 7 il, sənəd 10 il | Yüksək — §19.4, hüquqi |
27.2 Əlavə açıq qərarlar (fərziyyə ilə davam edilir)
| # | Qərar | Fərziyyə | Nə vaxt həll olunmalı |
|---|---|---|---|
| D-01 | Backend platforması: .NET yoxsa Java? | .NET 9 (§9.4); komandanın təcrübəsi həlledicidir | Faza 0, həftə 1 |
| D-02 | Elektron imza (ASAN İmza və ya daxili PKI) tələb olunurmu? | MVP-də yoxdur; Faza 2-də əlavə edilə bilər | Faza 1 sonu |
| D-03 | HR sistemindən inteqrasiya lazımdırmı (AD kifayət etmirsə)? | AD kifayətdir; HR Faza 2-də opsional | Faza 1 |
| D-04 | Təchizatçı portalı internetə açılacaqmı? | Xeyr — XLSX ilə offline dövriyyə (təhlükəsiz default) | Faza 2 |
| D-05 | Mövcud CMDB varmı və inteqrasiya lazımdırmı? | Yoxdur; əl ilə/CSV import | Faza 2 |
| D-06 | SCORM məzmunu satın alınacaqmı? | Xeyr — daxili məzmun; SCORM Faza 2-də dəstək | Faza 1 |
| D-07 | Dark mode tələb olunurmu? | Opsional, Faza 2 | Faza 1 |
| D-08 | Mobil native tətbiq lazımdırmı? | Xeyr — responsive web | Faza 2 |
| D-09 | Risk matrisi: 5×5 yoxsa 3×3? | 5×5 default, konfiqurasiya edilə bilən | Faza 0 |
| D-10 | Uyğunluq balının çəkiləri kim tərəfindən təsdiqlənir? | §4.4.8 default; CISO təsdiqi ilə dəyişdirilə bilər | Faza 1 |
| D-11 | HRS formulasının çəkiləri və zaman sönməsi müddəti? | §4.2.7 default (6 ay yarı ömür); konfiqurasiya edilə bilən | Faza 1 |
| D-12 | AI funksiyaları üçün on-prem GPU serveri ayrılacaqmı? | Faza 4 qərarı; ayrılmazsa AI modulları söndürülür | Faza 3 sonu |
| D-13 | Xarici auditor girişi tələb olunurmu? | Bəli, müddətli və məhdud (Faza 2) | Faza 2 |
| D-14 | Log/audit arxivi üçün WORM saxlama mövcuddurmu? | Yoxdursa: imzalanmış arxiv + ayrıca sistem | Faza 0 |
| D-15 | Lisenziya modeli (əgər məhsul başqa qurumlara da təklif ediləcəksə)? | Daxili istifadə; lisenziya modeli skoupdan kənar | — |
27.3 Növbəti addımlar (bu sənəd təsdiqləndikdən sonra)
| # | Addım | Məsul | Müddət |
|---|---|---|---|
| 1 | Bu sənədin rəhbərlik və İT təhlükəsizliyi tərəfindən rəyi və təsdiqi | Sifarişçi | 1 həftə |
| 2 | §27.1-dəki 10 suala cavabların alınması (workshop) | PO + Sifarişçi | 2 həftə |
| 3 | Komandanın formalaşdırılması və rollar | Layihə rəhbəri | 2 həftə |
| 4 | İnfrastruktur tələbləri sənədi və resursların ayrılması | DevSecOps + İT | 2 həftə |
| 5 | AD discovery workshop-u və test mühitinə giriş | Arxitekt + İT | 2 həftə |
| 6 | Risk metodologiyası və təsnifat taksonomiyasının təsdiqi | GRC + rəhbərlik | 3 həftə |
| 7 | Fişinq etik qaydalarının HR/hüquq ilə razılaşdırılması | PO + HR + Hüquq | 3 həftə |
| 8 | Faza 0-ın başlanması | Komanda | 4-cü həftə |
Əlavə A — Sənədin baxış qaydası
| Bölmə | Baxış tezliyi | Məsul |
|---|---|---|
| §1–§3 (məqsəd, rollar) | İllik | PO |
| §4 (modullar) | Hər faza sonu | PO + Tech Lead |
| §9–§14 (arxitektura, DB, API) | Hər major reliz | Arxitekt |
| §10, §20 (təhlükəsizlik, threat model) | Hər major reliz + illik | Security Architect |
| §15, §16 (RBAC, audit) | Hər faza sonu | Security + GRC |
| §19 (NFR) | Hər faza sonu | Tech Lead |
| §21 (test) | Hər faza sonu | QA Lead |
| §23–§25 (roadmap, backlog) | Hər sprint | PO |
| §26, §27 (risklər, qərarlar) | Həftəlik/aylıq | Layihə rəhbəri |
Əlavə B — Qısaltmalar
| Qısaltma | Açılışı |
|---|---|
| AD | Active Directory |
| ADR | Architecture Decision Record |
| ASVS | Application Security Verification Standard |
| BEC | Business Email Compromise |
| BOLA | Broken Object Level Authorization |
| CAP | Corrective Action Plan |
| CEF | Common Event Format |
| CIA | Confidentiality, Integrity, Availability |
| CMDB | Configuration Management Database |
| DEK/KEK | Data/Key Encryption Key |
| DLP | Data Loss Prevention |
| DPA | Data Processing Agreement |
| EDM | Exact Data Match |
| FP | False Positive |
| GRC | Governance, Risk and Compliance |
| HRS | Human Risk Score |
| IdP | Identity Provider |
| LRS | Learning Record Store |
| MFA | Multi-Factor Authentication |
| MTTR/MTTT | Mean Time To Resolve / Triage |
| NC | Nonconformity |
| OIDC | OpenID Connect |
| RCA | Root Cause Analysis |
| RPO/RTO | Recovery Point/Time Objective |
| SBOM | Software Bill of Materials |
| SoA | Statement of Applicability |
| SoD | Segregation of Duties |
| SSO | Single Sign-On |
| WORM | Write Once Read Many |
Sənədin sonu. ETİMAD — Vahid İnformasiya Təhlükəsizliyi, Uyğunluq və İnsan Risklərinin İdarəedilməsi Platforması PRD + Sistem Arxitekturası + Prioritetləşdirilmiş Backlog, v0.9 — 2026-09-14