Sənəd: PRD + Sistem Arxitekturası + Prioritetləşdirilmiş Backlog  ·  Versiya: 0.9 (Draft for Review)  ·  Təsnifat: Daxili istifadə üçün
Generasiya: 14.09.2026 11:06 UTC  ·  Mənbə: backlog.md (7 301 sətir)
Qeyd: Mermaid diaqramları mənbə kodu kimi göstərilir (xarici JS kitabxanası istifadə edilmir — air-gapped tələbi, §18.5).

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ədbiriControlFramework tələbinin daxili realizasiyası
TələbRequirementFramework-in normativ bəndi
UyğunluqComplianceFramework tələblərinə cavab vermə
Tətbiq oluna bilənlik bəyannaməsiStatement of Applicability (SoA)ISO 27001 Annex A üzrə
Risk reyestriRisk Register
Qalıq riskResidual Risk
İlkin riskInherent Risk
Risk emalıRisk Treatment
UyğunsuzluqNonconformityAudit tapıntısı növü
TapıntıFinding
Düzəldici tədbirCorrective Action
SübutEvidence
AktivAsset
TəchizatçıVendor / Supplier
TəsnifatClassificationMəlumat təsnifatı
Həssas məlumatSensitive Data
Məlumat sızmasıData Leakage
HadisəIncident
İstisnaExceptionPolicy/DLP istisnası
Etiraf / Tanışlıq təsdiqiAcknowledgementPolicy ilə tanışlığın təsdiqi
Maarifləndirmə təlimiAwareness Training
Fişinq simulyasiyasıPhishing Simulation
İnsan riski göstəricisiHuman Risk Score
TapşırıqTask
İş axınıWorkflow
EskalasiyaEscalation
SəlahiyyətPermission
RolRole
Audit iziAudit 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
A1Qurumda Microsoft Active Directory (Windows Server 2016+) mövcuddur, LDAPS (636) aktivdirDö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–800Orta ölçülü dövlət qurumuCapacity planning yenidən (aşağı)
A3Deployment tam on-premise, VMware/Proxmox virtual mühit və ya bare-metal KubernetesOn-prem tələbiHelm chart-lar dəyişər (aşağı)
A4Qurumun daxili SMTP relay-i və ya Exchange serveri var; fişinq üçün ayrıca çıxış relay-i ayrılacaqZəruriFiş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ırDövlət tələbi
A6ISO/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ırMüəllif hüququHüquqi risk (yüksək)
A7DLP üçü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 deyilMVP realizmiFaza 3 skoupu 3–4 dəfə artar (kritik)
A8SSO üçün ADFS/Keycloak vasitəsilə SAML 2.0 və ya OIDC; Kerberos SPNEGO ikinci mərhələdəPraktiklikAuth flow dəyişər (aşağı)
A9Məlumat rezidentliyi: bütün data qurumun data mərkəzində; heç bir telemetriya xaricə getmirDövlət tələbi
A10Multi-tenant deyil, lakin multi-organization (mərkəzi aparat + regional qurumlar) bir instansiyadaStrukturSchema-da organization_id onsuz da var (aşağı)
A11Dil dəstəyi: AZ (default), EN, RU. Tərcümə qurum tərəfindən təmin olunurTələb
A12Rə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ırSkoup

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:

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ətigün25–40≤ 5
Sübut toplama əməyiadam-saat / audit200+≤ 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şçinamə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ədnaməlum0
Məlumat təsnifatı tətbiq olunmuş kritik sistemlər%0100
DLP hadisələrinin triage müddəti (MTTT)saat≤ 4

1.4 Skoup sərhədləri

Platforma EDİR:

Platforma ETMİR (MVP-də və ya ümumiyyətlə):

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 0Discovery, arxitektura, RBAC nüvəsi, audit log, design system8 həftə5 nəfər
Faza 1MVP: AD/SSO, təlim, imtahan, fişinq, siyasət, ISO 27001 + SoA, risk reyestri, əsas sübut, tapşırıq/bildiriş, dashboard20 həftə8–9 nəfər
Faza 2GRC genişlənməsi: audit, tapıntı, düzəldici tədbir, aktiv, təchizatçı, mapping, executive hesabatlar16 həftə8 nəfər
Faza 3Təsnifat + DLP: taksonomiya, həssas məlumat tipləri, DLP rule builder, hadisələr, konnektorlar18 həftə9 nəfər
Faza 4Avtomatlaşdırma: avtomatik sübut, təkmil risk skorinq, anomaliya, AI köməkçilər14 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ə
P1On-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.
P2AD 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).
P3Secure by defaultHə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.
P4Dəyişdirilə bilməyən audit iziHeç bir rol audit logunu redaktə/silə bilmir; hash zənciri ilə bütövlük yoxlanışı.
P5Modul 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ənlikHər modulun §4-də sadalanan metrikləri dashboard-da real vaxtda olmalıdır.
P7Etik 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 + SoDYaradan təsdiqləyə bilməz; administrator məxfi məzmunu avtomatik görmür.
P9API-firstHər UI əməliyyatı arxasında sənədləşdirilmiş API var; UI API-nin yeganə istifadəçisi deyil.
P10Konfiqurasiya > kodRisk 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.
P11Genişlənə bilən uyğunluqYeni framework əlavə etmək kod dəyişikliyi tələb etməməlidir — yalnız framework import faylı.
P12Azərbaycan dili birinciBütün default məzmun, şablon, bildiriş və hesabat AZ dilində; EN/RU tərcümə qatı.
P13Məlumat minimallaşdırılmasıDLP analitiki lazım olandan artıq həssas məzmunu görmür; maskalama defaultdur.
P14AccessibilityWCAG 2.2 AA; status heç vaxt yalnız rənglə ifadə olunmur.
P15Açıq standartlarLDAP, 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:

  1. 100% işçi AD SSO ilə daxil ola bilir, rolları avtomatik təyin olunur.
  2. Ən azı 3 məcburi siyasət nəşr olunub və ≥ 90% tanışlıq təsdiqi toplanıb.
  3. ISO 27001:2022 Annex A-nın 93 nəzarət tədbirinin hamısı sistemdə mövcuddur və SoA generasiya olunur (PDF/XLSX).
  4. Ə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).
  5. Risk reyestrində ≥ 30 risk, hər birinin sahibi və qalıq riski var.
  6. Bütün kritik əməliyyatlar audit logunda; log bütövlüyü yoxlaması keçir.
  7. 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)

P2 — Şöbə müdiri (Aygün, 45, şöbə müdiri)

P3 — Təhlükəsizlik / GRC mütəxəssisi (Rəşad, 33, aparıcı mütəxəssis)

P4 — Compliance Officer (Nigar, 41)

P5 — Daxili auditor (Kamran, 50)

P6 — DLP analitiki (Tural, 29, SOC)

P7 — Data Owner (Səbinə, 44, HR şöbə müdiri)

P8 — Rəhbərlik (Müavin, 55)

P9 — Platform administratoru (İT, 35)

P10 — Xarici auditor (müvəqqəti)

3.2 Rol kataloqu

# Rol (sistem adı) AZ adı Təyinat mənbəyi Skoup
R01employeeƏməkdaşAvtomatik (hər AD istifadəçisi)Özü
R02department_managerŞöbə müdiriAD manager atributu / əl iləÖz OU alt ağacı
R03training_managerTəlim meneceriƏl iləQurum
R04phishing_managerFişinq kampaniya meneceriƏl iləQurum
R05policy_authorSiyasət müəllifiƏl iləTəyin olunmuş sənədlər
R06policy_reviewerSiyasət rəyçisiƏl iləTəyin olunmuş sənədlər
R07policy_approverSiyasət təsdiqləyicisiƏl iləTəyin olunmuş sənədlər
R08compliance_officerUyğunluq üzrə məsulƏl iləQurum
R09risk_ownerRisk sahibiObyekt üzrə təyinatÖz riskləri
R10risk_managerRisk meneceriƏl iləQurum
R11internal_auditorDaxili auditorƏl iləTəyin olunmuş auditlər
R12external_auditorXarici auditorƏl ilə, müddətliYalnız audit skoupu
R13evidence_ownerSübut sahibiObyekt üzrəÖz sübutları
R14data_ownerMəlumat sahibiObyekt üzrəÖz məlumat aktivləri
R15dlp_analystDLP analitikiƏl iləDLP hadisələri (maskalanmış)
R16dlp_adminDLP administratoruƏl iləDLP siyasətləri (məzmunsuz)
R17security_incident_analystHadisə analitikiƏl iləTəhlükəsizlik hadisələri
R18vendor_managerTəchizatçı meneceriƏl iləTəchizatçılar
R19executive_viewerRəhbərlik (baxış)Əl iləQurum, aqreqat
R20platform_adminPlatforma administratoruƏl iləKonfiqurasiya (məzmunsuz)
R21readonly_auditorYalnız oxuma auditoruƏl iləQurum, oxuma
R22content_authorTəlim məzmunu müəllifiƏl iləTəlim kataloqu
R23asset_ownerAktiv sahibiObyekt üzrəÖz aktivləri
R24control_ownerNəzarət tədbirinin sahibiObyekt üzrəÖz nəzarət tədbirləri
R25break_glass_adminFövqəladə administratorLokal, 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-1Eyni sənəddə policy_author + policy_approverBlok (obyekt səviyyəsi)Özünü təsdiq
SoD-2Eyni riskdə risk_owner + risk qəbulunu təsdiqləyənBlokÖzünə risk qəbulu
SoD-3internal_auditor + audit olunan nəzarət tədbirinin control_ownerBlok (obyekt səviyyəsi)Özünü audit
SoD-4dlp_admin + dlp_analystXəbərdarlıq + təsdiqSiyasəti yaradan hadisəni gizlədə bilər
SoD-5platform_admin + compliance_officerXəbərdarlıqKonfiqurasiya ilə uyğunluğu manipulyasiya
SoD-6platform_admin + hər hansı *_approverXəbərdarlıq + təsdiqSəlahiyyət toplanması
SoD-7Eyni tapıntıda düzəldici tədbiri icra edən + yoxlayan auditorBlokÖzünü yoxlama
SoD-8vendor_manager + təchizatçı risk qiymətləndirməsini təsdiqləyənXəbərdarlıq
SoD-9Eyni sübutda evidence_owner + sübutu təsdiqləyən reviewerBlok
SoD-10phishing_manager + kampaniyanı təsdiqləyənBlokNə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
M01Maarifləndirmə Təlimi (Awareness Training)1Yüksək
M02Fişinq Simulyasiyası və İnsan Riski1Yüksək
M03Siyasət və Sənəd İdarəetməsi1Kritik
M04Uyğunluq İdarəetməsi (ISO 27001 + framework-lər)1Kritik
M05Risk İdarəetməsi1Kritik
M06Audit İdarəetməsi2Yüksək
M07Sübut İdarəetməsi1 (əsas) / 2 (təkmil)Kritik
M08Aktiv və Sahiblik Reyestri2Orta
M09Təchizatçı Riskinin İdarəetməsi2Orta
M10Məlumat Təsnifatı3Yüksək
M11Həssas Məlumatın Aşkarlanması (Discovery)3Orta
M12DLP Siyasətlərinin İdarəetməsi3Yüksək
M13DLP Hadisələrinin İdarəetməsi3Yüksək
M14Active Directory və IAM0/1Kritik (bünövrə)
M15Təhlükəsizlik Hadisələrinin Bildirilməsi1Orta
M16Dashboard və Hesabatlar1 (əsas) / 2 (executive)Yüksək
M17İş Axını və Tapşırıq Mühərriki0/1Kritik (bünövrə)
M18Platforma Administrasiyası və Audit İzi0Kritik (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 meneceriProqram və kampaniya qurur, təyinat qaydaları yazır
Məzmun müəllifiDərs, sual bankı yaradır, tərcümə edir
Compliance OfficerTamamlanmanı sübut kimi istifadə edir

4.1.3 Funksiyalar

Məzmun (Content)

Proqram və kampaniya

İmtahan

Təyinat (Assignment)

`` ŞƏ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 ``

İzləmə və eskalasiya

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 management6 ay
System administratorƏsas + Privileged access + Log və monitorinq + Backup6 ay
HelpdeskƏsas + Şəxsiyyətin doğrulanması + Vishing/sosial mühəndislik6 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ətiQı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 → Escalated

4.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əkYalnı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əkYalnız öz
Sertifikat yükləməkÖzAlt 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-completion

4.1.10 UI səhifələri

Səhifə Marşrut Təsvir
Mənim təlimlərim/trainings/myKart siyahısı: proqram adı, irəliləyiş barı, deadline (gün sayı + rəng + ikon), "Davam et"
Dərs pleyeri/trainings/my/{id}/playSol: dərs siyahısı (tamamlanma işarəsi); orta: məzmun; alt: "Növbəti"; avtosave hər 15 s
İmtahan/exams/{id}/attemptYuxarıda serverdən gələn taymer, sual naviqasiyası, "Təsdiq et" dialoqu
İmtahan nəticəsi/exams/attempts/{id}/resultBal, keçid statusu, səhvlərin izahı, sertifikat düyməsi
Sertifikatlarım/trainings/my/certificatesSiyahı + PDF
Təlim kataloqu (admin)/admin/trainings/lessonsCə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/campaignsCə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-rulesQayda qurucusu + "Simulyasiya et"
Şöbə görünüşü/trainings/teamMüdir üçün: işçi, proqram, status, deadline, "Xatırlat"

4.1.11 Metriklər

4.1.12 Digər modullarla əlaqə

İstiqamət Əlaqə
M02 → M01Fişinq uğursuzluğu avtomatik mikro-təlim təyinatı yaradır
M01 → M02Təlim tamamlanması Human Risk Score-u azaldır
M03 → M01Siyasət nəşri → siyasət üzrə qısa test təyinatı
M01 → M04Tamamlanma statistikası A.6.3 nəzarət tədbirinə avtomatik sübut
M01 → M07Kampaniya hesabatı sübut obyekti kimi saxlanılır
M14 → M01AD qrup dəyişikliyi → təyinat qaydalarının yenidən hesablanması
M05 → M01Risk səviyyəsi yüksək şöbəyə əlavə təlim
M13 → M01DLP hadisəsi → hədəflənmiş təlim

4.1.13 Qəbul meyarları (Acceptance Criteria)

  1. Yeni AD istifadəçisi sinxronizasiyadan sonra ≤ 15 dəqiqə ərzində rola uyğun məcburi proqramlar təyin olunur.
  2. İ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).
  3. İ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ə isCorrect yoxdur).
  4. Eyni istifadəçi eyni imtahanda paralel iki cəhd aça bilmir.
  5. 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.
  6. Deadline uzadılması səbəbsiz mümkün deyil; səbəb audit logunda saxlanılır.
  7. Şö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).
  8. AZ tərcüməsi olmayan dərs AZ interfeysdə açıq xəbərdarlıq ilə default dildə göstərilir.
  9. Video dərsdə altyazı faylı yoxdursa dərs Published statusuna keçə bilmir.
  10. 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

Göndərmə infrastrukturu

Hədəfləmə

Kampaniya tipləri

İdarəetmə

Bildirmə (Reporting) inteqrasiyası

Real fişinqin təlim nümunəsinə çevrilməsi

4.2.4 Toplanan hadisələr

Hadisə Necə toplanır Saxlanılan məlumat
EMAIL_SENTMTA-danvaxt, hədəf id
EMAIL_DELIVEREDSMTP 250 / bounce yoxlanışıvaxt, status
EMAIL_BOUNCEDbouncesəbəb kodu
EMAIL_OPENED1×1 tracking pixelvaxt, UA, IP (maskalanmış)
LINK_CLICKEDtracking URL redirectvaxt, UA, IP (maskalanmış)
QR_SCANNEDQR → tracking URL (fərqli token)vaxt, UA
ATTACHMENT_OPENEDsənəd daxilindəki tracking resursvaxt
DATA_SUBMITTEDlanding form POSTyalnız hadisə faktı + sahə adlarının sayı
PHISHING_REPORTEDadd-in / poçt qutusuvaxt, kanal
TRAINING_STARTEDM01-dənvaxt
TRAINING_COMPLETEDM01-dənvaxt, 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ırLanding 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ərirDAST + kod review + şəbəkə trafikinin yoxlanışı
Server tərəfdə müdafiəLanding endpoint-i application/x-www-form-urlencodedmultipart 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ırLog inspeksiya testi (avtomatlaşdırılmış)
HTTPS məcburiLanding yalnız TLS; HSTSKonfiqurasiya testi
Səhifə brauzer saxlamasına düşməsinautocomplete="off", Cache-Control: no-store, parol menecerinə işarə verməmək üçün name atributları neytralManual test
Dərhal açıqlamaForm 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əsiSəhifədə: "Ehtiyatlı olmaq üçün parolunuzu dəyişməyiniz tövsiyə olunur" + daxili parol dəyişmə linkiUAT
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ırArxitektura 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 → Draft

Təsdiq üçün məcburi yoxlama siyahısı (sistem avtomatik yoxlayır):

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ğu20%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 konteksti10%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əticlicked / delivered
Kredensial göndərmə nisbətisubmitted / delivered
Qoşma açma nisbətiattachment_opened / delivered
Bildirmə nisbətireported / delivered
Orta bildirmə müddətiavg(reported_at − delivered_at)
Təkrar uğursuzluq nisbətiardı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 Ratiobildirmə% / 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ırKod 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 yoxdurHeç 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ürRBAC: phishing_event üzərində own skoupu
E4Müdir yalnız öz alt ağacını, aqreqat şəkildə görürFərdi ad yalnız təlim təyinatı üçün; kim klik etdi siyahısı yalnız phishing_managersecurity üçün
E5Nəticələr intizam tədbiri üçün istifadə olunmurHesabatın başlığında normativ qeyd; HR-ə fərdi ixrac ayrıca icazə tələb edir və audit olunur
E6ŞəffaflıqQurum siyasətində simulyasiyaların aparıldığı əvvəlcədən elan olunur (fərdi kampaniya vaxtı yox)
E7Hə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
E8Dərhal açıqlamaKlik/göndərmədən sonra dərhal izah səhifəsi, cəzalandırıcı ton olmadan
E9Məlumat saxlama müddətiFərdi fişinq hadisələri 24 ay, sonra anonimləşdirilmiş aqreqata çevrilir
E10IP maskalamaSon 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ÖzAlt 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əlim

4.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ırmaKampaniya 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ı

  1. 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ı).
  2. Təsdiqlənməmiş kampaniya API ilə də başladıla bilmir (HTTP 409).
  3. Kampaniyanı yaradan şəxs onu təsdiqləyə bilmir (HTTP 403, SOD_VIOLATION_BLOCKED logu).
  4. 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.
  5. Xidməti hesablar (AD servicePrincipalName olan və ya konfiqurasiya olunmuş OU) heç bir kampaniyaya daxil edilmir — hədəf önizləməsində də görünmür.
  6. Bütün simulyasiya emailləri X-ETIMAD-Simulation header-i daşıyır və bu header SIEM tərəfindən tanınır.
  7. Şöbə müdiri başqa şöbənin fərdi nəticə siyahısını ala bilmir (403).
  8. HRS-in izahı istifadəçiyə hansı hadisələrin neçə bal əlavə etdiyini göstərir.
  9. UI-da və kod bazasında "repeat offender" / "təkrar günahkar" ifadəsi yoxdur (avtomatlaşdırılmış lint qaydası).
  10. Real emaildən yaradılan şablonda heç bir xarici link, skript və ya qoşma qalmır (sanitizasiya testi).
  11. Tracking domeni əsas qurum domeni ilə eynidirsə kampaniya təsdiqə göndərilə bilmir.
  12. 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əri

Hə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ə

Versiyalaşdırma

Əməkdaşlıq

Nəşr və tanışlıq

İxrac və nəşr formatı

Ə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 → Draft

Mə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 IDEXC-YYYY-NNNN
Başlıq, təsvir
Əlaqəli siyasət / bəndHansı 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əsiM05-ə bağlanır (istisna avtomatik risk yaradır)
Kompensasiya edən nəzarətMə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ə tarixiMaksimum müddət konfiqurasiya edilir (default 12 ay)
Dövri baxış3/6 ay
Uzadılma sorğusuYeni əsaslandırma + təkrar təsdiq tələb edir
StatusDraft → 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

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-templates

4.3.12 UI səhifələri

Səhifə Marşrut Qeyd
Sənəd kataloqu/policiesAğ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}/editSol: struktur ağacı; orta: redaktor; sağ: şərhlər
Versiya müqayisəsi/policies/{id}/diffYan-yana
Təsdiq növbəsi/policies/approvalsMənə gələn rəy/təsdiq sorğuları
Tanışlıq hesabatı/policies/{id}/acknowledgementsKim oxudu / oxumadı, xatırlatma düyməsi
Mənim sənədlərim/my/policiesOxumalı olduğum (deadline ilə)
İstisnalar/policy-exceptionsCədvəl + bitmə tarixinə görə xəbərdarlıq
İstisna forması/policy-exceptions/newAddı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ı

  1. Nəşr olunmuş versiya heç bir rol tərəfindən redaktə edilə bilmir (403); dəyişiklik yalnız yeni versiya ilə.
  2. Müəllif öz sənədini təsdiqləyə bilmir (SoD-1, 403 + audit).
  3. 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.
  4. Tanışlıq qeydi sənədin konkret versiya ID-si ilə saxlanılır.
  5. 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.
  6. Baxış tarixi çatan sənəd üçün sahibə tapşırıq və bildiriş yaranır; 30 gün gecikdikdə müdirə eskalasiya.
  7. PDF ixracında versiya, effektiv tarix, təsnifat etiketi və su nişanı mövcuddur.
  8. İstisna bitmə tarixində avtomatik Expired olur və əlaqəli nəzarət tədbirinin statusuna təsir edir.
  9. 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.
  10. ISO framework bəndinin rəsmi başlığı və nömrəsi UI-da redaktə edilə bilmir (input disabled + API 403).
  11. 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

```yaml framework: { code: ISO27001, version: "2022", name_az: "...", authority: "ISO/IEC" } domains:

name_az: "Təşkilati nəzarət tədbirləri" requirements:

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] } ```

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_idstringCTL-NNNN, avtomatik
title_az / title_enstringDaxili başlıq
descriptiontextQurumun öz sözləri ilə
control_typeenumpreventive / detective / corrective / deterrent / compensating
natureenummanual / automated / hybrid
frequencyenumcontinuous / daily / weekly / monthly / quarterly / annual / event-driven
applicabilityenumapplicable / not_applicable
applicability_justificationtextnot_applicable üçün məcburi (SoA tələbi)
implementation_statusenumbax 4.4.5
implementation_percentageint 0–100
implementation_descriptiontextNecə icra olunur
owner_user_idFKNəzarət tədbirinin sahibi (məsuliyyət)
operator_user_idFKİcraçı (gündəlik işləyən)
reviewer_user_idFKYoxlayan
effectivenessenumnot_tested / effective / partially_effective / ineffective
effectiveness_scoreint 0–100Test nəticələrindən hesablanır
last_review_date, next_review_datedate
test_proceduretextNecə test olunur
last_test_date, last_test_result
gap_descriptiontext
maturity_levelint 1–5Opsional (CMMI bənzəri)
cost_estimatedecimalOpsional
related_*linkspolicy, risk, asset, evidence, task, finding

4.4.5 Statuslar

Status Məna SoA-da
not_assessedHələ qiymətləndirilməyibBoşluq
applicableTətbiq olunur, icra başlamayıbDaxil
not_applicableTətbiq olunmur (əsaslandırma məcburi)Xaric, əsaslandırma ilə
not_implementedTətbiq olunur, icra edilməyibDaxil, boşluq
plannedPlan var, tarix varDaxil
partially_implementedQismən (faiz göstərilir)Daxil
implementedİcra olunub, hələ test edilməyibDaxil
operating_effectivelyİcra olunub və test effektivDaxil ✅
ineffectiveİcra olunub, lakin test uğursuzDaxil, boşluq ⚠️
retiredArtıq istifadə olunmurTarixçə

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:

4.4.7 Control Mapping

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) → Superseded

4.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əkYalnı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əsiRəy
OxumaqÖz + ümumiÖzAqreqat

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/complianceFramework 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/controlsCə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/mappingMatris: sətir = daxili nəzarət, sütun = framework tələbi, xana = coverage
SoA/compliance/soaCədvəl + "Baseline yarat" + ixrac
SoA müqayisəsi/compliance/soa/compare
Boşluq analizi/compliance/gapsPrioritetləş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ı

  1. 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.
  2. not_applicable statusu əsaslandırma olmadan saxlanıla bilmir (400).
  3. SoA bütün Annex A tədbirlərini əhatə edir; heç biri siyahıdan düşmür.
  4. Baseline edilmiş SoA dəyişdirilə bilmir; hash ilə bütövlüyü yoxlanıla bilir.
  5. Bir nəzarət tədbiri ≥ 2 framework tələbinə map edildikdə hər iki framework-in balı yenilənir.
  6. Mapping silindikdə sətir fiziki silinmir, valid_to qoyulur və audit logunda görünür.
  7. Uyğunluq balının izahı hər tələb üçün UI-da göstərilir.
  8. 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.
  9. Framework strukturunun (bənd nömrəsi, rəsmi başlıq) redaktəsi bütün rollar üçün bağlıdır.
  10. 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.0

Bu 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əbiHansı səviyyədən yuxarı emal məcburidir
Təsdiq səviyyəsiHansı 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 Kritik

Matris 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
İdentifikasiyarisk_id (RSK-YYYY-NNNN), title, description, category, subcategory, source (identifikasiya mənbəyi: audit / hadisə / qiymətləndirmə / təchizatçı / DLP / fişinq)
Kontekstbusiness_process, asset_ids[], department_id, organization_unit_id
Təhdid/Zəiflikthreat, threat_source (daxili qəsdli / daxili təsadüfi / xarici / təbii / texniki), vulnerability
Mövcud nəzarətexisting_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ıqresidual_likelihood, residual_impact_*, residual_score, residual_level
Hədəftarget_score, target_level, target_date
Sahiblikrisk_owner_id, treatment_owner_id, identified_by, approved_by
Emaltreatment_option (mitigate/accept/avoid/transfer), treatment_plan, treatment_tasks[], treatment_due_date, treatment_cost
Qəbulacceptance_justification, accepted_by, accepted_at, acceptance_expiry, acceptance_review_date
Dövrstatus, identified_date, last_review_date, next_review_date, closed_date, closure_reason
Əlaqələrcontrols[], policies[], assets[], vendors[], incidents[], findings[], exceptions[], evidence[]
Digərcomments[], 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)
  → Reopened

Risk qəbulu (Risk Acceptance) qaydaları:

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:

yaml
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_manager

Hazır siqnal şablonları (default):

Tetikleyici Şərt Nəticə
Fişinq kampaniyası bitdikredensial göndərmə > 15% (şöbə)BEC riski ehtimal +1, təlim, tapşırıq
Fişinq kampaniyası bitdiklik > 30% (qurum)Sosial mühəndislik riski yenidən qiymətləndirilsin
DLP hadisələri30 gündə eyni şöbədə > 10 təsdiqlənmiş hadisəMəlumat sızması riski ehtimal +1
DLP hadisəsikritik təsnifat + xarici destinasiya + blok edilməyibDərhal kritik risk siqnalı + hadisə
Sübut vaxtı keçdinə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əndiAvtomatik 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

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əkAqreqat + 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ğı/OrtaKritik
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|pdf

4.5.12 UI səhifələri

Səhifə Marşrut Təsvir
Risk reyestri/risksCə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/new5 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/treatmentsKanban və ya cədvəl: planlanmış/icrada/gecikmiş/tamamlanmış
Risk qəbulları/risks/acceptancesBitmə tarixinə görə sıralı, xəbərdarlıqlar
Siqnal təklifləri/risks/signalsTəsdiq gözləyən avtomatik təkliflər, "Qəbul et / Rədd et" + izah
Risk metodologiyası/admin/risks/methodologyMatris 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ı

  1. 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.
  2. 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_override işarəsi ilə görünür.
  3. Risk sahibi öz riskinin qəbulunu təsdiqləyə bilmir (403 + SoD audit qeydi).
  4. Risk qəbulunun müddəti bitdikdə status avtomatik Under Review olur və bildiriş gedir.
  5. Fişinq kampaniyası bitdikdə konfiqurasiya olunmuş siqnal qaydası işə düşür və require_approval rejimində risk balını dəyişmir, yalnız təklif yaradır.
  6. Siqnal təklifi qəbul edildikdə RiskAssessment tarixçəsində source=automated_signal ilə yeni sətir yaranır.
  7. İstilik xəritəsi yalnız rəngə əsaslanmır — hər xanada rəqəm və naxış var (WCAG testi).
  8. Risk reyestri XLSX ixracında bütün sahələr və əlaqəli obyekt ID-ləri mövcuddur.
  9. Risk sahibi başqasının riskini API ilə redaktə edə bilmir (403).
  10. 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

Audit (Engagement)

Sahə Təsvir
audit_idAUD-YYYY-NNN
title, typeinternal / external / supplier / certification / follow-up / thematic
objectiveAudit məqsədi
scopeƏhatə: şöbələr, proseslər, aktivlər, nəzarət tədbirləri, framework tələbləri
criteriaMeyar: 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
statusbax 4.6.5
methodologyMüsahibə, sənəd baxışı, müşahidə, texniki test, seçmə (sampling)

İcra

Tapıntılar

Tip Təsvir SLA (default)
improvement_opportunityTəkmilləşdirmə imkanı90 gün
observationMüşahidə, potensial problem60 gün
minor_nonconformityKiçik uyğunsuzluq30 gün
major_nonconformityBöyük uyğunsuzluq — sistemin işləməməsi15 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):

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 | Reopened

4.6.5 Audit iş axını

Planned → Scheduled → Opening Meeting → Fieldwork → Findings Drafted
 → Closing Meeting → Draft Report → Report Review → Report Issued
 → Follow-up → Closed

4.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ı

  1. Audit skoupundan checklist avtomatik generasiya olunur (hər nəzarət tədbiri üçün sətir).
  2. Auditor öz sahibi olduğu nəzarət tədbirinin auditinə təyin edilə bilmir (SoD-3, 403).
  3. Düzəldici tədbiri icra edən şəxs onu yoxlaya bilmir (SoD-7, 403).
  4. İş kağızları və müsahibə qeydləri auditee rolu tərəfindən API ilə də açıla bilmir (403).
  5. Major nonconformity yaradıldıqda dərhal bildiriş + 15 günlük SLA sayğacı başlayır.
  6. Tapıntı SLA-nı keçdikdə avtomatik eskalasiya (sahib → müdir → CISO) işə düşür.
  7. Audit hazırlığı balının hər komponenti izah səhifəsində rəqəmlə göstərilir.
  8. Xarici auditorun girişi yalnız təyin olunmuş audit skoupu ilə məhdudlaşır və müddəti bitdikdə avtomatik ləğv olunur.
  9. Xarici auditorun hər sübut baxışı/yükləməsi audit logunda qeyd olunur.
  10. 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ə
fileKonfiqurasiya çıxarışı, hesabat PDF-i, təsdiq sənədi
screenshotSistem parametrlərinin ekran görüntüsü
textProsesin təsviri, müsahibə nəticəsi
url_referenceDaxili sistemdə sənədin linki
system_recordPlatforma daxilindəki obyektə istinad (siyasət, təlim hesabatı, audit log çıxarışı)
api_collectedAvtomatik toplanmış (Faza 4): AD parol siyasəti, backup statusu, antivirus versiyası
attestationSahibin 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

4.7.5 🔒 Təhlükəsizlik tələbləri (normativ)

# Tələb Realizasiya
S1Şifrələnmiş saxlamaObyekt saxlamada (MinIO/S3) SSE-KMS; açarlar HashiCorp Vault-da; hər fayl ayrı data açarı (envelope encryption)
S2Fayl 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
S3Zə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
S4Ayrı önizləmə/yükləmə icazəsievidence:previewevidence:download ayrı permission-lar
S5İmzalanmış, qısamüddətli URLYükləmə linki 5 dəqiqəlik, bir dəfəlik, istifadəçiyə bağlı token
S6Hər giriş audit olunurEVIDENCE_PREVIEWED, EVIDENCE_DOWNLOADED — kim, nə vaxt, hansı IP, hansı səbəb (məhdud təsnifat üçün səbəb məcburi)
S7Təsnifat tətbiqiSü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)
S8Yükləmə sərhədləriFayl ≤ 100 MB (konfiqurasiya), sorğu ≤ 500 MB, istifadəçi başına saatlıq limit
S9Arxiv yoxlanışıZIP daxili yoxlanır (zip bomb müdafiəsi: maks açılmış ölçü, maks dərinlik, maks fayl sayı)
S10Aktiv məzmunun zərərsizləşdirilməsiSVG, HTML yüklənmə zamanı sanitizasiya və ya Content-Disposition: attachment + Content-Security-Policy: sandbox
S11Dəyişməz tarixçəSübut silinmir — soft delete + səbəb; fayl saxlamada versiya qalır (retention siyasətinə qədər)
S12Su 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 → Escalated

4.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-expiration

4.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ı

  1. 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.
  2. Fayl uzantısı ilə magic bytes uyğun gəlmədikdə yükləmə rədd edilir (400).
  3. Yükləmə URL-i 5 dəqiqədən sonra işləmir (401/403).
  4. Məxfi təsnifatlı sübutu platform_admin avtomatik olaraq önizləyə/yükləyə bilmir (403).
  5. Hər önizləmə və yükləmə audit logunda kim/nə vaxt/IP ilə görünür.
  6. Fayl hash-ı saxlamada dəyişdikdə həftəlik yoxlama uğursuz olur və kritik alarm yaranır.
  7. Sübut Expired olduqda əlaqəli nəzarət tədbirinin uyğunluq balı avtomatik azalır və izahda görünür.
  8. Sübut sahibi öz sübutunu təsdiqləyə bilmir (SoD-9).
  9. Zip bomb faylı yükləndikdə sistem qorunur (limitlər tətbiq olunur, xəta qaytarılır).
  10. 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

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=xlsx

4.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ı

  1. Sahibi və ya təsnifatı olmayan aktiv active statusuna keçə bilmir.
  2. Kritik aktivə bağlı ən azı bir nəzarət tədbiri yoxdursa boşluq hesabatında görünür.
  3. Sahibliyin ötürülməsi yeni sahibin qəbulunu tələb edir (iki addımlı).
  4. CSV import ≤ 5 000 sətir üçün ≤ 60 saniyə, xəta sətirləri ayrıca hesabatda.
  5. 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)

⚠️ 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 Kritik

4.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/Rejected

Offboarding 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}/submit

4.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ı

  1. Şəxsi məlumata girişi olan təchizatçı DPA olmadan Approved statusuna keçə bilmir.
  2. red_flag cavab avtomatik olaraq risk səviyyəsini minimum "Yüksək" edir və bildiriş göndərir.
  3. Sorğu vərəqəsi tokeni müddətli və birdəfəlikdir; müddəti bitdikdən sonra 403.
  4. Xarici portal əsas platformanın verilənlər bazasına birbaşa girişə malik deyil (arxitektura yoxlaması).
  5. Sertifikat bitmə tarixi keçdikdə təchizatçının risk balı avtomatik yenilənir.
  6. Offboarding checklist-inin bütün bəndləri tamamlanmadan təchizatçı Terminated olmur.

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
1AçıqPUBLICYaşılAÇIQİctimaiyyətə açıq, dərc edilə bilənYoxdur
2Daxili istifadə üçünINTERNALMaviDAXİLİ İSTİFADƏ ÜÇÜNQurum daxilində sərbəstAşağı
3Məhdud girişliRESTRICTEDSarıMƏHDUD GİRİŞLİYalnız müəyyən şöbə/rolOrta
4MəxfiCONFIDENTIALNarıncıMƏXFİAd-hoc icazə, "bilməli olduğu qədər"Yüksək
5Xüsusi əhəmiyyətliTOP_SECRETQırmızıXÜSUSİ ƏHƏMİYYƏTLİƏn yüksək qorunma, ayrıca reyestrKritik

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, patternRəng + ikon + naxış (accessibility: yalnız rəng yox)Narıncı, kilid ikonu, çəpərəki xətlər
visual_labelSənəddə görünən etiket"MƏXFİ"
header_text, footer_textSənəd başlıq/altbaşlığı"MƏXFİ — İcazəsiz yayılması qadağandır"
watermarkSu nişanı şablonu{{classification}} — {{user}} — {{date}}
allowed_groups[]AD qruplarıCN=Confidential-Access,...
allowed_storage_locations[]İcazəli saxlamaDaxili 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_policyenumprohibited / approval_required / encrypted_only / allowed
email_policyXarici 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_policyQadağandır
screenshot_policyQadağandır (endpoint agent dəstəyi tələb olunur)
clipboard_policyYalnız icazəli tətbiqlər arasında
encryption_requirementenumat_rest + in_transit + at_use
min_encryption_standardAES-256, TLS 1.3
retention_periodmüddət10 il
destruction_requirementTəsdiqlənmiş məhv aktı ilə, şredder/kripto-silmə
approval_requirementXaricə ötürmə: məlumat sahibi + CISO
access_review_frequency6 ay
dlp_default_actionenumblock (bax M12)
mfa_requiredboolBəli
offline_access_allowedboolXeyr
legal_basismətnHansı 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 CONFIDENTIALINTERNAL), 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 yazmaOffice Open XML docProps/custom.xmlETIMAD_Classification, ETIMAD_ClassificationId, ETIMAD_AppliedBy, ETIMAD_AppliedAt, ETIMAD_Integrity (HMAC) sahələri; PDF-də XMP metadata3
B. Vizual etiketBaş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ı çəkir3–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əsiMə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ə edirHR şöbəsi (tam), mühasibatlıq (qismən), rəhbərlik (aqreqat)
Hansı sistemlər arasında ötürülürHR 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ılarBank (VND-0012), Dövlət Sosial Müdafiə Fondu
Təchizatçı girişiVND-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ərRSK-2026-0021
Əlaqəli nəzarət tədbirləriCTL-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 → Archived

4.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=xlsx

4.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çəsiobyekt 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ı

  1. Təsnifat səviyyələrinin sayı, adı və qaydaları kod dəyişikliyi olmadan admin panelindən konfiqurasiya olunur.
  2. Təsnifatın endirilməsi əsaslandırma və təsdiq olmadan mümkün deyil (403).
  3. Hər təsnifat dəyişikliyi tam tarixçədə (köhnə/yeni səviyyə, kim, nə vaxt, niyə) saxlanılır.
  4. Platformadan ixrac edilən PDF/DOCX faylda təsnifat etiketi (başlıq/altbaşlıq) və metadata mövcuddur.
  5. Fayl metadatasındakı etiket HMAC ilə qorunur; dəyişdirilmə aşkarlandıqda hadisə yaranır.
  6. Təsnifat səviyyəsi yalnız rənglə deyil, ikon və mətnlə də göstərilir (WCAG testi).
  7. Məlumat toplusu sahibi və təsnifatı olmadan Approved ola bilmir.
  8. 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
keywordAçar söz(lər)"məxfi", "xidməti istifadə üçün"Yüksək
dictionaryLüğət (siyahı faylı)Əməkdaş soyadları, layihə adlarıOrta
regexMüntəzəm ifadəFİN: \b[A-Z0-9]{7}\bYüksək (tək başına)
checksumYoxlama rəqəmiLuhn (bank kartı), IBAN mod-97Aşağı
contextYaxınlıqdakı sözlərRegex + 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_fingerprintSənədin strukturunun barmaq iziMüqavilə şablonuAşağı
partial_document_matchSənədin bir hissəsinin uyğunluğu (shingling/MinHash)Kopyalanmış paraqraflarAşağı
file_typeFaylın həqiqi tipi (magic bytes).docx adlı .exeÇox aşağı
metadataFayl metadatasıAuthor, Company, MIP labelAşağı
ocrŞəkildən mətn (Tesseract, AZ+EN+RU dil paketləri)Skan edilmiş pasportOrta
archive_inspectionArxiv daxilinə baxış (ZIP, RAR, 7z, TAR)
compoundBir 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_FINFərdi identifikasiya nömrəsi (FİN)regex + context + EDM7 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əsiregex + contextAZE seriyası
AZ_PASSPORTPasport nömrəsiregex + context
AZ_TAXPAYER_IDVÖENregex + checksum10 rəqəm
AZ_SSNSosial sığorta nömrəsiregex + context
AZ_PHONETelefon nömrəsiregex+994 formatları
AZ_IBANIBANregex + mod-97 checksumAZ21...
BANK_CARDÖdəniş kartı nömrəsiregex + Luhn + contextPCI DSS
BANK_ACCOUNTBank hesabıregex + context
EMAILElektron poçtregexAşağı həssaslıq, digərləri ilə kombinasiyada
ADDRESS_AZÜnvandictionary (rayon/küçə) + context
FULL_NAME_AZAd Soyad Ata adıdictionary (ad/soyad lüğəti) + proximityEDM tövsiyə olunur
HEALTH_DATASağlamlıq məlumatıkeyword + dictionaryDiaqnoz, 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şicompound (FULL_NAME + FIN + SALARY)
CONTRACT_DOCMüqavilədocument_fingerprint
GOV_DOC_IDDövlət sənədinin qeydiyyat nömrəsiregex (qurum formatı)Qurum tərəfindən konfiqurasiya olunur
CLASSIFIED_KEYWORDMəxfilik qrifli açar sözlərkeyword + dictionary"MƏXFİ", "XİDMƏTİ İSTİFADƏ ÜÇÜN"
SOURCE_CODEMənbə koduregex + file_type
CREDENTIALSParol/açar/tokenregex (yüksək dəqiqlikli: AWS key, private key PEM, JWT) + entropySecret scanning
DB_DUMPVerilənlər bazası ixracıfile_type + keyword (INSERT INTO, CREATE TABLE)
CUSTOM_*Qurumun öz identifikatorlarıkonfiqurasiyaLayihə 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əriTest 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ı destinasiyalarDaxili domenlər, təsdiqlənmiş partnyor domenləri
Etibarlı tətbiqlərTə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ə rejimiYeni qayda 14 gün yalnız monitor rejimində işləyir, statistika toplanır

4.11.6 Qayda test mühərriki (kritik funksiya)

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 paketi

4.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ı

  1. Qayda monitor rejimini keçmədən enforce rejiminə çıxa bilmir (minimum 14 gün, konfiqurasiya edilə bilər).
  2. EDM mənbə faylı indeksləmədən sonra ≤ 1 dəqiqə ərzində təhlükəsiz silinir (yoxlanılır).
  3. EDM indeksində real dəyərlər saxlanılmır — yalnız salt+hash (kod review + DB inspeksiya).
  4. Qayda testi nümunə mətndə uyğunluğu vurğulayır və confidence hesablamasını izah edir.
  5. Regression test seti uğursuz olarsa qayda nəşr edilə bilmir.
  6. Bank kartı nümunə nömrələri (test kartları) istisna siyahısı sayəsində hadisə yaratmır.
  7. 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_security

4.12.3 Kanallar və icra imkanları

Kanal İcra komponenti ETİMAD rolu Faza
Email (daxili/xarici)Mail gateway / Exchange transport rule / MTA pluginQayda mənbəyi + hadisə qəbulu3
Web upload (brauzer)Secure web gateway / proxy (ICAP)Qayda mənbəyi + hadisə3
USB / çıxarıla bilən daşıyıcıEndpoint agentQayda mənbəyi + hadisə3
ClipboardEndpoint agentQayda mənbəyi + hadisə3
Çap (printing)Print server / endpoint agentQayda mənbəyi + hadisə3
Şəbəkə ötürməsiNDLP / IDSHadisə qəbulu3
Paylaşılan qovluqFile server audit / DLP scannerSkan tapşırığı + hadisə3
Tətbiq yükləməsiCASB / proxyHadisə4
Bulud saxlamaCASBHadisə4
Ekran görüntüsüEndpoint agentQayda mənbəyi4
Endpoint fayl əməliyyatıEndpoint agentQayda mənbəyi + hadisə3
Platforma daxili (ETİMAD-dan ixrac/yükləmə)ETİMAD özüTam icra1–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):

json
{
  "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 | Retired

Tə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. Discovery2 həftəMəlumat harada olduğu bilinir
2. Test/Monitor2–4 həftəHadisə həcmi ölçülüb
3. FP tuning1–2 həftəYanlış pozitiv nisbəti < 10%
4. Warn2 həftəİstifadəçi xəbərdarlığı işləyir, şikayət həcmi qəbul edilən
5. Justify2 həftəSəbəblərin 80%+-i legitimdir → istisna yaradılır
6. Pilot enforce2 həftəPilot qrupda kritik biznes pozulması yoxdur
7. Full enforceRəhbərlik təsdiqi

4.12.6 Siyasət idarəetməsi funksiyaları

4.12.7 Nümunə siyasətlər (default kitabxana)

ID Ad Şərt Action
DLP-001Məxfi məlumatın xarici emailə göndərilməsiClassification ∈ {Məxfi, Xüsusi əhəmiyyətli} AND channel=email AND destination=externalBlock + Incident + SOC bildirişi
DLP-002Şəxsi məlumatların USB-yə köçürülməsiDataType ∈ {AZ_FIN, FULL_NAME_AZ} AND count ≥ 10 AND channel=usbBlock + Incident
DLP-003HR məlumatlarının şəxsi buluda yüklənməsiDataType=EMPLOYEE_RECORD AND channel=web_upload AND destination ∈ {personal_cloud}Block + Incident + Manager bildirişi
DLP-004Kütləvi fayl köçürülməsichannel=usb AND volume > 500MB OR fileCount > 100Warn + Justification + Incident
DLP-005Kredensialların paylaşılmasıDataType=CREDENTIALS AND channel ∈ {email, web_upload}Block + Incident + Təcili SOC
DLP-006Məhdud sənədin çapıClassification=Məhdud girişli AND channel=printAllow + Log + su nişanı
DLP-007İş saatı xaricində kütləvi yükləməvolume > 100MB AND context=after_hours AND destination=externalWarn + Incident (orta)
DLP-008Təsdiqlənmiş partnyora göndərməClassification=Məhdud AND destination ∈ trusted_partnersAllow + Log + Encrypt
DLP-009Verilənlər bazası ixracıDataType=DB_DUMP AND channel ≠ approved_backupBlock + Incident (yüksək)
DLP-010Platformadan kütləvi ixracETİMAD daxili: >1000 sətir ixracRequire 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/policiesCədvəl: ad, rejim (çip: TEST/MONITOR/WARN/ENFORCE), kanal, hadisə sayı (30g), prioritet
Qayda qurucusu/dlp/policies/{id}/rulesVizual şərt qurucusu (blok-blok), sağda canlı önizləmə: "Bu qayda hazırda N istifadəçiyə şamil olur"
Rejim keçidiModalAddı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/exceptionsBitmə tarixi ilə
Konnektorlar/admin/dlp/connectorsStatus, son sinxronizasiya, hadisə sayı, test düyməsi
Fövqəladə söndürmə/dlp/emergencyQı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ı

  1. Yeni siyasət yalnız Test rejimində yaradıla bilər; birbaşa Enforce mümkün deyil (400).
  2. Rejim keçidi ardıcıllığı pozulduqda əlavə təsdiq tələb olunur və audit qeydi yaranır.
  3. dlp_admin hadisə məzmununa API ilə də çata bilmir (403).
  4. Fövqəladə söndürmə iki fərqli istifadəçinin təsdiqi olmadan işləmir.
  5. Qayda paketi rəqəmsal imza ilə imzalanır; konnektor imzanı yoxlamadan qəbul etmir.
  6. Yeni qayda mövcud qayda ilə münaqişə yaradırsa saxlanılmadan əvvəl xəbərdarlıq göstərilir.
  7. Simulyasiya real hadisə yaratmır və heç bir istifadəçiyə bildiriş göndərmir.
  8. İ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
İdentifikasiyaincident_id (DLP-YYYY-NNNNN), external_id, connector_id, detected_at, ingested_at
Subyektuser_id, user_upn, ad_groups[], department_id, manager_id, device_hostname, device_ip (maskalanmış), is_managed_device
Kontekstchannel, destination_type, destination_value (maskalanmış), application, occurred_in_business_hours, location
Aşkarlamamatched_policy_id, matched_rule_id, matched_data_types[] (tip + say + confidence), classification_level, overall_confidence
Obyektfile_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
Cavabaction_taken, user_justification, manager_response, manager_decision
İstintaqassigned_analyst_id, investigation_notes[], evidence[], related_incidents[], related_risk_id, related_asset_id, related_security_incident_id
Bağlanmastatus, closure_reason, closed_by, closed_at, lessons_learned, follow_up_actions[]
SLAtriage_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 — Metadatadlp_analyst, security_leadKim, nə vaxt, hansı kanal, hansı siyasət, neçə uyğunluq, fayl adı, hash, ölçü, tip
L1 — Maskalanmış nümunədlp_analystUyğunluqların maskalanmış forması: AZE****789, **** **** **** 1234, kontekst ±20 simvol, həssas hissə maskalanmış
L2 — Tam məzmunsecurity_lead + dlp_content_viewer icazəsiTam 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/istintaqXüsusi təyinatRə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 prosesi

Eskalasiya 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)

4.13.7 Dashboard metrikləri

Metrik Qeyd
Ümumi hadisələr (dövr üzrə)
Bloklanmış cəhdlərUğ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ərNormallaş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ərTop 10
Yanlış pozitiv nisbətiFP / ümumi — siyasət üzrə
Təkrar hadisələrEyni istifadəçi/eyni siyasət
Orta triage müddəti (MTTT)
Orta həll müddəti (MTTR)
Məlumat sızması trendiAylı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əri

4.13.11 UI səhifələri

Səhifə Marşrut Təsvir
Hadisə növbəsi/dlp/incidentsCə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ğusuModalSə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 rejimiEyni siyasətin çoxlu hadisəsini birlikdə FP işarələmək
DLP dashboard/dlp/dashboard12 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/departmentsMüdir üçün aqreqat + cavab gözləyənlər

4.13.12 Qəbul meyarları

  1. dlp_analyst heç bir yolla (UI/API) tam məzmuna çata bilmir (403); yalnız maskalanmış nümunə.
  2. L2 giriş sorğusu ikinci şəxsin təsdiqi olmadan icazə vermir; giriş 30 dəqiqədən sonra avtomatik bitir.
  3. Hər L2 baxışı audit logunda səbəb mətni ilə saxlanılır və məlumat sahibinə bildiriş gedir.
  4. 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ə).
  5. Konnektordan gələn hadisə mTLS + API key olmadan qəbul edilmir (401).
  6. Eyni external_id ilə təkrar gələn hadisə dublikat kimi tanınır (idempotency).
  7. SLA keçdikdə avtomatik eskalasiya işə düşür və bildiriş gedir.
  8. FP işarələnən hadisə qayda tuning backlog-una düşür və qaydanın FP nisbətini yeniləyir.
  9. İ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).
  10. 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ər1
Kerberos SPNEGOWindows İnteqrasiyalı AutentifikasiyaDomenə qoşulmuş kompüterlərdən şəffaf giriş2
LDAP bind (fallback)LDAPSSSO əlçatmaz olduqda, konfiqurasiya ilə aktivləşdirilir1
Lokal hesabDaxili (Argon2id)Yalnız: break-glass admin, xarici auditor, təchizatçı portalı1
MFATOTP (RFC 6238), FIDO2/WebAuthnİmtiyazlı rollar üçün məcburi1 (TOTP) / 2 (FIDO2)
Service accountmTLS + API key / OAuth2 client credentialsKonnektorlar, inteqrasiyalar1

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 konteksti

Token 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ətAD → ETİMAD (yalnız oxuma) — default və tövsiyə olunan
ProtokolLDAPS (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 sinxronizasiyaGecə 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 / retry30 s, 3 cəhd, eksponensial gözləmə

Atribut mapping (konfiqurasiya edilə bilən):

AD atributu ETİMAD sahəsi Qeyd
objectGUIDexternal_idDəyişməz açarsAMAccountName deyil!
objectSidexternal_sid
userPrincipalNameupnLogin identifikatoru
sAMAccountNameusernameDəyişə bilər
displayNamedisplay_name
givenName, snfirst_name, last_name
mailemailBoşdursa istifadəçi deaktiv sayılır (bildiriş göndərilə bilmir)
departmentdepartmentDepartment cədvəlinə map
titlejob_title
manager (DN)manager_user_idDN → objectGUID həlli
telephoneNumber, mobilephone
physicalDeliveryOfficeNameoffice
companyorganizationRegional qurumlar üçün
employeeID, employeeTypeemployee_id, employee_type
userAccountControlis_enabled (bit 2 = ACCOUNTDISABLE)
accountExpiresexpires_at
memberOfgroups[]Nested qruplar açılır (LDAP_MATCHING_RULE_IN_CHAIN)
distinguishedNameou_pathOU ierarxiyası
preferredLanguagelocaleYoxdursa default az
thumbnailPhotoavatar (opsional)Ölçü limiti

Xüsusi hallar:

Hal Davranış
AD-də deaktiv edildiETİ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ə silindiis_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şdiRol/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şdiEskalasiya zənciri yenilənir; açıq təsdiq sorğuları yeni rəhbərə yönləndirilir (bildirişlə)
Qrupa əlavə olunduRol 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 hesabservicePrincipalName 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 emailXə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

yaml
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

4.14.5 AD-yə yazma (Write-back) — məhdudlaşdırılmış

4.14.6 Break-glass administrator

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/campaign

4.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ı

  1. Sinxronizasiya yalnız LDAPS və ya StartTLS ilə işləyir; açıq LDAP konfiqurasiyası rədd edilir.
  2. İstifadəçi identifikasiyası objectGUID ilə aparılır; sAMAccountName dəyişdikdə istifadəçi dublikat yaranmır.
  3. AD-də deaktiv edilmiş istifadəçinin aktiv sessiyası ≤ 5 dəqiqə ərzində ləğv olunur.
  4. Xidməti hesablar heç bir fişinq kampaniyasına və təlim təyinatına düşmür.
  5. 10 000 istifadəçinin tam sinxronizasiyası ≤ 15 dəqiqə çəkir; artımlı sinxronizasiya ≤ 2 dəqiqə.
  6. Sinxronizasiya xətası platformanın işini dayandırmır; qismən nəticə tətbiq olunur, xətalar hesabatda.
  7. Servis hesabının parolu heç bir log, konfiqurasiya faylı və ya API cavabında görünmür (secret scanning testi).
  8. İmtiyazlı rollara MFA olmadan giriş mümkün deyil (403 + step-up tələbi).
  9. AD-yə yazma default söndürülüb; aktivləşdirmə konfiqurasiya + ayrıca təsdiq tələb edir.
  10. Break-glass girişi dərhal alarm yaradır və dashboard-da 24 saat görünən banner göstərir.
  11. 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 emailFişinq, BEC, spamOrta4 saat
Məlumat sızmasıSəhv ünvana göndərmə, itirilmiş sənədYüksək1 saat
İtirilmiş/oğurlanmış cihazNoutbuk, telefon, USBYüksək1 saat
İcazəsiz girişBaşqasının hesabından istifadə, giriş cəhdiYüksək1 saat
Siyasət pozuntusuOrta8 saat
Zərərli proqramVirus xəbərdarlığı, şübhəli davranışYüksək1 saat
Şübhəli istifadəçi davranışıOrta8 saat
Fiziki təhlükəsizlikİcazəsiz şəxs, açıq qapı, itirilmiş vəsiqəOrta4 saat
Sosial mühəndislik cəhdiTelefon zəngi, şəxsən müraciətOrta4 saat
Sistem nasazlığı (təhlükəsizlik aspekti)Orta8 saat
DigərAş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 ]                                          │
└──────────────────────────────────────────────────────┘

4.15.4 Hadisə idarəetməsi

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 → SIEMSyslog CEF/LEEF və ya HTTP webhookBütün hadisələr, DLP hadisələri, audit log-un kritik hadisələri
SIEM → ETİMADREST API (POST /api/v1/incidents/ingest)SIEM-də yaranan alarm → ETİMAD hadisəsi (korrelyasiya ID ilə)
ETİMAD → SOARWebhookPlaybook tetikleyicisi
SOAR → ETİMADRESTStatus yeniləməsi, zənginləşdirmə
ETİMAD ↔ Ticketing (Jira/ServiceNow/GLPI)REST, iki istiqamətliTapşı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   # M02

4.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ı

  1. Bildirmə forması 4-dən çox məcburi sahə tələb etmir və ≤ 60 saniyədə doldurula bilir (UAT).
  2. Anonim bildirişdə istifadəçi ID-si, IP və brauzer izi saxlanılmır (DB inspeksiyası).
  3. Anonim izləmə kodu ilə bildirən statusu görə bilir, lakin sistem onu identifikasiya edə bilmir.
  4. Kritik hadisə bildirildikdə ≤ 1 dəqiqə ərzində SOC-a bildiriş gedir (email + SIEM).
  5. SIEM-ə göndərilən CEF mesajı standarta uyğundur və test SIEM tərəfindən parse olunur.
  6. Şü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):

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 statusuDonut: effektiv / icra olunub / qismən / icra olunmayıb / qiymətləndirilməyib/compliance/controls?status=
Açıq risklərSəviyyə üzrə bar + say/risks?level=
Yüksək qalıq risklərTop 10 siyahı/risks/{id}
Gecikmiş remediasiyaSay + ən köhnəsinin yaşı/tasks?overdue=true
Fişinq nəticələriSon kampaniya: klik%, bildirmə%, trend/phishing/campaigns/{id}
Təlim tamamlanması% + şöbə üzrə ən aşağı 5/trainings/campaigns
İnsan RiskiQurum HRS + şöbə istilik xəritəsi/human-risk/departments
DLP hadisələriSon 30 gün: say, severity paylanması, trend/dlp/incidents
Siyasət tanışlığı% + gecikmiş siyahı/policies/{id}/acknowledgements
Vaxtı keçmiş sübutlarSay + 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ışlarNəzarət/risk/siyasət/sübut/təchizatçı — vahid siyahımüvafiq
Təchizatçı riskiYüksək riskli təchizatçılar + bitən müqavilələr/vendors
Şöbə müqayisəsiCə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övqeyi0–100 kompozit bal + trend (uyğunluq 30%, risk 25%, insan riski 20%, hadisə 15%, sübut 10%)
Top 5 biznes riskiAd + qalıq səviyyə + trend oxu
Risk trendi12 aylıq xətt: kritik + yüksək risklərin sayı
Uyğunluq trendiFramework üzrə xətt
Audit hazırlığıBal + "sertifikasiyaya hazırlıq: 78%"
Şöbə müqayisəsiBar chart: şöbə × kompozit bal
Yüksək riskli təchizatçılarSay + adlar
Kritik DLP hadisələriSay + trend
Maarifləndirmə yetkinliyi1–5 səviyyə (təlim% + fişinq nəticəsi + bildirmə nisbəti əsasında)
Gecikmiş kritik tədbirlərSay + ə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 filtriSon 7/30/90 gün, il, custom, "əvvəlki dövrlə müqayisə"
Şöbə filtriİcazəyə görə məhdud siyahı
Drill-downHər widget-dən filtrlənmiş siyahıya
İcazəyə görə məlumatWidget 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)
İxracWidget → PNG/CSV; dashboard → PDF
Planlaşdırılmış hesabatCədvəllə email ilə göndərmə (həftəlik/aylıq/rüblük)
Məlumat aktuallığı göstəricisiHə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)
AccessibilityHər qrafikin cədvəl alternativi ("Cədvəl kimi göstər" düyməsi)

4.16.6 Hesabat mühərriki

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ı

  1. 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).
  2. Hər widget-də məlumatın son yenilənmə vaxtı görünür.
  3. Executive dashboard 1920×1080 ekranda sürüşdürmə olmadan yerləşir.
  4. Hər qrafikin cədvəl alternativi var və klaviatura ilə əlçatandır.
  5. Dashboard yüklənməsi ≤ 2 saniyə (P95), widget-lər paralel və progressiv yüklənir.
  6. PDF hesabatda təsnifat etiketi, generasiya tarixi və generasiya edən istifadəçi görünür.
  7. > 1000 sətirlik ixrac səbəb tələb edir və audit olunur.
  8. 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.

yaml
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: 5d

Tə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_idTSK-YYYY-NNNNN
title, description
source_module, source_entity_type, source_entity_idHaradan yarandı
typeapproval / review / remediation / evidence_request / training / acknowledgement / attestation / investigation / generic
owner_id (assignee)
reviewer_id, approver_id
delegated_from_id
prioritylow / medium / high / critical
statusopen / in_progress / blocked / pending_review / completed / cancelled / rejected
created_at, due_date, started_at, completed_at
sla_hours, sla_breached
reminder_scheduleJSON: [-7d, -3d, -1d, +1d, +3d]
escalation_chainJSON: [{after_days, to_role/user}]
blocked_reason, blocked_by_task_id
comments[], attachments[]
related_objects[]Polimorf
completion_evidence_idTamamlanma sübutu (M07)
completion_note

4.17.4 Funksiyalar

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:

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:

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}/test

4.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ı

  1. İş axını tərifi kod dəyişikliyi olmadan admin panelindən dəyişdirilir; dəyişiklik yeni versiya yaradır.
  2. İşləyən (aktiv) instansiyalar köhnə versiyada davam edir; yalnız yeni instansiyalar yeni versiyada başlayır.
  3. SoD qaydası pozulan keçid bloklanır (403 + audit).
  4. Tapşırıq SLA-nı keçdikdə eskalasiya avtomatik işə düşür (test: saat dəyişdirilir).
  5. Delegasiya müddəti bitdikdə avtomatik ləğv olunur.
  6. Bildiriş şablonu 3 dildə mövcuddur; istifadəçinin dili olmadıqda AZ-a fallback edir.
  7. Eyni hadisə üçün 5 dəqiqə ərzində təkrar bildiriş göndərilmir (dedupe).
  8. "Mənim tapşırıqlarım" bütün modullardan gələn tapşırıqları vahid siyahıda göstərir.
  9. 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

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
idUUIDv7 (zaman sıralı)
sequence_numberMonoton artan (BIGSERIAL) — boşluq aşkarlanması üçün
timestamp_utcServerin NTP-sinxronlaşdırılmış vaxtı (mikrosaniyə)
actor_user_id, actor_upn, actor_display_nameSnapshot (istifadəçi silinsə də qalır)
actor_typeuser / service_account / system / anonymous
impersonated_byƏgər admin başqasının adından işləyirsə (default qadağan)
actionEnum (yuxarıdakı siyahı)
object_type, object_id, object_label
previous_value, new_valueJSONB, yalnız dəyişən sahələr, həssas sahələr maskalanmış
resultsuccess / failure / denied
failure_reason
ip_address
user_agent, session_id, device_id
justificationSəbəb (tələb olunan əməliyyatlarda)
correlation_idSorğu zənciri üzrə (W3C Trace Context)
request_id
module
classificationƏgər obyekt təsnif edilibsə
prev_hash, record_hashHash zənciri (aşağıda)

Dəyişməzlik (immutability) — çoxqatlı müdafiə:

Qat Mexanizm
1. TətbiqAudit 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əncirirecord_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ətBü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 arxivAylı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_auditorBütün log, oxuma, axtarış, ixrac (ixrac özü loglanır)
security_leadBütün log
compliance_officerUyğunluq modulları üzrə
platform_adminSistem/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ç kimSilmə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                                      # Prometheus

4.18.6 Qəbul meyarları

  1. 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).
  2. Hash zəncirinin qırılması gündəlik yoxlamada aşkarlanır və kritik alarm yaradır.
  3. Audit log-un ixracı özü audit logunda qeyd olunur.
  4. Hər kritik hadisə ≤ 60 saniyə ərzində SIEM-ə çatır.
  5. İstifadəçi öz fəaliyyət tarixçəsini görə bilir.
  6. 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).
  7. 100 milyon sətirlik audit log-da tarix + aktor filtri ≤ 3 saniyədə nəticə verir (partisiyalaşdırma + indeks).
  8. 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əlimTamamlanma→HRSA.6.3 sübutuŞöbə bilik riskiHesabat→sübutMetriklərTapşırıq
M02 FişinqMikro-təlim təyinatıA.6.3 sübutuBEC/SE risk siqnalıKampaniya hesabatıHRSReal fişinq→hadisəHRS, metriklərRemediasiya
M03 SiyasətSiyasət testiNəzarətin sənədiİstisna→riskAudit meyarıNəşr→sübutAktiv siyasətiTəchizatçı tələbiTəsnifat siyasətiDLP siyasət əsasıTanışlıq%Təsdiq axını
M04 UyğunluqTəlim tələbiSənəd tələbiNəzarət effektivliyi→qalıq riskChecklist mənbəyiSübut tələbiAktiv nəzarətləriTəchizatçı nəzarətləriTəsnifat nəzarətləriDLP nəzarətləriUyğunluq balıRemediasiya
M05 RiskRisk→təlimRisk→kampaniya hədəfiRisk→siyasət ehtiyacıRisk→nəzarət əsaslandırmasıAudit prioritetiAktiv riskiTəchizatçı riskiMəlumat riskiDLP prioritetiHadisə riskiRisk metrikləriEmal tapşırığı
M06 AuditSənəd tapıntısıTapıntı→nəzarət statusuTapıntı→riskSübut sorğusuTəchizatçı auditiTapıntı metrikləriDüzəldici tədbir
M07 SübutSübut tamlığı→balNəzarət effektivliyiAudit sübutuTəchizatçı sənədiTəsnifat tətbiqiHadisə sübutuHadisə sübutuBitmə xəbərdarlığıSübut tapşırığı
M08 AktivNəzarət skoupuTəsir hesablanmasıAudit skoupuTəchizatçı-aktivMəlumat yeriDLP skoupuHadisə kontekstiHadisə kontekstiReyestrAttestasiya
M09 TəchizatçıVendor təlimiNDA/DPANəzarətTəchizatçı riskiAudit obyektiSertifikatlarAktiv sahibiMəlumat girişiDestinasiyaHadisə tərəfiRisk balıQiymətləndirmə
M10 TəsnifatTəsnifat təlimiSənəd etiketiA.5.12/13Məlumat riskiSübut etiketiAktiv təsnifatıVendor girişiDLP əsasıHadisə severityTəsnifat hesabatıEndirmə təsdiqi
M11 DiscoverySkan nəticəsiMəlumat yeriTəsnifat təklifiQayda mənbəyiUyğunluq detalıFP metrikləriTuning tapşırığı
M12 DLP PolicyA.8.12 sübutuSiyasət icrasıQayda istinadıSiyasət metrikləriTəsdiq axını
M13 DLP HadisəHədəfli təlimHRS-ə təsirNəzarət effektivliyiMəlumat riski siqnalıHadisə sübutuAktiv kontekstiTəsnifat statistikasıFP→tuningEskalasiyaDLP metrikləriİzahat tapşırığı
M15 HadisəDərs məzmunuŞablon mənbəyiNəzarət boşluğuHadisə→riskTapıntıHadisə sübutuTəsirlənən aktivTəchizatçı hadisəsiƏlaqəli DLPHadisə metrikləriDüzəldici tədbir
M14 AD/IAMTəyinat qaydasıHədəfləməTətbiq dairəsiSahiblikSahiblikAuditor təyinatıSahiblikSahiblikSahiblikİcazəli qruplarQayda skoupuİstifadəçi kontekstiBildirənAvtorizasiyaTəyinat
M17 WorkflowDeadlineTəsdiqTəsdiqRemediasiyaEmalDüzəldiciSorğuAttestasiyaQiymətləndirməEndirməTəsdiqİzahatEskalasiyaTapşırıq metrikləri
M18 Audit iziSü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.12

S3 — 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 etmirYalnız modulun publik kontraktı (interface) və ya domain event vasitəsilə
Sinxron asılılıq yalnız bünövrə modullarınaM01–M16 → M14/M17/M18 sinxron; bir-birinə asinxron (event)
Dövri asılılıq qadağandırBuild-də yoxlanılır (ArchUnit-bənzər test)
Event kontraktları versiyalanırPhishingCampaignCompleted.v1 — geri uyğunluq
Hər modulun öz sxeması varPostgreSQL schema: training, phishing, policy, compliance, risk, ...
Paylaşılan referans məlumatcore 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

mermaid
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ı

mermaid
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 --> Archived

6.3 Risk həyat dövrü

mermaid
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 --> UnderAssessment

6.4 Audit tapıntısı

mermaid
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

mermaid
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ü

mermaid
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əşdirildi

6.7 DLP siyasətinin mərhələli tətbiqi

mermaid
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 edildi

6.8 Təlim təyinatı

mermaid
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şi

7. İ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:

sql
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ərBaşlıq, təsvir, ID, teqlər, sahib, status + fayl mətni (sübut/sənəd üçün)
İcazə filtriHər sənəddə acl_department_ids[], acl_role_keys[], acl_owner_id, classification_level — sorğuya avtomatik filter əlavə olunur
Dil dəstəyiAZ analizatoru (ICU + xüsusi stop-word siyahısı), EN, RU
SıralamaRelevantlıq + son dəyişiklik + obyekt tipi prioriteti
Faset filtrlərTip, 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, İnteqrasiyalar

8. 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/tasksHamı (badge: açıq sayı)
✔️ Təsdiqlər/approvalsTəsdiq səlahiyyəti olanlar
📚 Təlimlərim/trainings/myHamı
📄 Siyasətlər/policiesHamı (oxuma)
🚨 Hadisə bildir/reportHamı (həmişə görünən, header-də də)
Ayırıcı
🎣 Fişinq/phishingphishing_manager, security
👥 İnsan riski/human-riskmanager, security, HR
📋 Uyğunluq/compliancecompliance, auditor, control_owner
⚠️ Risklər/risksrisk_manager, risk_owner, auditor, manager
🔍 Auditlər/auditsauditor, compliance, auditee
📎 Sübutlar/evidenceevidence_owner, compliance, auditor
🖥️ Aktivlər/assetsasset_owner, compliance
🏢 Təchizatçılar/vendorsvendor_manager, compliance
🏷️ Məlumat təsnifatı/classificationdata_owner, compliance, dlp
🛡️ DLP/dlpdlp_analyst, dlp_admin, security
🔔 Təhlükəsizlik hadisələri/incidentsincident_analyst, security
📊 Dashboard/dashboardsecurity, executive, manager
📑 Hesabatlar/reportsİcazəyə görə
⚙️ Administrasiya/adminplatform_admin
🔌 İnteqrasiyalar/admin/integrationsplatform_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
U1Rola görə naviqasiyaİstifadəçi yalnız icazəsi olan menyu bəndlərini görür
U2Kritik fəaliyyət önəAna səhifədə "Diqqət tələb edən" bloku ən yuxarıda
U3Status yalnız rənglə deyilHər status çipi: rəng + ikon + mətn. Risk matrisi: rəng + rəqəm + naxış
U4Aydın Azərbaycan diliTexniki jarqon minimuma; hər texniki termin yanında "?" tooltip izahı
U5Güclü filtr + saxlanmış görünüşHər siyahıda; görünüş paylaşıla bilər (komanda üçün)
U6Toplu əməliyyatlarCheckbox seçimi + fəaliyyət paneli; təsdiq dialoqu ilə
U7Boş vəziyyətlər"Hələ risk yoxdur. İlk riski əlavə edin" + düymə + qısa izah/video
U8Təsdiq dialoqlarıGeri qaytarıla bilməyən əməliyyatlar üçün; obyektin adını yazmaq (kritik silmə üçün)
U9Qeyri-destruktiv default"Sil" heç vaxt birinci düymə deyil; soft delete; "Arxivləşdir" üstünlük
U10AvtosaveUzun formalarda (siyasət redaktoru, risk qiymətləndirmə) 30 saniyədə; "Saxlanıldı 14:32" göstəricisi
U11Qeyd olunmamış dəyişiklikSəhifədən çıxarkən xəbərdarlıq (beforeunload + router guard)
U12AccessibilityWCAG 2.2 AA: kontrast ≥4.5:1, fokus göstəricisi, ARIA, skip-link, form label
U13Klaviatura 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
U14Responsive≥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ə)
U15Dark modeOpsional, sistem tənzimləməsinə uyğun
U16Audit-həssas əməliyyatlarda əsaslandırmaModal: "Səbəb (məcburi, min 20 simvol)" — ixrac, məxfi baxış, override, deadline uzatma
U17Yükləmə vəziyyətləriSkeleton (ilk yükləmə), spinner (fəaliyyət), progress (yükləmə/ixrac)
U18Xəta mesajlarıNə baş verdi + nə etməli + dəstək üçün korrelyasiya ID
U19Dil dəyişikliyiAnında, səhifə yenilənmədən; seçim profildə saxlanılır
U20Tarix/saatQurumun saat qurşağında, dd.MM.yyyy HH:mm formatında; nisbi vaxt tooltip-də ("3 gün əvvəl")

8.4 Dizayn sistemi


9. Sistem arxitekturası

9.1 C4 Level 1 — Kontekst diaqramı

mermaid
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 --> NTP

9.2 C4 Level 2 — Konteyner diaqramı

mermaid
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 --> PROM

9.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əbliyiAşağı (3–5 konteyner)Yüksək (20+ servis, service mesh, distributed tracing)✅ MM
Komanda ölçüsü (8–9 nəfər)Uyğun2–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 scaleMəhdud (bütöv scale)Yaxşı⚠️ Microservices, lakin ehtiyac yoxdur (10k istifadəçi)
DeploymentBir artefaktÇoxlu pipeline✅ MM
Texnoloji müxtəliflikYoxVarLazım deyil
Səhv izolyasiyasıZəifGüclü⚠️ MS — MM-də kritik hissələr ayrılır
Gələcək ayırmaModul sərhədləri saxlanılırsa asan

Ayrıca servis kimi çıxarılanlar (əsaslandırma ilə):

Servis Səbəb
Phishing Landing ServiceDMZ-də, internetə yaxın, minimal hücum səthi, əsas DB-yə yazma girişi yox — təhlükəsizlik izolyasiyası
Phishing Mail SenderAğı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 GatewayXarici sistemlərdən yüksək həcmli hadisə qəbulu, ayrıca scale
Report RendererCPU-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əyirJava/Spring Boot (eyni dərəcədə uyğun — komandanın təcrübəsinə görə seçilə bilər)
FrontendReact 19 + TypeScript 5 + ViteƏn geniş ekosistem və kadr bazası; TS tip təhlükəsizliyiVue 3, Angular
UIÖz dizayn sistemi (Radix UI primitivləri + Tailwind CSS)Accessibility hazır (Radix), brendləşdirmə sərbəst, vendor lock-in yoxMUI, Ant Design (daha ağır, dizayn məhdudiyyəti)
StateTanStack Query + ZustandServer state / client state ayrılığıRedux Toolkit
DBPostgreSQL 16Açıq mənbə, JSONB, partisiyalaşdırma, RLS, full-text, güclü on-prem dəstəyi, pgauditMSSQL (lisenziya xərci), Oracle (lock-in)
ORMEF Core 9 + Dapper (ağır sorğular)Miqrasiya, tip təhlükəsizliyi
Cache/SessionRedis 7Sessiya, paylaşılan kilid, rate limiting, cacheValkey (Redis forku, tam açıq lisenziya)
BrokerRabbitMQ 4Etibarlı, on-prem sadə, DLQ, routingKafka (artıq mürəkkəb bu həcm üçün), NATS
AxtarışOpenSearch 2Apache 2.0 lisenziya (Elastic lisenziya problemi yox), AZ analizatorElasticsearch, Meilisearch (daha sadə, az funksional)
Obyekt saxlamaMinIOS3 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ə)
IAMKeycloak 26OIDC/SAML, AD federasiyası, MFA, açıq mənbə, geniş istifadəADFS (Windows asılılığı), Authentik, öz realizasiya (tövsiyə olunmur)
SecretHashiCorp Vault (OSS)Mərkəzi secret, dinamik DB kredensialları, transit şifrələmə (KMS)OpenBao (Vault forku), Kubernetes Secrets + sops
AntivirusClamAV + ICAP adapteriAçıq mənbə, on-prem; qurumun mövcud AV-si varsa ICAP ilə inteqrasiyaQurumun mövcud həlli
Background jobHangfire (PostgreSQL storage)Dashboard, retry, cron, on-prem sadəQuartz.NET
PDF/DOCXQuestPDF (PDF), OpenXML SDK (DOCX/XLSX)Lisenziya təmiz, server-side, şriftlər lokalLibreOffice headless (ağır), Aspose (kommersiya)
OCRTesseract 5 (az/en/rus dil paketləri)Açıq mənbə
MonitorinqPrometheus + Grafana + Loki + TempoAçıq mənbə standartZabbix (qurumda varsa inteqrasiya)
KonteynerDocker / Podman
OrkestrasiyaDocker Compose (kiçik) / Kubernetes (HA)Ölçüyə görə seçimNomad
CI/CDGitLab CI (self-hosted) və ya JenkinsOn-prem, air-gapped uyğunGitea Actions
Artefakt registryHarbor (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)

mermaid
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.-> DRMIN

Resurs təxmini (Variant B, 10 000 istifadəçi):

Komponent Replika CPU RAM Disk
API32 vCPU4 GB
Worker22 vCPU4 GB
Report renderer22 vCPU4 GB
DLP gateway21 vCPU2 GB
Mail sender11 vCPU2 GB
Landing21 vCPU1 GB
Keycloak22 vCPU4 GB
PostgreSQL2+18 vCPU32 GB1 TB NVMe
PostgreSQL (audit)24 vCPU16 GB2 TB
Redis31 vCPU4 GB
RabbitMQ32 vCPU4 GB100 GB
OpenSearch34 vCPU16 GB500 GB
MinIO42 vCPU8 GB4 × 2 TB
Vault31 vCPU2 GB20 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 patternDomain 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 / idempotencyHər hadisə message_id ilə; təkrar emal qarşısı alınır
Retry + DLQEksponensial gözləmə, 5 cəhd, sonra Dead Letter Queue + alarm
Circuit breakerXarici sistemlərə (AD, SMTP, SIEM, AV) — Polly
BulkheadHər xarici inteqrasiya üçün ayrı connection pool
Graceful degradationAD ə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 concurrencyrow_version / xmin; HTTP 412 Precondition Failed
Distributed lockRedis (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əqliyyatTLS 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ən9.1
Daxili trafik mTLSServis-servis, xüsusilə gateway ↔ konnektorlar9.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ı DEK6.2
Backup: şifrələnmiş, ayrı açar6.2
Açar idarəetməsiVault: 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ır6.4
AutentifikasiyaOIDC/SAML SSO; MFA imtiyazlı rollar üçün məcburi; lokal parollar Argon2id (m=64MB, t=3, p=4)Keycloak2.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ənir3.x
Step-up auth: məxfi məzmun, DLP L2, konfiqurasiya dəyişikliyi2.8
AvtorizasiyaHər endpoint-də açıq siyasət (default deny); obyekt səviyyəsində yoxlama (BOLA qarşı); field-level filtrasiyaPolicy-based authorization4.x
Giriş validasiyasıSxem əsaslı validasiya (FluentValidation); allowlist yanaşması; tip/uzunluq/format5.1
SQL injectionYalnız parametrləşdirilmiş sorğular; EF Core; dinamik SQL qadağan (lint qaydası)5.3
XSSReact 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
CSRFSameSite=Strict + anti-forgery token (dəyişdirici sorğularda) + Origin/Referer yoxlaması4.2
SSRFXarici 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ənmir5.2
Fayl yükləmə§4.7.5 S1–S1212.x
DeserializasiyaJSON yalnız; polimorf deserializasiya qadağan; System.Text.Json strict5.5
Secure headersX-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-site14.4
Rate limitingAnonim: 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/IPRedis token bucket13.x
LoglamaStruktur (JSON), korrelyasiya ID; həssas məlumat maskalanır (parol, token, FİN, kart, məxfi məzmun) — mərkəzi SensitiveDataRedactor7.x
Xəta idarəetməsiÜmumi xəta mesajı + korrelyasiya ID; stack trace heç vaxt klientə getmir7.4
API təhlükəsizliyiOpenAPI sxemi məcburi validasiya; versiyalaşdırma; yalnız lazım olan HTTP metodlarıOWASP API Top 10
BağımlılıqlarSCA (Trivy/Dependabot), SBOM (SPDX/CycloneDX), yalnız təsdiqlənmiş daxili registry-dən14.2
KonteynerDistroless/chiseled image, non-root user, read-only filesystem, capabilities drop, seccomp, image imzası (Cosign), Trivy skanı CI-də bloklayıcı14.x
SecretKodda secret yoxdur (gitleaks CI-də); runtime-da Vault-dan; env dəyişənlərində yalnız Vault ünvanı və token14.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_refVault istinadı (parol özü DB-də deyil)
sender_profile.smtp_password_refVault istinadı
api_key.hashArgon2 hash
user.personal_notes (varsa)
audit_log.previous_value/new_value — həssas sahələrMaskalanır (şifrələnmir — axtarış üçün)
edm_index_entry.value_hashsalt+SHA-256 (geri qaytarıla bilməz)
vendor_portal_tokenHash

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əzmunuRBAC (yalnız security_lead)Dual approvalMüddətli token (30 dəq)Şifrələmə + audit + data owner bildirişi
Audit logYalnız INSERT (tətbiq)DB rolu + triggerHash zənciriSIEM surəti + WORM arxiv
AD servis hesabıVault-daMinimum icazə (read-only, OU məhdud)LDAPSRotasiya + istifadə monitorinqi
Fişinq kredensial səhifəsiKlient JS dəyər göndərmirServer body oxumurLog filtriAyrıca servis, DB yazma yox
Platform konfiqurasiyasıRBACDual control (kritik parametrlər)AuditDəyişiklik bildirişi CISO-ya

10.5 Təhlükəsiz standart konfiqurasiya (Secure Defaults)

Parametr Default
Yeni rolun icazələriSı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 rejimiTest
AD write-backSöndürülüb
Anonim bildirməAktiv (istifadəçi seçimi)
Xarici portalSöndürülüb
API açarının müddəti90 gün
Parol siyasəti (lokal)14+ simvol, kompleks, 90 gün, son 12 təkrar qadağan
MFAİmtiyazlı rollar üçün məcburi
Sessiya30 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
CORSYalnız öz origin
RegistrationSöndürülüb (yalnız AD)

11. Active Directory inteqrasiya arxitekturası

11.1 Komponentlər

mermaid
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 --> CACHE

DC 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):

json
{
  "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)

csharp
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ı:

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)

11.5 Fallback və kəsilmə ssenariləri

Ssenari Davranış
AD tam əlçatmazdırMö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ırAvtomatik failover, alarm
Keycloak əlçatmazdırGiriş 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əsiTimeout 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)

  1. Sertifikat yoxlaması söndürülə bilməz (konfiqurasiya parametri yoxdur).
  2. Kütləvi dəyişiklik qoruyucusu >20% deaktivləşdirmə cəhdində işi dayandırır.
  3. LDAP filtr parametrləri escape edilir (injection testi).
  4. DC əlçatmaz olduqda ikinci DC-yə keçid ≤ 10 saniyə.
  5. ltree skoup 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ə

mermaid
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ə.-> SDT

12.2 Qayda paketi (Rule Bundle) formatı

json
{
  "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 edir1
İxrac həcmi>1000 sətir → səbəb; >10000 → təsdiq1
Sübut yükləməsiAyrı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ətiMə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 limiti1
Anomal davranışQısa müddətdə çoxlu məxfi obyekt baxışı → alarm3
Fayl etiketiİxrac olunan hər fayla təsnifat metadata + vizual etiket3

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əbulKonnektorlar default olaraq məzmun göndərmir — yalnız contentRef (öz saxlamalarındakı istinad)
SaxlamaMə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
MaskalamaSensitiveDataMasker — 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)
İxracMəzmun heç vaxt ixrac edilmir; hesabatlarda yalnız metadata
LogcontentSample sahəsi log serializatorunda daimi [REDACTED]

12.6 Qəbul meyarları

  1. Qayda paketi imzalanır; imzasız/səhv imzalı paket agent tərəfindən qəbul edilmir.
  2. Konnektordan gələn hadisədə contentSample doldurulubsa və konnektor üçün icazə verilməyibsə — sahə atılır və xəbərdarlıq loglanır.
  3. Maskalanmamış məzmun heç bir API cavabında (L2 istisna olmaqla) görünmür — avtomatlaşdırılmış test.
  4. Məzmun nümunəsi 90 gündən sonra avtomatik silinir; metadata qalır.
  5. Daxili detection engine 10 MB DOCX faylını ≤ 3 saniyədə emal edir.
  6. Ş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ırmasnake_case, cəm olmayan tək isim (risk, control, training_assignment)
Primary keyid BIGINT GENERATED ALWAYS AS IDENTITY (daxili) + public_id UUID (xarici/API) və ya code VARCHAR (RSK-2026-0014)
SxemlərModul üzrə: core, training, phishing, policy, compliance, risk, audit, evidence, asset, vendor, classification, dlp, incident, workflow, auditlog
Audit sahələricreated_at TIMESTAMPTZ NOT NULL DEFAULT now(), created_by BIGINT, updated_at TIMESTAMPTZ, updated_by BIGINThər cədvəldə
Soft deletedeleted_at TIMESTAMPTZ NULL, deleted_by BIGINT, deletion_reason TEXTbü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 lockingrow_version (xmin və ya INTEGER sütun) — ETag kimi API-də
Tenant/scopeorganization_id BIGINT NOT NULL — bütün biznes cədvəllərində; department_id — skoup tələb edən cədvəllərdə
Ownershipowner_user_id BIGINT — skoup hesablanması üçün
Classificationclassification_level_id BIGINT NULL — təsnif edilə bilən obyektlərdə
VersiyalaşdırmaAyrıca *_version cədvəli (sənəd, siyasət, DLP qaydası, sxem) və ya valid_from/valid_to (mapping, təyinat)
StatusVARCHAR(40) + CHECK constraint (enum deyil — miqrasiya rahatlığı üçün) + lookup cədvəli (lokalizasiya üçün)
ZamanHəmişə TIMESTAMPTZ, UTC-də saxlanılır; UI-da qurumun zonasında
JSONJSONB + GIN indeks (konfiqurasiya, əlavə metadata)
Mətn axtarışıtsvector sütunu + GIN indeks (AZ konfiqurasiyası) və ya OpenSearch
Partisiyalaşdırmaauditlog.audit_log (aylıq RANGE), phishing.phishing_event (kampaniya üzrə HASH və ya aylıq), dlp.dlp_incident (aylıq)
Referensial bütövlükFK-lar açıq; ON DELETE RESTRICT (soft delete istifadə olunduğuna görə); lookup-lara ON DELETE RESTRICT
İndekslərHər FK-da; status + tarix kombinasiyalarında; WHERE deleted_at IS NULL qismən indekslər
Row Level Securitydlp.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)

mermaid
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

mermaid
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

mermaid
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

mermaid
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

mermaid
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

sql
-- 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 mln450 mln~900 GB (partisiyalı, arxivlənən)
phishing_event~1.5 mln4.5 mln~3 GB
dlp_incident~200 min600 min~2 GB (+ məzmun ayrıca)
training_progress~2 mln6 mln~4 GB
notification~5 mln15 mln~10 GB
policy_acknowledgement~150 min450 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
StilREST + 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 URLhttps://etimad.qurum.gov.az/api/v1
VersiyalaşdırmaURL-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
Formatapplication/json; charset=utf-8, camelCase sahə adları
TarixISO 8601 UTC (2026-09-14T10:22:31Z)
IDAPI-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)
Statuslar200, 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

http
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,owner

Cavab zərfi:

json
{
  "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": "..." }
}

14.3 Xəta formatı (RFC 9457 Problem Details)

json
{
  "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ə)

http
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

http
POST /api/v1/phishing-campaigns/{id}/launch
Idempotency-Key: 018f2a1c-7b3e-7c4a-9d2e-1a2b3c4d5e6f

14.6 Toplu (bulk) əməliyyatlar

http
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..." }

14.7 Avtorizasiya modeli (API səviyyəsində)

csharp
[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ı:

csharp
var query = _db.Risks.ApplyScope(User);   // department subtree, ownership, classification

14.8 Xüsusi API nümunələri

Effektiv icazələrin yoxlanması (UI üçün):

http
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):

http
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:

http
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 simvol

Asinxron hesabat:

http
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 AuthenticationOIDC, qısa token, refresh rotasiyası, MFA
API3 Broken Object Property Level AuthorizationDTO 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 ConsumptionRate 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 FlowsKampaniya başlatma, toplu ixrac — əlavə təsdiq və rate limit
API7 SSRF§10.2
API8 Security MisconfigurationSecure defaults, konfiqurasiya yoxlaması startup-da, CIS benchmark
API9 Improper Inventory ManagementOpenAPI 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 APIsXarici cavabların validasiyası, timeout, circuit breaker

14.10 API sənədləşdirilməsi


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. Modulrisk, dlp, evidencePermission açarının prefiksi
2. Əməliyyatread, create, update, delete, approve, export, download, preview, assign, overridePermission açarı: risk:approve
3. Qeyd (Record)Yalnız konkret obyektObyekt səviyyəsində authorization handler
4. Departament / SkoupYalnız öz alt ağacıltree skoup filtri sorğuda
5. TəşkilatYalnız öz regional qurumuorganization_id filtri
6. TəsnifatCONFIDENTIAL+ üçün ayrıca icazəclassification:view:confidential
7. Sahə (Field)DLP hadisəsində contentSampleDTO mapping-də icazə yoxlaması

Skoup tipləri:

Skoup Məna
ownYalnı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)
assignedTə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ı
allBü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
employeeRᵒRᵒR*RRᵒC,RᵒRUᵒRᵒ
department_managerRᵈRᵈ(aqreqat)Rᵈ(aqreqat)R,A*R,CᵈRᵃRᵈRᵈRRᵈ(L0)RᵈRUAᵈXᵈRᵒ
training_managerRCUDA,XRRR,CRRCUX
content_authorRCU(məzmun)RRRUᵒ
phishing_managerR,C*RCUD,XRCURRR,CRRRCUX
policy_authorRRCUᵒRRR,CRRRUᵒX
policy_reviewerRR,U*(rəy)RRRRRRUᵃX
policy_approverRR,ARRRRRRUAᵃX
compliance_officerR,XR(aqreqat)R(aqreqat)RCUDARCUDA,XR,CR,CRCUA,XR,CUR,CRCUR,AR(statistika)RRCUAXR(uyğunluq)
control_ownerRRR,UʷR,CRᵃR,C,UʷRRRRUᵃX
risk_ownerRRRR,CUʷRR,CRRRRRUᵃX
risk_managerRR(aqreqat)RRR,URCUDA,XRR,CRRRRR(statistika)RRCUAX
internal_auditorR,XR(aqreqat)R(aqreqat)RR,XR,XRCUDAᵃ,XR,XRRRRR(statistika)RRCUᵃXR,X
external_auditorRᵃRᵃRᵃRᵃRᵃRᵃ*RᵃRᵃRᵃRᵃXᵃ
evidence_ownerRRRRRᵃRCUʷ,XRRRUᵃ
asset_ownerRRRR,CR,CR,CUʷRR,U*RRUᵃX
data_ownerRRRRRRRRCUA*(öz)R,A*Rᵒ(öz məlumatı)RRUAᵃX
vendor_managerRRRR,CRR,CRRCUDA,XRRRCUAX
dlp_analystRR*RRR,CR,CRRRRRCUA(L0,L1)R,CRCUᵃX*
dlp_adminRRRRRRRR,URCUDRRUᵃX(siyasət)
security_incident_analystRRRRRR,CR,CRRRRR(L0)RCUDA,XRCUAX
security_leadR,XRA,XR,XR,AR,XR,A,XRR,XRRR,AR,ARA(L0,L1,L2*)RA,XRCUAXR,X
executive_viewerR(aqreqat)R(aqreqat)R(aqreqat)RR(aqreqat)R(top)R(xülasə)R(xülasə)R(xülasə)RR(aqreqat)R(aqreqat)RᵒX
platform_adminR(meta)R(meta)R(meta)R(meta)R(meta)R(meta)R(meta)R,CUR(meta)R,U*R(meta)R(meta)RR(sistem)RCUDAR(sistem)
readonly_auditorRRRRRRRRRRRRR(L0)RRXR(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
N1employee siyasəti yalnız tətbiq dairəsindənəşr olunmuş görür
N2department_manager siyasət təsdiqi yalnız ona açıq təyin edilmiş sənədlərdə
N3platform_admin DLP hadisə məzmununu və məxfi sübut məzmununu görmür (P8) — yalnız metadata
N4dlp_admin hadisə məlumatlarına ümumiyyətlə çıxışı yoxdur (SoD-4)
N5security_lead L2 məzmuna yalnız dual approval + səbəb + müddətli token ilə
N6external_auditor sübutu yalnız təyin olunmuş audit skoupunda, yükləmə hər dəfə loglanır, hesabı müddətlidir
N7data_owner yalnız öz məlumat aktivlərinin təsnifatını idarə edir
N8executive_viewer fərdi nəticələri görmür — yalnız aqreqat
N9Heç bir rol audit logunu dəyişə/silə bilmir
N10phishing_manager təlim yarada bilir, lakin yalnız fişinqlə əlaqəli mikro-təlimləri
N11dlp_analyst ixracı yalnız maskalanmış metadata ilə
N12Bü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:export

15.4 Skoup hesablanması (alqoritm)

csharp
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ı

15.6 Qəbul meyarları

  1. Hər endpoint üçün açıq icazə tələbi var; atributsuz endpoint startup-da xəbərdarlıq verir və 403 qaytarır.
  2. Obyekt səviyyəsində avtorizasiya testləri hər modul üçün mövcuddur (negative testlər prioritetlidir).
  3. platform_admin hesabı ilə məxfi sübut və DLP məzmununa cəhd 403 qaytarır.
  4. Şöbə müdiri qonşu şöbənin obyektini birbaşa ID ilə ala bilmir.
  5. 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).
  6. SoD pozuntusu rol təyinatı zamanı bloklanır və audit logunda görünür.
  7. İ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
AutentifikasiyaAUTH_LOGIN_SUCCESS, LOGIN_FAILED, LOGOUT, MFA_*, STEP_UP, SESSION_REVOKED24 ay + 7 il arxiv
AvtorizasiyaAUTHZ_ACCESS_DENIED, SOD_VIOLATION_BLOCKED, SOD_OVERRIDE_APPROVED, PERMISSION_CHECK_FAILED24 ay + 7 il
Məlumat (CRUD)<OBJ>_RISK_CREATED, POLICY_UPDATED, CONTROL_DELETED24 ay + 7 il
Baxış<OBJ>_VIEWEDEVIDENCE_PREVIEWED, DLP_INCIDENT_VIEWED, WORKING_PAPER_VIEWED24 ay
İxrac<OBJ>_EXPORTEDRISK_REGISTER_EXPORTED, AUDITLOG_EXPORTED24 ay + 7 il
FaylFILE_UPLOADED, DOWNLOADED, MALWARE_DETECTED, INTEGRITY_FAILED24 ay + 7 il
İcazəROLE_, PERM_ROLE_ASSIGNED, ROLE_REVOKED, PERMISSION_CHANGED7 il
Təsdiq*_APPROVED/REJECTEDPOLICY_APPROVED, RISK_ACCEPTED, DLP_POLICY_APPROVED7 il
KonfiqurasiyaCONFIG_CONFIG_CHANGED, FEATURE_FLAG_CHANGED, RETENTION_CHANGED7 il
İnteqrasiyaINTEGRATION_AD_SYNC_*, SIEM_*, CONNECTOR_*24 ay
APIAPI_API_KEY_ISSUED, API_KEY_REVOKED, API_RATE_LIMITED24 ay
SistemSYSTEM_BACKUP_COMPLETED, JOB_FAILED, INTEGRITY_CHECK_FAILED24 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ı

csharp
// 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şi

Niyə 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ə
İstintaqKorrelyasiya ID ilə bütün zəncir; istifadəçi üzrə timeline
Uyğunluq sübutuNəzarət tədbirinə bağlı log çıxarışı → sübut obyekti (M07)
AuditAuditor ö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

16.7 Qəbul meyarları

  1. Audit yazısı uğursuz olarsa kritik əməliyyat (təsdiq, icazə dəyişikliyi) də uğursuz olur (atomiklik).
  2. Hash zənciri gündəlik yoxlanılır; pozuntu kritik alarm yaradır.
  3. Maskalama testi: audit logunda parol/token/FİN patternləri axtarılır → 0 nəticə.
  4. 100 mln sətirdə aktor + tarix filtri ≤ 3 saniyə.
  5. Audit log ixracı özü loglanır və imzalanır.
  6. 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-01Təlim tamamlanma hesabatıM01dövr, şöbə, proqram, statusPDF/XLSX/CSVMenecer, GRC1
RPT-02İmtahan nəticələri hesabatıM01proqram, dövr, şöbəXLSX/CSVTəlim meneceri1
RPT-03Fişinq kampaniya hesabatıM02kampaniyaPDF/XLSXTəhlükəsizlik, rəhbərlik1
RPT-04Şöbə üzrə insan riski hesabatıM02dövr, şöbəPDF/XLSXMenecer, CISO1
RPT-05Siyasətlə tanışlıq hesabatıM03sənəd, şöbə, versiyaXLSX/CSVCompliance1
RPT-06Vaxtı keçmiş/baxış tələb edən sənədlərM03dövrXLSXCompliance1
RPT-07Statement of Applicability (SoA)M04framework, versiya/baselinePDF/XLSXAuditor, sertifikasiya1
RPT-08Uyğunluq boşluqları (Gap) hesabatıM04framework, domainPDF/XLSXCompliance, rəhbərlik1
RPT-09Nəzarət tədbirlərinin statusuM04framework, sahib, statusXLSXCompliance1
RPT-10Risk reyestriM05səviyyə, status, şöbə, kateqoriyaXLSX/PDFRisk meneceri, auditor1
RPT-11Risk emalı hesabatıM05dövr, statusXLSXRisk meneceri1
RPT-12Risk qəbulları hesabatıM05dövr, səviyyəPDF/XLSXRəhbərlik1
RPT-13Daxili audit hesabatıM06auditPDF/DOCXAuditee, rəhbərlik2
RPT-14Açıq tapıntılar hesabatıM06tip, şöbə, gecikməXLSXAuditor, menecer2
RPT-15Sübutun bitmə hesabatıM07üfüq (30/60/90 gün)XLSXSübut sahibləri1
RPT-16Aktiv reyestriM08tip, kritiklik, şöbəXLSXCompliance, İT2
RPT-17Təchizatçı riski hesabatıM09kritiklik, risk zolağıPDF/XLSXVendor meneceri, rəhbərlik2
RPT-18Məlumat təsnifatı hesabatıM10səviyyə, şöbə, obyekt tipiXLSXData owner, Compliance3
RPT-19DLP hadisə hesabatıM13dövr, şöbə, kanal, severityPDF/XLSXCISO, SOC3
RPT-20DLP siyasətinin effektivliyiM12/M13dövr, siyasətPDF/XLSXDLP admin, CISO3
RPT-21Rəhbərlik üçün təhlükəsizlik hesabatıHamısıdövr (rüb)PDF/DOCXRəhbərlik2

Ə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   │
└────────────────────────────────────────────────────────┘

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ə linki

Vacib: 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

17.5 Qəbul meyarları

  1. 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).
  2. 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).
  3. Hesabat istifadəçinin skoupunu keçmir (negative test).
  4. Planlaşdırılmış hesabat alıcının icazəsinə görə filtrlənir.
  5. > 50 000 sətirlik XLSX ixracı streaming ilə yaddaş problemi yaratmadan işləyir.
  6. 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
I1Active Directory / LDAPETİMAD ← AD (oxuma)LDAPS 636, GC 3269Kritik1
I2Keycloak / ADFS (SSO)ETİMAD ↔ IdPOIDC, SAML 2.0Kritik1
I3SMTP / Exchange (bildiriş)ETİMAD →SMTP/TLS 587Yüksək1
I4SMTP relay (fişinq)ETİMAD →SMTP/TLS, ayrıca relayYüksək1
I5Email gateway (allowlist + report)ETİMAD ↔Konfiqurasiya + IMAP/GraphOrta1–2
I6Outlook / M365 add-in→ ETİMADREST + OAuthOrta2
I7SIEMETİMAD →Syslog CEF/LEEF (TLS), webhookYüksək1
I8SOARETİMAD ↔REST webhookOrta2
I9Ticketing (Jira/ServiceNow/GLPI)ETİMAD ↔RESTOrta2
I10Antivirus / ICAPETİMAD →ICAP və ya clamdKritik (fayl)1
I11DLP endpoint agentETİMAD ↔Qayda pull (REST), hadisə pushYüksək3
I12DLP email/networkETİMAD ←Syslog/RESTYüksək3
I13HR sistemiETİMAD ←CSV/SFTP və ya RESTOrta2
I14CMDBETİMAD ←CSV/RESTAşağı2
I15Vault / KMSETİMAD →HTTPS APIKritik1
I16Backup sistemiAgent/snapshotKritik1
I17Monitorinq (Prometheus/Zabbix)ETİMAD →/metrics, SNMPYüksək1
I18NTPETİMAD →NTPKritik (audit vaxtı)1
I19PKI / SertifikatƏl ilə/ACME daxiliYüksək1
I20SCORM/xAPI məzmunPaket import, LRSAşağı2

18.2 İnteqrasiya prinsipləri

Prinsip Tətbiq
Anti-corruption layerHər xarici sistem üçün adapter; xarici model heç vaxt domenə sızmır
Konfiqurasiya, kod deyilYeni SIEM/ticketing əlavə etmək üçün adapter + konfiqurasiya; kod dəyişikliyi minimal
Asinxron üstünlükXarici sistemə göndərmə növbə vasitəsilə; sinxron yalnız AD auth
Etibarlı çatdırılmaOutbox + retry + DLQ; itki yoxdur
Circuit breakerXarici 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-daHeç bir inteqrasiya kredensialı DB-də və ya konfiqurasiya faylında açıq deyil
Test rejimiHər inteqrasiya üçün "Test bağlantısı" düyməsi — nəticə detallı
Sağlamlıq monitorinqiHə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 qeydi

18.5 Air-gapped / məhdud internet rejimi

Ehtiyac Həll
Konteyner imicləriDaxili 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ə ikonlarLokal, 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
SertifikatlarDaxili PKI
OCR dil paketləriİmicə daxil edilir
Yeniləmə paketiİmzalanmış offline paket (imicler + miqrasiyalar + release notes)

18.6 Qəbul meyarları

  1. Hər inteqrasiya üçün "Test bağlantısı" funksiyası var və detallı nəticə qaytarır.
  2. Xarici sistem əlçatmaz olduqda platforma işləməyə davam edir (graceful degradation testi).
  3. SIEM buferi dolduqda ən köhnə hadisələr deyil, xəbərdarlıq yaranır və admin bildirilir.
  4. Heç bir inteqrasiya secret-i DB-də və ya log-da açıq görünmür.
  5. 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 sLAN, orta iş stansiyası
API GET (sadə obyekt)≤ 200 ms≤ 500 msServer 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 sWidget-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 sPartisiya + indeks
Sənəd redaktoru avtosave≤ 300 msFon, 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 sAsinxron, bildirişlə
XLSX ixrac (50 000 sətir)≤ 60 s≤ 120 sStreaming
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 saatQəsdən paylanmış
DLP hadisə qəbulu≤ 100 ms/hadisə≤ 300 msQəbul → növbə
DLP detection (10 MB DOCX)≤ 3 s≤ 8 sOCR-siz
Bildiriş göndərilməsi≤ 60 s≤ 180 sHadisədən emailə

19.2 Miqyas və tutum

Parametr MVP Hədəf Maksimum layihələndirilmiş
Ümumi istifadəçi2 00010 00025 000
Eyni anda aktiv sessiya2008002 000
Eyni anda API sorğusu (RPS)50200500
Risklər5003 00010 000
Nəzarət tədbirləri1505002 000
Sənədlər1008003 000
Sübutlar2 00020 000100 000
Aktivlər5005 00020 000
Təchizatçılar505002 000
DLP hadisəsi / gün1 00010 000
Fişinq hadisəsi / kampaniya10 00050 000200 000
Audit log / gün200 000500 0002 000 000
Fayl saxlama100 GB1 TB10 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əfi99.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 tezliyiTam: həftəlik; artımlı: gündəlik; WAL: davamlı
Backup saxlamaGündəlik 30 gün, həftəlik 12 həftə, aylıq 24 ay, illik 7 il
Backup şifrələnməsiAES-256, ayrıca açar (Vault-dan kənar surət seyfdə)
Backup bərpa testiRü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 backupGitOps — 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əyir0
PostgreSQL primary çökdüPatroni/repmgr avtomatik failover standby-a≤ 2 dəq
Bütöv data mərkəziDR 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 log24 ay7 il (WORM)Məhv (akt ilə)
Təhlükəsizlik hadisələri36 ay7 il
DLP hadisə metadata24 ay5 il
DLP məzmun nümunəsi90 günAvtomatik silinmə
Fişinq fərdi hadisələri24 ayAnonimləşdirmə → aqreqat
Təlim nəticələri və sertifikatlarİşdən çıxana + 3 il10 ilUyğunluq sübutu
Siyasətlə tanışlıqSənəd qüvvədə + 5 il10 il
SübutlarNəzarət tədbiri aktiv + 3 ilAuditdən sonra 7 il
Risk qeydləriBağlanandan 5 il10 il
Audit sənədləri və iş kağızları7 il10 ilISO tələbi
Bildirişlər12 aySilinmə
Sessiya qeydləri90 gün
Tətbiq logları90 gün12 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ərs500 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 pageSize200 (audit log 1 000)
Yüklənən fayl tipləriAllowlist: 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ərinliyi3
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 majorTam (dövlət qurumlarında əsas)
Google ChromeSon 2 majorTam
Mozilla FirefoxSon 2 major + ESRTam
Safari16+Əsas funksiyalar
Internet Explorer 11Dəstəklənmir (açıq xəbərdarlıq səhifəsi)
Mobil (iOS Safari, Chrome Android)Son 2 versiyaYalnı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ə
StandartWCAG 2.2 Level AA
KontrastMətn ≥ 4.5:1, böyük mətn ≥ 3:1, UI komponentləri ≥ 3:1
KlaviaturaBütün funksiyalar klaviatura ilə; görünən fokus göstəricisi; tələ (trap) yoxdur
Ekran oxuyucuNVDA + Edge ilə test; ARIA landmark, label, live region
RəngStatus heç vaxt yalnız rənglə; ikon + mətn + naxış
Mətn ölçüsü200% zoom-da funksionallıq itmir
Animasiyaprefers-reduced-motion dəstəyi
FormaHər sahə üçün <label>, xəta mesajı sahə ilə əlaqəli (aria-describedby)
QrafiklərHər qrafik üçün cədvəl alternativi + aria-label xülasəsi
Dillang atributu düzgün (az/en/ru), qarışıq məzmunda lang dəyişir
TestAvtomatik (axe-core CI-də) + əl ilə (klaviatura + NVDA) hər relizdə

19.8 Lokalizasiya

Aspekt Tələb
DillərAZ (default, tam), EN (tam), RU (tam)
Tərcümə mənbəyiJSON resurs faylları, i18next formatı; qurum tərəfindən redaktə edilə bilən
Tərcümə olunmayan məzmunQurumun 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
ValyutaAZN (₼)
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ərPrometheus + GrafanaRED (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)
LoglarStruktur JSON → Loki/OpenSearchKorrelyasiya ID, istifadəçi ID (həssas deyil), modul, səviyyə; həssas məlumat maskalanmış
İzləmə (Tracing)OpenTelemetry → Tempo/JaegerW3C Trace Context; DB, HTTP, MQ, LDAP spanları; sampling 10% + xətalar 100%
Sağlamlıq/health/live, /health/readyHər asılılıq ayrıca statusla
AlarmlarAlertmanagerAşağıdakı cədvəl

Kritik alarmlar:

Alarm Şərt Prioritet
Audit log bütövlüyü pozulduHash zənciri uyğunsuzluğuP1 — dərhal
Break-glass girişİstifadə edildiP1
Zərərli proqram aşkarlandıFayl yükləməsindəP1
DLP fövqəladə söndürməİstifadə edildiP1
Verilənlər bazası əlçatmazdırHealth check uğursuzP1
Backup uğursuz oldu2 ardıcılP1
SIEM göndərməsi dayandı15 dəqP2
AD sinxronizasiya uğursuz2 ardıcılP2
Növbə uzunluğu kritik> 10 000 mesajP2
Disk dolur> 85%P2
Xəta nisbəti yüksək5xx > 1% (5 dəq)P2
Cavab müddəti pisləşdiP95 > 2× hədəfP3
Sertifikat bitir< 30 günP3

19.10 Tutum planlaması

Dövr Fəaliyyət
HəftəlikDisk, növbə, xəta nisbəti baxışı
AylıqArtım trendi (istifadəçi, obyekt, log həcmi); proqnoz 6 ay
RüblükYük testi (hədəf yükün 150%-i); tutum hesabatı
İllikArxitektura 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
CJ1DLP hadisə məzmunuReal həssas məlumat nümunələriXüsusi əhəmiyyətli
CJ2Məxfi sübut fayllarıQurumun təhlükəsizlik konfiqurasiyası, zəiflikləriMəxfi
CJ3Audit iziBütün fəaliyyətin sübutu; pozulması hər şeyi şübhəli edirMəxfi
CJ4Risk reyestriQurumun bütün zəifliklərinin xəritəsiMəxfi
CJ5AD servis hesabıKataloqa girişXüsusi əhəmiyyətli
CJ6Şifrələmə açarları (Vault)Bütün şifrələnmiş məlumatXüsusi əhəmiyyətli
CJ7İstifadəçi kredensiallarıHesab ələ keçirməXüsusi əhəmiyyətli
CJ8DLP siyasətləriNədən qorunduğumuzun xəritəsi; söndürülməsiMəhdud girişli
CJ9Fişinq infrastrukturuSui-istifadə → real hücum alətiMəhdud girişli
CJ10İnsan riski profilləriFərdi məlumat, sui-istifadə riskiMə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, sabotajYüksəkYüksək
TA2 — Xarici hücumçu (maliyyə)Ransomware, məlumat satışıOrtaYüksək
TA3 — Zərərli daxili istifadəçiMəlumat oğurluğu, izlərin gizlədilməsiYüksək (giriş var)Kritik
TA4 — Səhlənkar daxili istifadəçiYoxdur (təsadüfi)OrtaYüksək
TA5 — İmtiyazlı istifadəçinin sui-istifadəsi (admin)Nəzarətdən yayınma, məlumatÇox yüksəkKritik
TA6 — Kompromis olunmuş təchizatçıTədarük zənciriOrtaOrta
TA7 — Audit subyekti (tapıntını gizlətmək)Nəticələri manipulyasiyaOrtaOrta

20.4 STRIDE analizi — komponent üzrə

20.4.1 Autentifikasiya / IAM

STRIDE Təhdid Təsir Ehtimal Nəzarət
SKredensial doldurma (credential stuffing)53MFA, rate limit, hesab kilidi, anormal giriş aşkarlanması
SSessiya oğurluğu (XSS/şəbəkə)52HttpOnly+Secure+SameSite, TLS, CSP, qısa token, sessiya bağlanması
SToken təkrar istifadəsi (replay)42Qısa exp, jti blacklist, refresh rotasiyası
SKerberos bilet oğurluğu (Pass-the-ticket)52Bu ETİMAD-dan kənar risk; AD sərtləşdirilməsi tövsiyəsi, MFA step-up
TJWT dəyişdirilməsi (alg=none)51Yalnız RS256 qəbul; alg allowlist; JWKS yoxlaması
R"Mən giriş etməmişəm"33Audit log + IP + UA + SIEM surəti
Iİstifadəçi sayımı (enumeration)24Eyni xəta mesajı, eyni cavab müddəti
DAuth endpoint-inə DoS43Rate limit, CAPTCHA, WAF
ERol mapping manipulyasiyası52Yalnız admin, dual control, audit, SoD
EBreak-glass sui-istifadəsi52Fiziki 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
SPlatformadan real fişinq hücumu göndərmək53Tə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
IReal parolun saxlanması/oxunması52§4.2.5 tam dizayn: klient göndərmir, server oxumur, log yazmır, ayrıca servis, CI testi
TLanding səhifəsinin dəyişdirilməsi (real fişinq üçün)52Ayrıca servis, DB yazma yox, dəyişikliklər audit, imzalanmış deployment
IHədəf siyahısının sızması (kimin zəif olduğu)43Fərdi nəticələr məhdud rol, ixrac səbəb+audit, etik qaydalar
R"Bu kampaniyanı mən başlatmamışam"32Təsdiq zənciri + audit
DEmail gateway-in doldurulması33Sürət limiti, paylanmış göndərmə, ayrıca relay
ETracking domenindən sui-istifadə42Ayrıca domen, token validasiyası, müddət limiti

20.4.3 DLP modulu

STRIDE Təhdid Təsir Ehtimal Nəzarət
IAnalitikin lazımsız məzmun görməsi54L0/L1/L2 modeli, maskalama serverdə, dual approval, müddətli token, audit
Edlp_admin-in siyasəti özünə uyğunlaşdırıb məlumat oxuması53SoD-4: admin hadisə məzmununu görmür; siyasət dəyişikliyi təsdiq tələb edir
TQayda paketinin saxtalaşdırılması (agentə saxta qayda)52Rəqəmsal imza, agent yoxlayır, key rotation
THadisənin silinməsi/dəyişdirilməsi (izi gizlətmək)53Soft delete + audit; hadisə SIEM-ə də gedir (xarici surət)
DHadisə seli (hadisə qəbulu endpoint-inə)43Rate limit konnektor üzrə, dedupe, növbə, backpressure
SSaxta konnektor hadisə göndərir42mTLS + API key + konnektor allowlist
IFövqəladə söndürmə ilə DLP-nin bağlanması52Dual 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
TSübutun auditdən əvvəl dəyişdirilməsi53Hash + versiyalaşdırma + dəyişməz tarixçə + dövri bütövlük yoxlaması
IMəxfi sübutun sızması (admin vasitəsilə)53P8: admin avtomatik giriş almır; təsnifat yoxlaması; audit; su nişanı
SZərərli fayl yüklənməsi (webshell, makro)53Magic bytes, allowlist, ClamAV, sandbox önizləmə, Content-Disposition, CSP
IIDOR ilə başqasının sübutunun yüklənməsi53Obyekt səviyyəsində авторizasiya, imzalı müddətli URL, negative testlər
R"Bu sübutu mən yükləməmişəm"32Audit + hash + versiya
DZip bomb / böyük fayl ilə resurs tükətmə33Ölçü/dərinlik/açılmış ölçü limitləri, timeout

20.4.5 Audit izi

STRIDE Təhdid Təsir Ehtimal Nəzarət
TAdmin log sətrini dəyişir/silir537 qatlı müdafiə (§4.18.3): tətbiq, DB rolu, trigger, hash zənciri, möhür, SIEM surəti, WORM
TDB-yə birbaşa giriş ilə dəyişiklik52Hash zənciri aşkarlayır; SIEM ilə müqayisə; DBA fəaliyyəti ayrıca monitorinq
RLog-un olmaması ("hadisə qeydə alınmayıb")42Kritik hadisələr sinxron yazılır; yazma uğursuzsa əməliyyat uğursuz
ILog-dan həssas məlumatın oxunması43Maskalama, auditlog:read icazəsi, giriş audit olunur
DLog ilə disk doldurma33Partisiya, arxivləşdirmə, kvota monitorinqi

20.4.6 Xarici interfeyslər (DMZ)

STRIDE Təhdid Təsir Ehtimal Nəzarət
ELanding servisindən daxili şəbəkəyə keçid52Ayrıca zona, DB yazma yox, yalnız MQ write-only, minimal imic, firewall allowlist
EVendor portalından daxili sistemə keçid52Ayrıca servis, yalnız API, token skoupu, DMZ
SVendor token-in oğurlanması33Müddətli, birdəfəlik, IP bağlama (opsional), rate limit
DPublik endpoint-lərə DDoS43WAF, rate limit, upstream müdafiə
TTracking URL-in manipulyasiyası33İ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ır43SoD-7: icra edən yoxlaya bilməz; auditor təsdiqi məcburi; audit izi
Risk sahibi öz riskini qəbul edir43SoD-2 blok; səviyyəyə görə təsdiq ierarxiyası
Siyasət müəllifi öz sənədini təsdiqləyir33SoD-1 blok
Fişinq nəticələri intizam tədbiri üçün istifadə olunur44E5 etik qaydası, hesabatda normativ qeyd, HR ixracı ayrıca icazə+audit
İstifadəçilərin utandırılması → bildirmə mədəniyyətinin ölməsi44E1–E10 etik qaydaları, leaderboard yoxdur, neytral terminologiya
Uyğunluq balının "gözəlləşdirilməsi"43Hesablama şə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
1Real parolun fişinq simulyasiyasında saxlanması25§4.2.5 tam dizayn + CI testiDizaynda həll olunub
2Zərərli daxili istifadəçinin məxfi sübutları sızdırması20Təsnifat + P8 + audit + su nişanı + DLPDizaynda
3DLP analitikinin lazımsız məzmun görməsi20L0/L1/L2 + dual approvalDizaynda
4Admin-in audit izini dəyişməsi207 qatlı müdafiəDizaynda
5Platformadan real fişinq göndərilməsi20Təsdiq + SoD-10 + SOC bildirişi + auditDizaynda
6Sübutun auditdən əvvəl dəyişdirilməsi20Hash + versiya + bütövlük yoxlamasıDizaynda
7Hesab ələ keçirmə (imtiyazlı)20MFA məcburi + step-up + anomaliyaDizaynda
8AD servis hesabının kompromisi20Vault + minimum icazə + LDAPS + rotasiya + monitorinqDizaynda
9IDOR / obyekt səviyyəsində avtorizasiya boşluğu20Məcburi resource authorization + negative testlər + arxitektura testiTest strategiyasında
10Ransomware (bütöv platforma)20Immutable 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ırSkoup 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 bilmirBrauzer məhdudiyyətiSu nişanı + audit + siyasət + endpoint agent (varsa)
İstifadəçi legitim girişi ilə məlumatı əl ilə köçürə bilərFundamental məhdudiyyətMinimum giriş + audit + anomaliya aşkarlanması + DLP
AD kompromisi platformanı da kompromis edirAD həqiqət mənbəyidirBreak-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
UnitKod ≥ 75%; domen məntiqi ≥ 90% (risk skorinq, HRS, uyğunluq balı, confidence)xUnit + FluentAssertions
İnteqrasiyaBütün API endpoint-ləri; hər repositoryTestcontainers (PostgreSQL, Redis, RabbitMQ, MinIO)
E2E40–60 kritik axınPlaywright
Müqavilə (contract)Modul kontraktları, konnektor API-ləriPact və ya sxem validasiyası
ArxitekturaModul 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İR

Konkret kritik testlər:

Test Gözlənilən
platform_admin → məxfi sübut yükləmə403
platform_admin → DLP hadisə məzmunu403
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əsi403
employee → başqasının HRS-i403
policy_author → öz sənədini təsdiq403 + SoD audit
risk_owner → öz riskini qəbul403 + SoD audit
internal_auditor → öz nəzarət tədbirinin auditi403 + SoD audit
Düzəldici tədbiri icra edən → onu yoxlamaq403 + SoD audit
external_auditor → skoupdan kənar sübut403
external_auditor (müddəti bitmiş) → istənilən sorğu401
executive_viewer → fərdi fişinq nəticəsi403

21.2.2 Fişinq təhlükəsizlik testləri — BLOKLAYICI (CI)

# Test Gözlənilən
PS-1Landing formuna unikal test sətri göndər → DB-də axtar0 nəticə
PS-2Eyni sətri bütün log fayllarında axtar0 nəticə
PS-3Eyni sətri RabbitMQ mesajlarında axtar0 nəticə
PS-4Eyni sətri MinIO obyektlərində axtar0 nəticə
PS-5Landing servisinin DB istifadəçisinin yazma icazəsiYalnız MQ, DB yazma yox
PS-6form-urlencoded body ilə POSTBody parse edilmir, 400
PS-7Təsdiqsiz kampaniya başlatma cəhdi (API)409
PS-8Yaradan tərəfindən təsdiq cəhdi403 + SoD audit
PS-9Xidməti hesabın hədəf siyahısına düşməsiSiyahıda yoxdur
PS-10Fövqəladə dayandırma → gözləyən emaillər≤ 30 s ərzində ləğv
PS-11Tracking domeni = əsas domenTəsdiqə göndərilə bilmir
PS-12Real emaildən şablon → skript/link/qoşmaHamısı təmizlənib
PS-13Kod bazasında "repeat offender" axtarışı0 nəticə (lint)
PS-14Simulyasiya emailində X-ETIMAD-SimulationMövcud

21.2.3 DLP təhlükəsizlik testləri

# Test Gözlənilən
DS-1API cavablarında tam FİN/kart regex axtarışı (L1 endpoint)0 nəticə
DS-2L2 giriş təsdiqsiz403
DS-3L2 token 30 dəqiqədən sonra401
DS-4Konnektor mTLS-siz hadisə göndərir401
DS-5Eyni externalId ilə təkrar hadisəDublikat, yeni qeyd yox
DS-6Qayda paketi imzasızAgent qəbul etmir
DS-7Yeni siyasət birbaşa enforce400
DS-8Fövqəladə söndürmə tək təsdiqlə403
DS-9EDM mənbə faylı indeksləmədən sonraFayl yoxdur
DS-10EDM indeksində açıq dəyər axtarışı0 nəticə (yalnız hash)
DS-11Məzmun nümunəsi 90 gündən sonraNULL
DS-12contentSample log-da[REDACTED]

21.2.4 Audit log bütövlük testləri

# Test Gözlənilən
AL-1Tətbiq vasitəsilə UPDATE cəhdiMetod yoxdur (kompilyasiya)
AL-2Birbaşa SQL UPDATEException (trigger)
AL-3Birbaşa SQL DELETEException
AL-4Sətir dəyişdir → bütövlük yoxlamasıUğursuz + alarm
AL-5Sətir sil → sequence boşluğuAşkarlanır + alarm
AL-6Parol/token/FİN patternləri log-da0 nəticə
AL-7Kritik əməliyyat + audit yazma xətasıƏməliyyat da uğursuz
AL-8Möhür imzası yoxlamasıDüzgün
AL-9Audit 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
HRSHər hadisə tipi, zaman sönməsi (6 ay yarı ömür), band sərhədləri
Confidence scoringHə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əqP95 hədəflərə uyğun
Pik (kampaniya başlanğıcı)800 eyni anda, 15 dəqP95 < 2× hədəf
Toplu təyinat10 000 istifadəçi≤ 5 dəq
Hesabat generasiyası10 paralel böyük hesabatSistem cavab verir
DLP hadisə seli100 hadisə/saniyə, 10 dəqİtki yoxdur, növbə boşalır
Audit log yazma2 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ükGraceful degradation, çökmə yox
Dözümlülük (soak)8 saat normal yükYaddaş 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?
SASTSonarQube + Semgrep (təhlükəsizlik qaydaları)Hər commit✅ (kritik)
SCATrivy / OWASP Dependency-CheckHər build✅ (kritik CVE)
Secret scanninggitleaks + CI history scanHər commit
Konteyner skanıTrivyHər image build✅ (kritik)
IaC skanıCheckov / tfsecHər dəyişiklik
SBOMSyft → SPDX/CycloneDXHər relizArtefakt
Image imzalamaCosignHər reliz
DASTOWASP ZAP (autentifikasiyalı skan)Gecə (nightly)⚠️ xəbərdarlıq
API fuzzingSchemathesis (OpenAPI əsaslı)Həftəlik⚠️
Penetrasiya testiXarici komandaRelizdə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ırNormativ
Sintetik məlumat generatoruRealistik AZ adları, şöbələr, risklər, sənədlər
Həssas tiplər üçün test dəyərləriRə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 ADAyrı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 → prod

21.5 UAT (İstifadəçi qəbul testi)

Aspekt Detal
İştirakçılarHər personadan 3–5 nəfər (əməkdaş, müdir, GRC, auditor, DLP analitiki, rəhbərlik)
MüddətHər faza sonunda 2 həftə
SsenarilərReal iş axınları, əvvəlcədən yazılmış (hər modul üçün 5–10)
MeyarKritik 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)

  1. CI-də bloklayıcı təhlükəsizlik testləri (§21.2.2, §21.2.3, §21.2.4) mövcuddur və keçir.
  2. Hər yeni endpoint üçün ən azı 3 neqativ avtorizasiya testi tələb olunur (kod review checklist).
  3. Domen hesablamalarının test əhatəsi ≥ 90%.
  4. Prod məlumatı heç bir test mühitində yoxdur (yoxlanılır).
  5. Backup bərpa testi rüblük aparılır və sənədləşdirilir.
  6. 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
1AD/LDAP sinxronizasiyası (oxuma) + SSO (OIDC) + MFA (TOTP)M14Onsuz heç nə işləmir
2Təşkilati struktur, istifadəçi, şöbə, rəhbər münasibətiM14Skoup üçün bünövrə
3RBAC (7 səviyyə) + SoD qaydalarıM14/M15Təhlükəsizliyin bünövrəsi
4Dəyişməz audit izi (hash zənciri + SIEM göndərmə)M18Auditlənə bilənlik tələbi
5İş axını mühərriki + tapşırıq + bildiriş (platforma + email)M17Bütün modullar istifadə edir
6Dizayn sistemi + AZ/EN/RU lokalizasiya karkasıSonrakı bütün UI
7Maariflə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ı, sertifikatM01Sübut
9Fişinq: şablon, landing, göndərən profili, hədəfləmə, təsdiq, göndərmə, izləmə, fövqəladə dayandırmaM02Əsas dəyər + differensiator
10İnsan Riski Profili (əsas formula + izah)M02Ölçmə
11Siyasət idarəetməsi: redaktor, versiya, təsdiq iş axını, nəşr, tanışlıq, PDF ixracM03Əsas dəyər
12Siyasət istisnalarıM03ISO tələbi
13ISO 27001:2022 framework import + 93 nəzarət tədbiri + bənd 4–10M04Əsas məqsəd
14Nəzarət tədbirlərinin idarəsi + mapping + status + sahiblikM04Əsas məqsəd
15Statement of Applicability + baseline + PDF/XLSXM04Sertifikasiya üçün məcburi
16Uyğunluq balı + boşluq analizi (şəffaf hesablama)M04Ölçmə
17Risk reyestri: konfiqurasiya edilə bilən matris, ilkin/qalıq, emal, qəbul, istilik xəritəsiM05Əsas məqsəd
18Risk siqnalları (fişinq → risk, əl ilə təsdiqlə)M05Modullararası dəyər
19Sübut: yükləmə, virus skanı, hash, versiya, bitmə tarixi, sorğu, nəzarətə bağlamaM07ISO tələbi
20Təsnifat taksonomiyası (əsas) + obyektlərə tətbiq + etiketM10 (qismən)Sübut/sənəd üçün lazımdır
21Təhlükəsizlik hadisələrinin bildirilməsi (sadə forma + anonim)M15Aşağı xərc, yüksək dəyər
22Employee + Security dashboard-larıM16Görünürlük
2312 hesabat (RPT-01…RPT-12, RPT-15)M16Sübut və idarəetmə
24Platforma administrasiyası + konfiqurasiya + sağlamlıqM18Əməliyyat
25SIEM inteqrasiyası (CEF çıxış)I7Təhlükəsizlik tələbi
26Backup/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 reyestri2Risk qiymətləndirmə mətn sahəsi ilə də başlaya bilər; struktur reyestr sonra
Təchizatçı riski2Ayrıca prosesdir, gecikdirmə biznes dəyərini azaltmır
Executive dashboard2Əvvəl məlumat toplanmalıdır (trend üçün ≥ 3 ay)
Məlumat inventarı və axın xəritəsi3DLP-nin ön şərtidir, MVP-də DLP yoxdur
Həssas məlumat aşkarlanması3
DLP siyasətləri və hadisələri3A7 fərziyyəsi: endpoint agent ayrıca layihədir
Kerberos SSO, FIDO22TOTP MFA kifayətdir
Outlook add-in2Poçt qutusu ilə fallback var
SCORM/xAPI2Native dərs formatı kifayətdir
Ticketing inteqrasiyası2Daxili 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ər2+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ə
1100% işçi SSO ilə daxil olur, rolları avtomatikAD sinxronizasiya hesabatı
2≥ 3 məcburi siyasət nəşr olunub, ≥ 90% tanışlıqRPT-05
3ISO 27001 Annex A 93 nəzarət tədbiri sistemdə, SoA generasiya olunurRPT-07
4≥ 1 fişinq kampaniyası təhlükəsiz keçirilibKampaniya hesabatı + təhlükəsizlik testi PASS
5≥ 30 risk, hər birinin sahibi və qalıq riski varRPT-10
6≥ 50 sübut yüklənib və nəzarət tədbirlərinə bağlanıbRPT-15
7≥ 95% işçi ən azı 1 təlimi tamamlayıbRPT-01
8Bütün kritik əməliyyatlar audit logunda, bütövlük yoxlaması keçirBütövlük hesabatı
9Negative authorization testlərinin 100%-i keçirCI nəticəsi
10Penetrasiya testində kritik tapıntı yoxdurPentest hesabatı
11UAT-da kritik ssenarilərin 100%-i uğurluUAT hesabatı
12Backup 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ə
0Discovery və Foundation1–85Arxitektura, RBAC, audit log, iş axını, dizayn sistemi
1MVP9–288–9İstismara verilə bilən platforma (§22)
2GRC genişlənməsi29–448Audit, aktiv, təchizatçı, executive
3Təsnifat və DLP45–629Tam məlumat qorunması qatı
4Avtomatlaşdırma və analitika63–767Avtomatik 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.1Detallı tələblərin toplanması (workshop ×6)Tələblər sənədi, terminologiya lüğəti təsdiqi
0.2Təşkilati strukturun modelləşdirilməsiOU/şöbə xəritəsi, skoup qaydaları
0.3AD discovery (atributlar, qruplar, OU-lar, servis hesabı)AD inteqrasiya spesifikasiyası
0.4Risk metodologiyasının təsdiqi (matris, şkalalar, iştaha)Metodologiya sənədi (rəhbərlik təsdiqi)
0.5Təsnifat taksonomiyasının ilkin layihəsiSəviyyələr + qaydalar (təsdiqə)
0.6Təhlükəsizlik arxitekturası + threat model§10, §20 təsdiqi
0.7Repo, CI/CD, mühitlər (dev/test/staging), registry, Vaultİşləyən pipeline
0.8Modul karkası + arxitektura testləriBoş modullar + sərhəd yoxlaması
0.9RBAC nüvəsi (7 səviyyə, skoup, SoD)İşləyən avtorizasiya + testlər
0.10Audit 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.12Bildiriş servisi (şablon, çoxdilli, email)İşləyən
0.13Dizayn sistemi (40 komponent, Storybook, AZ font/tipoqrafiya)@etimad/ui paketi
0.14Lokalizasiya karkası (AZ/EN/RU)i18n işləyir
0.15Auth (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)

Risklər

Risk Mitigasiya
AD-yə test girişi gecikirSamba DC ilə paralel işləmək, sonra real AD-yə keçid
Risk metodologiyası razılaşdırıla bilmirDefault 5×5 ilə başlamaq, sonra konfiqurasiya ilə dəyişmək
Terminologiya razılaşdırılmırLüğə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)

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)

Risklər

Risk Ehtimal Təsir Mitigasiya
Fişinq təhlükəsizlik dizaynı gec anlaşılırOrtaKritikS9-dan əvvəl ayrıca təhlükəsizlik review; prototip S5-də
ISO məzmununun daxil edilməsi gecikirYüksəkYüksəkGRC mütəxəssisi S6-dan əvvəl məzmunu hazırlasın (paralel iş)
AD real mühitdə fərqli davranırOrtaYüksəkS1-də real AD-yə erkən qoşulma
SMTP/gateway konfiqurasiyası gecikirOrtaOrtaS7-dən infrastruktur komandası ilə paralel iş
UAT-da böyük UX dəyişikliyi tələbiOrtaOrtaS5 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.1Audit planı, audit, checklist (nəzarətlərdən avtomatik generasiya)S11–S12
2.2Müsahibə, seçmə, iş kağızları, sübut sorğusuS12
2.3Tapıntı, RCA, düzəldici tədbir, yoxlama, bağlanmaS13
2.4Audit hesabatı (PDF/DOCX), audit hazırlığı balıS13–S14
2.5Aktiv reyestri + import + sahiblik attestasiyasıS14
2.6Təchizatçı: profil, sorğu vərəqəsi, qiymətləndirmə, risk balı, offboardingS15–S16
2.7Executive dashboard + RPT-13, 14, 16, 17, 21S17
2.8Əlavə framework-lər (NIST CSF 2.0, CIS Controls) + cross-mappingS17
2.9Kerberos SSO, FIDO2, Outlook add-inS18
2.10Ticketing inteqrasiyası, SCORM/xAPIS18

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

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.1Təsnifat taksonomiyası tam (səviyyə siyasətləri, endirmə iş axını)S19
3.2Fayl etiketləmə (Office metadata + vizual + HMAC)S20
3.3Məlumat inventarı + axın xəritəsi + vizualizasiyaS20–S21
3.4Həssas məlumat tipləri kitabxanası (AZ kontekstində)S21
3.5Detection engine (regex, keyword, dictionary, checksum, context, proximity)S22
3.6EDM, fingerprinting, OCR, arxiv inspeksiyasıS23
3.7Qayda test mühərriki (sandbox, backtest, regression)S23
3.8DLP siyasət qurucusu + rejimlər + versiyalaşdırma + münaqişə detektoruS24
3.9DLP istisnaları + təsdiq iş axınıS24
3.10DLP Integration Gateway (qayda paketi, imza, hadisə qəbulu, normalizasiya)S25
3.11DLP hadisə idarəetməsi (L0/L1/L2, triage, istifadəçi/müdir cavabı)S26
3.12DLP dashboard + RPT-18, 19, 20S27
3.13ETİMAD daxili DLP icrası (ixrac nəzarəti, etiket, su nişanı)S27

Kritik ön şərtlər

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

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.1Avtomatik sübut toplanması (AD parol siyasəti, backup statusu, antivirus, patch, log konfiqurasiyası)Sübut əməyinin 40% azalması
4.2Təkmil HRS (davranış modeli, kontekst, peer qrup normallaşdırması)Dəqiqlik
4.3Nəzarət effektivliyi analitikası (test nəticələrindən trend)Obyektivlik
4.4Risk korrelyasiyası (əlaqəli risklərin aşkarlanması, kaskad təsir)Keyfiyyət
4.5Ağıllı təlim təyinatı (zəiflik profilinə görə şəxsi tövsiyələr)Effektivlik
4.6Anomaliya aşkarlanması (qeyri-adi giriş/ixrac/baxış davranışı)Daxili təhdid
4.7AI köməkçi: siyasət layihəsinin hazırlanmasıSürət
4.8AI köməkçi: audit hazırlığı (boşluq izahı, sübut təklifi)Sürət
4.9Mapping təklifi (framework cross-mapping avtomatik təklif)Sürət
4.10Proqnozlaşdırma (risk trendi, uyğunluq proqnozu)Planlaşdırma

⚠️ AI istifadəsi üçün normativ qaydalar

# Qayda
AI-1On-premise model məcburidir — heç bir məlumat qurumdan kənara çıxmır (lokal LLM: Llama/Qwen sinifli model, öz GPU serverində)
AI-2AI heç vaxt avtonom qərar vermir — yalnız təklif; insan təsdiqi məcburi
AI-3Məxfi və xüsusi əhəmiyyətli məlumat AI-yə verilmir (təsnifat filtri)
AI-4Hər AI təklifi source: ai_suggestion ilə işarələnir və audit olunur
AI-5AI-nin istifadə etdiyi kontekst loglanır (izah edilə bilənlik)
AI-6AI funksiyaları feature flag ilə tam söndürülə bilər
AI-7Model və versiyası qeyd olunur (təkrar istehsal oluna bilənlik)

Definition of Done

Mürəkkəblik: Yüksək. Effort: 450 adam-gün.


23.7 Buraxılış strategiyası

Aspekt Yanaşma
Mühitlərdev → test → staging (prod kopyası, anonimləşdirilmiş) → prod
Buraxılış tezliyiFaza daxilində 2 həftədə bir (test mühitinə), fazada bir dəfə prod
MiqrasiyaForward-only, geri uyğun (expand-contract pattern); hər miqrasiya rollback skripti ilə
Feature flagYeni modullar bağlı vəziyyətdə deploy olunur, sonra aktivləşdirilir
PilotHər faza: 1 şöbə (50–100 nəfər), 2 həftə, sonra tam yayım
RollbackKonteyner 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əkFaza 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-01Platforma bünövrəsi (repo, CI/CD, mühitlər)055P0
E-02Kimlik və giriş (AD, SSO, MFA)0–189P0
E-03RBAC və SoD089P0
E-04Audit izi055P0
E-05İş axını, tapşırıq və bildiriş mühərriki089P0
E-06Dizayn sistemi və lokalizasiya055P0
E-07Təşkilati struktur və istifadəçi idarəetməsi134P1
E-08Təlim məzmunu və kataloq155P1
E-09Təlim kampaniyası və təyinat155P1
E-10İmtahan və sertifikat155P1
E-11Siyasət redaktoru və versiyalaşdırma155P1
E-12Siyasət təsdiqi və nəşri134P1
E-13Siyasətlə tanışlıq134P1
E-14Siyasət istisnaları121P2
E-15Framework və nəzarət tədbirləri189P1
E-16Control mapping və SoA155P1
E-17Uyğunluq balı və boşluq analizi134P1
E-18Risk reyestri və qiymətləndirmə189P1
E-19Risk emalı və qəbulu134P1
E-20Risk siqnalları (modullararası)134P2
E-21Fişinq şablon və landing155P1
E-22Fişinq kampaniya və göndərmə189P1
E-23Fişinq izləmə və hadisələr134P1
E-24İnsan Riski Profili134P2
E-25Sübut idarəetməsi155P1
E-26Təsnifat (əsas)134P2
E-27Təhlükəsizlik hadisələrinin bildirilməsi134P2
E-28Dashboard (employee + security)155P1
E-29Hesabat mühərriki və 13 hesabat155P1
E-30Platforma administrasiyası134P1
E-31SIEM inteqrasiyası121P2
E-32Audit planlaması və icrası289P3
E-33Tapıntı və düzəldici tədbir255P3
E-34Audit hazırlığı balı221P3
E-35Aktiv reyestri255P3
E-36Təchizatçı riski289P3
E-37Executive dashboard234P3
E-38Əlavə framework-lər və cross-mapping234P3
E-39Genişlənmiş autentifikasiya (Kerberos, FIDO2)234P3
E-40Outlook add-in və ticketing234P3
E-41Təsnifat (tam) və fayl etiketləmə389P4
E-42Məlumat inventarı və axın xəritəsi355P4
E-43Həssas məlumat tipləri və detection engine3144P4
E-44DLP siyasət qurucusu389P4
E-45DLP Integration Gateway389P4
E-46DLP hadisə idarəetməsi389P4
E-47DLP analitikası334P4
E-48Avtomatik sübut toplanması489P5
E-49Təkmil analitika və anomaliya489P5
E-50AI köməkçilər489P5

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
S1US-001AD-dən istifadəçilərin sinxronizasiyası8P0
S1US-002AD qrup və OU sinxronizasiyası5P0
S1US-003AD → rol mapping konfiqurasiyası5P0
S1US-004Sinxronizasiya hesabatı və xəta idarəetməsi3P1
S1US-005SSO ilə giriş (OIDC)8P0
S1US-006MFA (TOTP) qeydiyyatı və doğrulaması5P0
S1US-007İstifadəçi profili və dil seçimi3P1
S1US-008Admin: istifadəçi siyahısı, rol təyinatı, SoD yoxlaması8P0
S2US-009Dərs yaratma (mətn/şəkil)8P1
S2US-010Video dərs + altyazı tələbi5P1
S2US-011Dərs kateqoriyaları və versiyalaşdırma5P1
S2US-012Dərs tərcümələri (AZ/EN/RU)5P1
S2US-013Təlim proqramı yaratma5P1
S2US-014Dərs pleyeri + irəliləyişin saxlanması8P1
S3US-015Təlim kampaniyası sihirbazı8P1
S3US-016Qayda əsaslı avtomatik təyinat + simulyasiya13P1
S3US-017Sual bankı və idxal5P1
S3US-018İmtahan konfiqurasiyası (təsadüfi seçim, taymer, keçid balı)8P1
S3US-019İmtahan keçirilməsi (server taymeri, cavabların saxlanması)8P1
S3US-020Sertifikat generasiyası və doğrulanması5P1
S3US-021Deadline, xatırlatma, eskalasiya5P1
S4US-022Siyasət yaratma və rich-text redaktor13P1
S4US-023Avtosave və qeyd olunmamış dəyişiklik xəbərdarlığı3P1
S4US-024Versiyalaşdırma və dəyişiklik tarixçəsi5P1
S4US-025Sənəd müqayisəsi (diff)8P2
S4US-026Şərhlər və rəy sorğusu5P1
S4US-027Təsdiq iş axını (SoD-1 ilə)8P1
S5US-028Nəşr və effektiv tarix5P1
S5US-029Tətbiq dairəsi (şöbə/AD qrupu/rol)5P1
S5US-030Tanışlıq təsdiqi + qısa test8P1
S5US-031Tanışlıq hesabatı və xatırlatma5P1
S5US-032PDF/DOCX ixrac (su nişanı, təsnifat etiketi)8P1
S5US-033Siyasət istisnaları (sorğu → təsdiq → avtomatik bitmə)8P2
S6US-034Framework import (YAML/JSON)8P1
S6US-035ISO 27001:2022 məzmununun yüklənməsi5P1
S6US-036Nəzarət tədbiri CRUD + sahiblik8P1
S6US-037Control mapping (N:M, versiyalanmış)8P1
S6US-038Nəzarət tədbirinin statusu və effektivliyi5P1
S6US-039Əlaqəli obyektlər paneli (universal)5P1
S7US-040SoA generasiyası8P1
S7US-041SoA baseline (dondurma + hash)5P1
S7US-042SoA ixracı (PDF/XLSX)5P1
S7US-043Uyğunluq balı + izah8P1
S7US-044Boşluq analizi + tapşırıq yaratma5P1
S7US-045Təsnifat səviyyələri və obyektlərə tətbiq8P2
S8US-046Risk matrisi konfiqurasiyası8P1
S8US-047Risk yaratma sihirbazı13P1
S8US-048Qalıq riskin nəzarət effektivliyindən hesablanması8P1
S8US-049Risk istilik xəritəsi (accessible)5P1
S8US-050Risk emalı planı və tapşırıqlar5P1
S8US-051Risk qəbulu (SoD-2, müddətli)5P1
S9US-052Fişinq şablon redaktoru (vizual + HTML)13P1
S9US-053Landing page qurucusu (kredensial təhlükəsizliyi)13P0
S9US-054Göndərən profili və tracking domeni5P1
S9US-055Hədəfləmə və istisna siyahıları8P1
S9US-056Kampaniya təsdiq iş axını (yoxlama siyahısı)8P1
S9US-057Göndərmə (paylanmış, sürət limitli)8P1
S9US-058Hadisə izləmə (open/click/submit/report)8P1
S9US-059Fövqəladə dayandırma5P0
S10US-060Sübut yükləmə (virus skanı, hash, tip yoxlaması)13P1
S10US-061Sübut bitmə tarixi və xəbərdarlıqlar5P1
S10US-062Sübut sorğusu5P1
S10US-063İnsan Riski Profili + izah8P2
S10US-064Risk siqnalı (fişinq → risk təklifi)8P2
S10US-065Employee dashboard8P1
S10US-066Security dashboard13P1
S10US-067Hesabat mühərriki + 13 hesabat13P1
S10US-068Təhlükəsizlik hadisəsinin bildirilməsi (anonim daxil)8P2
S10US-069SIEM CEF çıxışı5P2
S10US-070Stabilləşdirmə, performans, accessibility düzəlişləri13P1

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 log

25.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ı:

Təhlükəsizlik meyarları:


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.


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.


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.


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.


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.

Təhlükəsizlik meyarları (BLOKLAYICI):


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.


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.


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.


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.


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.


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.


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.

Təhlükəsizlik meyarları:


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.

Təhlükəsizlik meyarları:


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.


25.8 Story yazma qaydaları (komanda üçün)

# Qayda
1Hər story-nin ən azı 1 təhlükəsizlik meyarı (SC) olmalıdır; olmaması review-da rədd səbəbidir
2Hər story-nin ən azı 1 audit log meyarı olmalıdır (dəyişdirici əməliyyatlarda)
3Hər siyahı/detal story-si üçün ən azı 1 neqativ avtorizasiya AC-si
4AC-lər Given/When/Then formatında və ölçülə bilən olmalıdır ("yaxşı işləsin" qəbul edilmir)
5Performans tələbi olan yerdə rəqəm göstərilməlidir
6Hər UI story-si üçün accessibility meyarı
7Hər mətn göstərən story üçün lokalizasiya meyarı (AZ/EN/RU)
8Toplu əməliyyat story-lərində dryRun dəstəyi məcburidir
9Story 13 SP-dən böyükdürsə bölünməlidir
10Definition 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-01DLP endpoint agent-i ayrıca layihədir və gecikir → Faza 3-ün dəyəri realizasiya olunmurYüksəkKritik20A7 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ırLayihə rəhbəri
PR-02ISO 27001 məzmununun (93 nəzarət, daxili təsvirlər) hazırlanması gecikirYüksəkYüksək16GRC mütəxəssisi Faza 0-dan paralel işləyir; şablon məzmun hazırlanır; import faylı formatı erkən təsdiqlənirGRC
PR-03AD strukturunun real vəziyyəti gözləniləndən qarışıqdır (OU, qruplar, atributlar natamam)YüksəkYüksək16Faza 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-04Terminologiya və taksonomiya razılaşdırıla bilmir (dövlət qurumunun rəsmi dili)OrtaYüksək12§0.3 lüğəti erkən təsdiqə verilir; konfiqurasiya edilə bilən terminlər; hüquq şöbəsi cəlb olunurPO
PR-05Komanda kadr dəyişikliyi (açar mütəxəssisin itirilməsi)OrtaYüksək12Cüt işləmə (pairing), ADR sənədləşdirilməsi, bilik paylaşımı sessiyaları, bus factor ≥ 2 hər modul üçünTech Lead
PR-06Skoup sürüşməsi (hər workshop-da yeni tələb)YüksəkOrta12Faza sərhədləri müqavilədə; dəyişiklik idarəetməsi prosesi; backlog şəffafPO
PR-07İstifadəçi qəbulu zəif (işçilər platformadan istifadə etmir)OrtaYüksək12UX araşdırması Faza 0-da; "60 saniyə testi"; şöbə çempionları; video təlimatlar; rəhbərlik dəstəyiPO/UX
PR-08İnfrastruktur hazır deyil (serverlər, şəbəkə, sertifikat)OrtaYüksək12Faza 0-da infrastruktur tələbləri sənədi; paralel hazırlıq; Docker Compose ilə erkən başlanğıcDevSecOps
PR-09Penetrasiya testində kritik tapıntı → reliz gecikməsiOrtaYüksək12Təhlükəsizlik dizaynı erkən review; SAST/DAST davamlı; pentest relizdən 3 həftə əvvəl (buffer)Security
PR-10Performans hədəflərinə çatılmır (böyük siyahılar, hesabatlar)OrtaOrta9Performans testləri S5-dən; indeks strategiyası erkən; read replicaBackend
PR-11Çoxdilli məzmunun tərcüməsi gecikirYüksəkAşağı8AZ birinci; EN/RU fallback mexanizmi; tərcümə prosesi ayrıca planlanırPO
PR-12Hüquqi problem: ISO mətninin istifadəsiAşağıYüksək8§4.3.7 dizaynı; hüquq şöbəsinin təsdiqi Faza 0-daHüquq
PR-13Backup/DR infrastrukturu yoxdurOrtaKritik15Faza 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-14Air-gapped mühitdə asılılıqların idarə edilməsi çətinləşirOrtaOrta9Faza 0-da daxili registry (Harbor, Nexus) qurulur; offline yeniləmə proseduru sənədləşdirilirDevSecOps

26.2 Məhsul/istifadə riskləri

# Risk Mitigasiya
UR-01Fişinq nəticələrinin intizam tədbiri üçün istifadəsi → bildirmə mədəniyyətinin ölməsiE1–E10 etik qaydaları normativdir; hesabatlarda qeyd; HR ixracı ayrıca icazə + audit; rəhbərliklə açıq razılaşma (yazılı)
UR-02DLP-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-03Yanlış 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-04Bildiriş 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-05Uyğ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-06Platformanı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-07Mə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-08Rol 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-01Real parolun fişinq simulyasiyasında saxlanması8 qatlı dizayn + CI bloklayıcı test§4.2.5, US-053
TR-02Obyekt səviyyəsində avtorizasiya boşluğu (IDOR/BOLA)Məcburi resource authorization + arxitektura testi + neqativ testlər§14.7, §21.2.1
TR-03Audit izinin pozulması7 qatlı müdafiə§4.18.3
TR-04Mə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-05AD servis hesabının kompromisiVault + minimum icazə + LDAPS + rotasiya + monitorinq§11.3
TR-06Platformadan real fişinq göndərilməsiTəsdiq + SoD-10 + SOC bildirişi + sürət limiti§4.2.6
TR-07Zərərli fayl yüklənməsiMagic bytes + allowlist + ClamAV + sandbox + CSP§4.7.5
TR-08RansomwareImmutable backup (WORM) + seqmentasiya + bərpa testi§19.3
TR-09Modul sərhədlərinin pozulması → monolitin "böyük palçıq topuna" çevrilməsiArxitektura testləri CI-də bloklayıcı; kod review§9.3
TR-10Verilənlər bazasının böyüməsi (audit log)Partisiyalaşdırma + arxivləşdirmə + tutum planlaması§13.9
TR-11Açıq mənbə komponentində kritik CVESCA CI-də bloklayıcı + SBOM + yeniləmə prosesi + offline DB§21.2.13
TR-12Vault açarlarının itirilməsiShamir 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


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
S1DLP-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ırA7: agent üçüncü tərəf məhsuludur və Faza 3-ə qədər seçilib quraşdırılırKritik — Faza 3 skoupu
S2Mə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ənYüksək — M10, M12, M03
S3ISO 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ırSertifikasiya 18–24 ay ərzində planlaşdırılır; platforma hazırlığı təmin edirYü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 instansiyadaYüksək — arxitektura, infrastruktur
S5AD 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+OIDCKritik — M14
S6Fiş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 edirRazılıq Faza 1-in sonuna qədər alınır; etik qaydalar qəbul edilirKritik — M02
S7Mö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
S8Deployment modeli: Docker Compose (sadə) yoxsa Kubernetes (HA)? Mövcud K8s klasteri varmı? DR saytı varmı?İnfrastruktur dizaynı, əməliyyat mürəkkəbliyi, xərcA3: VMware/Proxmox üzərində; ölçüyə görə Variant A və ya BYü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
S10Mə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 ilYü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-01Backend platforması: .NET yoxsa Java?.NET 9 (§9.4); komandanın təcrübəsi həlledicidirFaza 0, həftə 1
D-02Elektron imza (ASAN İmza və ya daxili PKI) tələb olunurmu?MVP-də yoxdur; Faza 2-də əlavə edilə bilərFaza 1 sonu
D-03HR sistemindən inteqrasiya lazımdırmı (AD kifayət etmirsə)?AD kifayətdir; HR Faza 2-də opsionalFaza 1
D-04Təchizatçı portalı internetə açılacaqmı?Xeyr — XLSX ilə offline dövriyyə (təhlükəsiz default)Faza 2
D-05Mövcud CMDB varmı və inteqrasiya lazımdırmı?Yoxdur; əl ilə/CSV importFaza 2
D-06SCORM məzmunu satın alınacaqmı?Xeyr — daxili məzmun; SCORM Faza 2-də dəstəkFaza 1
D-07Dark mode tələb olunurmu?Opsional, Faza 2Faza 1
D-08Mobil native tətbiq lazımdırmı?Xeyr — responsive webFaza 2
D-09Risk matrisi: 5×5 yoxsa 3×3?5×5 default, konfiqurasiya edilə bilənFaza 0
D-10Uyğ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ərFaza 1
D-11HRS 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ənFaza 1
D-12AI funksiyaları üçün on-prem GPU serveri ayrılacaqmı?Faza 4 qərarı; ayrılmazsa AI modulları söndürülürFaza 3 sonu
D-13Xarici auditor girişi tələb olunurmu?Bəli, müddətli və məhdud (Faza 2)Faza 2
D-14Log/audit arxivi üçün WORM saxlama mövcuddurmu?Yoxdursa: imzalanmış arxiv + ayrıca sistemFaza 0
D-15Lisenziya 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
1Bu sənədin rəhbərlik və İT təhlükəsizliyi tərəfindən rəyi və təsdiqiSifarişçi1 həftə
2§27.1-dəki 10 suala cavabların alınması (workshop)PO + Sifarişçi2 həftə
3Komandanın formalaşdırılması və rollarLayihə rəhbəri2 həftə
4İnfrastruktur tələbləri sənədi və resursların ayrılmasıDevSecOps + İT2 həftə
5AD discovery workshop-u və test mühitinə girişArxitekt + İT2 həftə
6Risk metodologiyası və təsnifat taksonomiyasının təsdiqiGRC + rəhbərlik3 həftə
7Fişinq etik qaydalarının HR/hüquq ilə razılaşdırılmasıPO + HR + Hüquq3 həftə
8Faza 0-ın başlanmasıKomanda4-cü həftə

Əlavə A — Sənədin baxış qaydası

Bölmə Baxış tezliyi Məsul
§1–§3 (məqsəd, rollar)İllikPO
§4 (modullar)Hər faza sonuPO + Tech Lead
§9–§14 (arxitektura, DB, API)Hər major relizArxitekt
§10, §20 (təhlükəsizlik, threat model)Hər major reliz + illikSecurity Architect
§15, §16 (RBAC, audit)Hər faza sonuSecurity + GRC
§19 (NFR)Hər faza sonuTech Lead
§21 (test)Hər faza sonuQA Lead
§23–§25 (roadmap, backlog)Hər sprintPO
§26, §27 (risklər, qərarlar)Həftəlik/aylıqLayihə rəhbəri

Əlavə B — Qısaltmalar

Qısaltma Açılışı
ADActive Directory
ADRArchitecture Decision Record
ASVSApplication Security Verification Standard
BECBusiness Email Compromise
BOLABroken Object Level Authorization
CAPCorrective Action Plan
CEFCommon Event Format
CIAConfidentiality, Integrity, Availability
CMDBConfiguration Management Database
DEK/KEKData/Key Encryption Key
DLPData Loss Prevention
DPAData Processing Agreement
EDMExact Data Match
FPFalse Positive
GRCGovernance, Risk and Compliance
HRSHuman Risk Score
IdPIdentity Provider
LRSLearning Record Store
MFAMulti-Factor Authentication
MTTR/MTTTMean Time To Resolve / Triage
NCNonconformity
OIDCOpenID Connect
RCARoot Cause Analysis
RPO/RTORecovery Point/Time Objective
SBOMSoftware Bill of Materials
SoAStatement of Applicability
SoDSegregation of Duties
SSOSingle Sign-On
WORMWrite 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