Current section
Files
Jump to
Current section
Files
lib/cmdb-profiles/erpuno/l3_erp.ex
defmodule CA.L3.ERP do
@moduledoc """
ERP/1 Security Profile (CMDB Configuration Base)
Цей модуль слугує базою даних конфігурацій (CMDB) для контрольних елементів
безпеки (NIST / КСЗІ), прошитою безпосередньо в коді. При зміні параметрів
чи значень за замовчуванням компілятор Erlang/Elixir перекомпілює цей модуль,
забезпечуючи строгий версійний контроль (Infrastructure-as-Code) політик безпеки.
Він містить не тільки технічні параметри, але й детальні текстові описи реалізації
для генерації цільових профілів та завдань безпеки (ST).
"""
def org_name, do: "ДП \"УСС\""
def system_desc, do: "Телекомунікаційна система ERP/1"
def system_name, do: "Повний набір сервісів"
@doc """
Повертає повний перелік активних контрольних елементів, їхніх підконтрольних
елементів (subcontrols), параметрів конфігурації та текстових обґрунтувань.
"""
def controls do
[
%{
id: "AC",
name: "УПРАВЛІННЯ ДОСТУПОМ (AC)",
text:
"Сімейство AC визначає механізми управління доступом до системи. Бібліотека `erpuno/abac` разом із підсистемою управління сесіями реалізує надійний контроль доступу на основі атрибутів (ABAC), гарантуючи принцип найменших привілеїв.",
subcontrols: [
%{
id: "AC-2",
name: "Управління обліковими записами",
text:
"Система забезпечує створення, активацію, зміну та видалення облікових записів відповідно до політик організації. Права доступу жорстко прив'язані до ідентифікатора працівника (`subject_employee`) або ролі.",
parameters: [%{default: true, name: :account_management, type: :boolean}]
},
%{
id: "AC-3",
name: "Примусове застосування доступу (Access Enforcement)",
text:
"Усі запити до ресурсів системи примусово проходять через Policy Decision Point (PDP) модуля `abac`. Прямий доступ до даних в обхід механізмів авторизації заборонено архітектурно.",
parameters: [%{default: true, name: :access_enforcement, type: :boolean}]
},
%{
id: "AC-6",
name: "Принцип найменших привілеїв (Least Privilege)",
text:
"Профілі безпеки і ролі конфігуруються таким чином, що користувачам надаються лише ті привілеї, які необхідні для виконання їхніх посадових обов'язків. Механізм дозволів `abac` працює за принципом 'Default-Deny'.",
parameters: [%{default: true, name: :least_privilege, type: :boolean}]
},
%{
id: "AC-11",
name: "Блокування сеансу",
text:
"Сеанс користувача автоматично блокується системою (`synrc/n2o` session expiry) після визначеного періоду бездіяльності, вимагаючи повторної автентифікації.",
parameters: [%{default: 900, name: :session_lock_timeout, type: :integer}]
},
%{
id: "AC-12",
name: "Завершення сеансу",
text:
"Користувач може ініціювати завершення сеансу (logout). Крім того, система примусово завершує сеанси при досягненні максимального часу життя токена або зміни контексту безпеки.",
parameters: [%{default: true, name: :session_termination, type: :boolean}]
},
%{
id: "AC-14",
name: "Дозволені дії без ідентифікації чи автентифікації",
text:
"Система явно визначає перелік відкритих сторінок та API-ендпойнтів (наприклад, портал входу або публічний довідник), доступних без автентифікації. Будь-які інші дії суворо заборонені.",
parameters: [
%{default: true, name: :permitted_unauthenticated_actions, type: :boolean}
]
},
%{
id: "AC-17",
name: "Віддалений доступ",
text:
"Віддалений доступ до системи керується додатковими політиками (наприклад, перевірка IP-адреси, VPN, mTLS), які інтегруються з `synrc/ca` та `abac` для забезпечення безпеки доступу за межами захищеного периметра.",
parameters: [%{default: true, name: :remote_access_control, type: :boolean}]
},
%{
id: "AC-16",
name: "АТРИБУТИ БЕЗПЕКИ ТА ПРИВАТНОСТІ",
text:
"Інформаційна система повинна підтримувати та динамічно пов'язувати визначені атрибути безпеки (мітки конфіденційності, ролі, посади, структурні підрозділи) з суб'єктами та об'єктами інформаційної взаємодії. Бібліотека ABAC реалізує стандарти ISO/IEC 29146:2016 та NIST SP 800-162, гарантуючи політику Zero Trust.",
oid: {1, 2, 804, 3, 1, 2, 1, 100, 1, 16},
library: "erpuno/abac"
},
%{
id: "AC-16(1)",
name: "Динамічне пов'язання атрибутів (заборона кешування)",
text:
"ABAC через компонент PIP (Policy Information Point) динамічно завантажує актуальні атрибути з контексту (наприклад, стан об'єкта `object_process` чи профіль `subject_employee` з KVS) безпосередньо в момент виконання запиту (`request`). Це гарантує, що рішення приймається на базі поточного, а не закешованого стану безпеки.",
parameters: [%{default: true, name: :dynamic_binding, type: :boolean}]
},
%{
id: "AC-16(2)",
name: "Зміна значень атрибутів авторизованими особами через PAP",
text:
"Точка адміністрування PAP дозволяє уповноваженим адміністраторам (які пройшли перевірку PDP) змінювати правила (`rule`), політики (`policy`) та кадрові атрибути співробітників, гарантуючи, що лише особи з належними повноваженнями можуть керувати системою доступу.",
parameters: [%{default: true, name: :authorized_changes, type: :boolean}]
},
%{
id: "AC-16(3)",
name: "Підтримка системою пов'язання атрибутів (KVS)",
text:
"Інфраструктура бази даних `synrc/kvs` нативно інтегрована з моделями `abac.hrl`. Система зберігає зв'язки між суб'єктами та атрибутами на рівні записів (records), що не підлягають несанкціонованому перезапису.",
parameters: [%{default: true, name: :attribute_binding_support, type: :boolean}]
},
%{
id: "AC-16(4)",
name: "Пов'язання атрибутів авторизованими особами",
text:
"Тільки уповноважені особи (з відповідними атрибутами безпеки) можуть створювати або делегувати повноваження (наприклад, призначати ролі `assistant` або `delegate` в моделі `subject_employee`).",
parameters: [
%{default: true, name: :binding_by_authorized_individuals, type: :boolean}
]
},
%{
id: "AC-16(5)",
name: "Відображення атрибутів на пристроях виведення (nitro)",
text:
"Завдяки інтеграції з `synrc/nitro`, рівні конфіденційності та безпекові атрибути об'єктів чітко рендеряться на інтерфейсі клієнта (веб-сторінках) у вигляді візуальних міток.",
parameters: [%{default: true, name: :display_attributes, type: :boolean}]
},
%{
id: "AC-16(6)",
name: "Підтримка пов'язання атрибутів організацією (org, branch)",
text:
"В `subject_employee` підтримуються специфічні атрибути для ієрархічної структури (поля `org`, `branch`), що дозволяє обчислювати доступ на основі приналежності до організаційної одиниці.",
parameters: [%{default: true, name: :org_binding_support, type: :boolean}]
},
%{
id: "AC-16(7)",
name: "Послідовна інтерпретація атрибутів (XACML algorithms)",
text:
"Використання стандартизованих алгоритмів комбінування політик XACML (алгоритми `all` або `any`) у PDP гарантує строгу та несуперечливу математичну інтерпретацію безпекових обмежень по всій системі.",
parameters: [%{default: true, name: :consistent_interpretation, type: :boolean}]
},
%{
id: "AC-16(8)",
name: "Техніки та технології пов'язання атрибутів (Pattern Matching, CA)",
text:
"Механізми Pattern Matching платформи Erlang/OTP використовуються для швидкого та безпомилкового порівняння атрибутів. Інтеграція криптографічних підписів (`synrc/ca`) у структуру об'єкта підтверджує автентичність його міток.",
parameters: [%{default: true, name: :binding_techniques, type: :boolean}]
},
%{
id: "AC-16(9)",
name: "Перепризначення атрибутів згідно з життєвим циклом",
text:
"Політики можуть передбачати логіку перепризначення атрибутів у процесі життєвого циклу об'єкта (наприклад, після підписання документа його атрибут статусу змінюється, що автоматично змінює правила доступу до нього).",
parameters: [%{default: true, name: :attribute_reassignment, type: :boolean}]
},
%{
id: "AC-16(10)",
name: "Конфігурація атрибутів уповноваженими особами (PAP API)",
text:
"Інфраструктура PAP надає API для гнучкого налаштування нових типів атрибутів і політик, гарантуючи, що ці налаштування виконуються тільки згідно встановлених процедур адміністрування.",
parameters: [%{default: true, name: :authorized_configuration, type: :boolean}]
},
%{
id: "AC-4",
name: "УПРАВЛІННЯ ІНФОРМАЦІЙНИМИ ПОТОКАМИ",
text:
"Інформаційна система повинна забезпечувати виконання дозволів та заборон щодо передачі (руху) інформації. Бібліотека BPE (Business Process Engine) реалізує це через моделювання інформаційних потоків у стандарті BPMN 2.0.",
oid: {1, 2, 804, 3, 1, 2, 1, 100, 1, 4},
library: "zencrypted/bpe"
},
%{
id: "AC-4(1)",
name: "Атрибути безпеки об'єкту",
text:
"BPE перед будь-яким переходом до наступного кроку (`bpe:next`) аналізує атрибути (метадані, документи), прив'язані до процесу. Шлюзи перевіряють ці мітки для ухвалення рішень маршрутизації.",
parameters: [%{default: true, name: :object_security_attributes, type: :boolean}]
},
%{
id: "AC-4(2)",
name: "Домени обробки (ізольовані процеси Erlang)",
text:
"Кожен BPMN-процес виконується як окремий ізольований процес віртуальної машини Erlang (Actor). Ці процеси створюють незалежні безпекові домени обробки інформації без спільної пам'яті.",
parameters: [%{default: true, name: :processing_domains, type: :boolean}]
},
%{
id: "AC-4(3)",
name: "Управління інформаційним потоком (SequenceFlow)",
text:
"Сутність `sequenceFlow` (ребра графу BPMN) математично обмежує єдині можливі шляхи передачі інформації між задачами.",
parameters: [%{default: true, name: :enforce_sequence_flow, type: :boolean}]
},
%{
id: "AC-4(4)",
name: "Управління потоком зашифрованої інформації",
text:
"BPE здатний маршрутизувати зашифровані payload-дані як непрозорі (opaque) структури, залишаючи розшифрування авторизованим клієнтам або конкретним сервісним завданням (`serviceTask`).",
parameters: [%{default: true, name: :encrypted_payloads, type: :boolean}]
},
%{
id: "AC-4(5)",
name: "Вбудовування типів даних (Erlang Records)",
text:
"Об'єкти інформаційного потоку строго типізовані через структури `record` (наприклад, `#userTask{}`, `#messageEvent{}`). Це запобігає переміщенню невідомих форматів.",
parameters: [%{default: true, name: :embedded_data_types, type: :boolean}]
},
%{
id: "AC-4(6)",
name: "Метадані (список docs у BPE)",
text:
"BPE керує метаданими документів, використовуючи внутрішній список `docs` (API `bpe:docs/1`, `bpe:amend/2`), що невідривно супроводжує потік процесу.",
parameters: [%{default: true, name: :metadata_management, type: :boolean}]
},
%{
id: "AC-4(7)",
name: "Механізми одностороннього потоку (DAG)",
text:
"Направлені ациклічні графи (DAG) BPMN природно реалізують односторонню передачу даних від `beginEvent` до `endEvent` без можливості повернення (якщо це не передбачено схемою).",
parameters: [%{default: true, name: :one_way_flow, type: :boolean}]
},
%{
id: "AC-4(8)",
name: "Політики безпеки (Gateways)",
text:
"Логічні шлюзи (`gateway`) виступають інтегрованими фільтрами, які застосовують політики безпеки на розгалуженнях потоку.",
parameters: [%{default: true, name: :security_policies, type: :boolean}]
},
%{
id: "AC-4(9)",
name: "Перевірки, що проводить персонал (UserTask)",
text:
"Використання `#userTask{}` зупиняє автоматичний потік інформації та вимагає ручної перевірки (Human-in-the-loop) і підтвердження для продовження маршруту.",
parameters: [%{default: true, name: :personnel_checks, type: :boolean}]
},
%{
id: "AC-4(10)",
name: "Активація та деактивація фільтрів політики (BoundaryEvent)",
text:
"Використання подій, як-от `boundaryEvent` (Boundary Events), дозволяє динамічно активувати обхідні гілки політик в залежності від виникнення інцидентів або таймаутів.",
parameters: [%{default: true, name: :filter_activation, type: :boolean}]
},
%{
id: "AC-4(11)",
name: "Конфігурація фільтрів політики безпеки (XML)",
text:
"Правила маршрутизації (фільтри) завантажуються декларативно з BPMN XML файлів та транслюються у незмінні правила Erlang (`bpe:load/1`).",
parameters: [%{default: true, name: :filter_configuration, type: :boolean}]
},
%{
id: "AC-4(12)",
name: "Ідентифікатори типу даних (MessageEvent)",
text:
"Система розрізняє вхідні повідомлення через обробку `messageEvent` з відповідними ідентифікаторами повідомлень, ігноруючи нерозпізнані сигнали.",
parameters: [%{default: true, name: :data_type_identifiers, type: :boolean}]
},
%{
id: "AC-4(13)",
name: "Декомпозиція на субкомпоненти (Call Activity)",
text:
"BPE підтримує виклик підпроцесів (`Call Activity`), що дозволяє розбити складні потоки на ізольовані субкомпоненти зі своїми власними політиками.",
parameters: [%{default: true, name: :subcomponent_decomposition, type: :boolean}]
},
%{
id: "AC-4(14)",
name: "Обмеження фільтра політики (conditions)",
text:
"Можливості маршрутизації обмежені набором умов `condition()`, які дозволяють математично гарантувати неперетин потоків.",
parameters: [%{default: true, name: :policy_filter_constraints, type: :boolean}]
},
%{
id: "AC-4(15)",
name: "Виявлення несанкціонованої інформації",
text:
"При спробі передати процесу повідомлення, яке не відповідає поточній стадії потоку (unauthorized message), система автоматично відкидає його або фіксує в лог як невалідний event.",
parameters: [%{default: true, name: :unauthorized_info_detection, type: :boolean}]
},
%{
id: "AC-4(16)",
name: "Передача інформації про взаємопов’язані системи (ServiceTask)",
text:
"Компонент `#serviceTask{}` дозволяє інтегрувати механізми перевірки даних, перш ніж передати інформаційний потік до інших ІТС (наприклад, через API REST або RPC).",
parameters: [%{default: true, name: :interconnected_systems_transfer, type: :boolean}]
},
%{
id: "AC-4(18)",
name: "Прив’язка атрибуту безпеки (Process ID)",
text:
"Інформація в рамках потоку жорстко прив’язується до Process ID (Id інстанції). Усі документи успадковують обмеження доступу поточного процесу.",
parameters: [%{default: true, name: :security_attribute_binding, type: :boolean}]
},
%{
id: "AC-4(19)",
name: "Перевірка метаданих (BPMN compare)",
text:
"BPMN-умови підтримують функції типу `{compare, Field, ConstCheckAgainst}`, що перевіряють значення конкретних метаданих об'єкта під час прийняття рішення про маршрут.",
parameters: [%{default: true, name: :metadata_validation, type: :boolean}]
},
%{
id: "AC-4(20)",
name: "Затверджені рішення (Default-Deny)",
text:
"Erlang Match Specifications та XACML гарантують, що лише явно затверджені алгоритми маршрутизації виконуються (Default-Deny принцип).",
parameters: [%{default: true, name: :approved_decisions, type: :boolean}]
},
%{
id: "AC-4(21)",
name: "Фізичне та логічне відділення інформаційних потоків",
text:
"Логічне відділення гарантується механізмом процесів OTP VM. Можливість виконання різних процесів на різних фізичних нодах Erlang-кластера забезпечує фізичне відділення потоків.",
parameters: [%{default: true, name: :physical_logical_separation, type: :boolean}]
},
%{
id: "AC-4(22)",
name: "Єдиний доступ (bpe:next)",
text:
"Централізований компонент контролю `bpe:next` слугує єдиною точкою (Choke Point) доступу та маршрутизації для всіх інформаційних потоків.",
parameters: [%{default: true, name: :single_access_point, type: :boolean}]
},
%{
id: "AC-4(23)",
name: "Модифікована інформація, яка не підлягає оприлюдненню (scrubbing)",
text:
"При поверненні історії та статусів через API клієнту, BPE може відфільтровувати та очищати внутрішні атрибути (`scrubbing`), не допускаючи витоку чутливої інформації.",
parameters: [%{default: true, name: :scrub_hidden_fields, type: :boolean}]
},
%{
id: "AC-4(24)",
name: "Нормалізований формат (BPE Record)",
text:
"Весь внутрішній потік конвертується в уніфікований стандартизований формат (`BPE Record Format`), незалежно від того, як дані надійшли на вході.",
parameters: [%{default: true, name: :normalized_format, type: :boolean}]
},
%{
id: "AC-4(25)",
name: "Очищення даних (Garbage Collection, End Event)",
text:
"Вбудовані механізми Garbage Collection віртуальної машини Erlang та знищення об'єктів пам'яті ізольованого процесу після завершення (`End Event`) забезпечують очищення даних з ОЗУ.",
parameters: [%{default: true, name: :data_sanitization, type: :boolean}]
},
%{
id: "AC-4(26)",
name: "Дії з фільтрації аудиту (hist у KVS)",
text:
"Кожен крок і зміна маршруту фіксується у вигляді об'єкта `hist` у `kvs`, створюючи прозорий ланцюг подій, де шлюзи та фільтри залишають свій слід.",
parameters: [%{default: true, name: :audit_filter_actions, type: :boolean}]
},
%{
id: "AC-4(27)",
name: "Незалежні фільтруючі механізми (ABAC + BPE)",
text:
"Дозвіл на доступ (ABAC) та перевірка логіки процесу (BPE) працюють як архітектурно незалежні механізми, підсилюючи концепцію \"Defense-in-depth\".",
parameters: [%{default: true, name: :independent_filtering, type: :boolean}]
},
%{
id: "AC-4(28)",
name: "Лінійні фільтрувальні канали (Linear Pipeline)",
text:
"BPE підтримує лінійну маршрутизацію (Linear Pipeline), коли `SequenceFlow` гарантовано не має відгалужень, забезпечуючи послідовне виконання політик без ризику обходу.",
parameters: [%{default: true, name: :linear_pipelines, type: :boolean}]
},
%{
id: "AC-4(29)",
name: "Механізми оркестровки",
text:
"Ядро BPE виступає єдиним централізованим механізмом оркестровки інформаційного обміну в рамках системи.",
parameters: [%{default: true, name: :orchestration_mechanisms, type: :boolean}]
},
%{
id: "AC-4(30)",
name: "Фільтрація з використанням кількох процесів (Parallel Gateway)",
text:
"Компонент `Parallel Gateway` (`#gateway{type=parallel}`) створює декілька паралельних потоків, кожен з яких може мати власні незалежні правила фільтрації.",
parameters: [%{default: true, name: :multi_process_filtering, type: :boolean}]
},
%{
id: "AC-4(31)",
name: "Запобігання передачі вмісту",
text:
"Якщо інформаційний об'єкт не відповідає політиці (фільтр на Gateway відхилив вміст), процес переривається або спрямовується на подію помилки (Error Event).",
parameters: [%{default: true, name: :content_transfer_prevention, type: :boolean}]
},
%{
id: "AC-4(32)",
name: "Вимоги до процесу передачі інформації (Receive/Send Task)",
text:
"Механізми `Receive Task` та `Send Task` строго декларують вимоги до структури payload-повідомлень перед тим, як дозволити зовнішній чи внутрішній обмін.",
parameters: [%{default: true, name: :transfer_process_requirements, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 1},
library: "erpuno/abac"
},
%{
id: "AT",
name: "ОБІЗНАНІСТЬ ТА НАВЧАННЯ (AT)",
text:
"Сімейство AT зобов'язує організацію проводити навчання персоналу з питань інформаційної безпеки. Цей контроль є цілком організаційним і виконується згідно з регламентами підприємства. Деталі наведено у `digital-profile.pdf`.",
subcontrols: [
%{
id: "AT-2",
name: "Навчання з обізнаності щодо безпеки",
text: "Програми навчання та інструктажі (див. розділ AT у digital-profile.pdf).",
parameters: [
%{
default: "digital-profile.pdf",
name: :security_awareness_training_ref,
type: :string
}
]
},
%{
id: "AT-3",
name: "Навчання з питань безпеки, залежне від ролі",
text:
"Спеціалізоване навчання для адміністраторів (див. розділ AT у digital-profile.pdf).",
parameters: [
%{default: "digital-profile.pdf", name: :role_based_training_ref, type: :string}
]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 2},
library: "organization"
},
%{
id: "AU",
name: "АУДИТ ТА ПІДЗВІТНІСТЬ (AU)",
text:
"Бібліотека KVS (Key-Value Store) є фундаментальною базою даних екосистеми Synrc, що використовує архітектуру Append-Only Logs (журналювання подій). Завдяки незмінності записаних даних (Immutability) KVS природним чином задовольняє найжорсткіші вимоги NIST щодо аудиту подій (AU) та надійного збереження і захисту даних на фізичних або логічних носіях (MP).",
subcontrols: [
%{
id: "AU-2(1)",
name: "Узагальнення записів про аудит з декількох джерел (feeds)",
text:
"BPMN підтримує паралельні ланцюги (feeds, streams), що дозволяє агрегувати записи про аудит з декількох джерел у єдиний потік журналу.",
parameters: [%{default: true, name: :audit_aggregation, type: :boolean}]
},
%{
id: "AU-2(3)",
name: "Перегляд та оновлення (індексація hist)",
text:
"Записи аудиту періодично індексуються, що дозволяє швидко витягувати всю історію (наприклад, через `bpe:hist/1`).",
parameters: [%{default: true, name: :audit_review_update, type: :boolean}]
},
%{
id: "AU-3",
name: "Зміст записів аудиту (метадані, Permit/Deny)",
text:
"Інформація в логах BPMN (особливо при збереженні об'єктів BPE/ABAC) містить вичерпні метадані: тип події, суб'єкт, цільовий об'єкт, результат операції (Permit/Deny) та позначку часу, що повністю закриває вимоги AU-3.",
parameters: [%{default: true, name: :audit_content_metadata, type: :boolean}]
},
%{
id: "AU-4",
name: "Місткість сховища записів аудиту (розподілені бекенди)",
text:
"BPMN може використовувати розподілені бекенди (Riak KV, розподілена Mnesia, KAI), що дозволяє горизонтально масштабувати місткість сховища логів (AU-4) без зупинки системи.",
parameters: [%{default: true, name: :audit_storage_capacity, type: :boolean}]
},
%{
id: "AU-8(1)",
name: "Позначка часу (erlang:system_time)",
text:
"Усі ідентифікатори та події, що генеруються в BPMN (наприклад, через генератор `id_seq`), прив'язані до високоточного системного часу Erlang (`erlang:system_time/1`). Це забезпечує надійну прив'язку подій до точного часу (AU-8(1)).",
parameters: [%{default: true, name: :sync_time_source, type: :boolean}]
},
%{
id: "AU-9(1)",
name: "Апаратні носії одноразового запису (Append-Only)",
text:
"Архітектура Append-Only гарантує, що записи не оновлюються (no UPDATE). Це створює ефект апаратного \"Write-Once-Read-Many\" (AU-9(1)). Видалити запис без порушення криптографічної чи логічної цілісності ланцюга посилань практично неможливо.",
parameters: [%{default: true, name: :append_only_enforced, type: :boolean}]
},
%{
id: "AU-10(3)",
name: "Неспростовність (Ланцюжок збереження доказів)",
text:
"Журнали BPMN слугують доказовою базою (Ланцюжок збереження доказів AU-10(3)). У комбінації з `synrc/ca` записи можуть підписуватися ЕЦП (AU-10(5)), що гарантує 100% неспростовність дій автора транзакції.",
parameters: [%{default: true, name: :non_repudiation, type: :boolean}]
},
%{
id: "AU-11(1)",
name: "Довгострокова можливість отримання записів аудиту",
text:
"Сховища типу RocksDB (в якості бекенда BPMN) оптимізовані для довгострокового зберігання петабайтів даних (Long-Term Storage) із забезпеченням швидкого доступу до історичних записів (AU-11(1)).",
parameters: [%{default: 1825, name: :log_retention_days, type: :integer}]
},
%{
id: "AU-6",
name: "Огляд, аналіз та звітність про аудит",
text:
"Аналіз аудиту відбувається за допомогою консольних інструментів платформи (наприклад, `kvs:hist/1` або інтерфейсів Erlang Shell). Також доступний експорт журналів для SIEM.",
parameters: [%{default: true, name: :audit_analysis_tools, type: :boolean}]
},
%{
id: "AU-12",
name: "Генерація аудиту",
text:
"KVS забезпечує генерацію записів аудиту для всіх операцій створення, оновлення (через створення нової ревізії) та видалення, гарантуючи фіксацію критичних подій безпеки.",
parameters: [%{default: true, name: :audit_generation, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 3},
library: "synrc/kvs"
},
%{
id: "CM",
name: "УПРАВЛІННЯ КОНФІГУРАЦІЄЮ (CM)",
text:
"Управління конфігурацією (CM) реалізується через підхід Infrastructure-as-Code. Сама наявність файлу бази даних конфігурацій (CMDB) `erpuno.ex` у вихідному коді виконує роль базової конфігурації системи, що гарантує версійний контроль, надійність та відтворюваність середовища безпеки.",
subcontrols: [
%{
id: "CM-2",
name: "Базова конфігурація (Baseline Configuration)",
text:
"Файл `erpuno.ex` фіксує єдину базову конфігурацію (Baseline) безпеки для всієї системи. Зміни в конфігурації застосовуються виключно через оновлення коду, що забезпечує строгий контроль та аудит змін.",
parameters: [%{default: true, name: :baseline_configuration_code, type: :boolean}]
},
%{
id: "CM-3",
name: "Контроль змін конфігурації",
text:
"Оскільки CMDB є частиною вихідного коду (Elixir модуль), всі зміни проходять через стандартний процес розробки (Code Review, CI/CD, контроль версій Git), унеможливлюючи несанкціоноване втручання в налаштування на \"живій\" системі.",
parameters: [%{default: true, name: :configuration_change_control, type: :boolean}]
},
%{
id: "CM-6",
name: "Налаштування конфігурації",
text:
"Параметри політик безпеки та їхні значення за замовчуванням жорстко зашиті в `erpuno.ex`. Компілятор генерує незмінний об'єктний файл, який гарантує виконання затверджених налаштувань під час роботи.",
parameters: [%{default: true, name: :compile_time_config, type: :boolean}]
},
%{
id: "CM-8",
name: "Інвентаризація компонентів ІТС",
text:
"Профіль автоматично фіксує перелік використовуваних компонентів системи (бібліотеки `synrc/kvs`, `synrc/ca` тощо) та їхні параметри, забезпечуючи інтегральну інвентаризацію модулів захисту.",
parameters: [%{default: true, name: :component_inventory, type: :boolean}]
},
%{
id: "CM-9",
name: "План управління конфігурацією",
text:
"Профіль `ERPUNO.Profile` слугує самодокументованим планом управління конфігураціями, здатним автоматично генерувати актуальну документацію (через метод `generate_md/0`).",
parameters: [%{default: true, name: :auto_generate_documentation, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 5},
library: "synrc/ca"
},
%{
id: "IA",
name: "ІДЕНТИФІКАЦІЯ ТА АВТЕНТИФІКАЦІЯ (IA)",
text:
"Система забезпечує надійну ідентифікацію та автентифікацію всіх суб'єктів перед наданням доступу. Бібліотека `synrc/ca` (разом з `synrc/ldap`) виступає ядром інфраструктури відкритих ключів (PKI) та керує життєвим циклом автентифікаторів.",
subcontrols: [
%{
id: "IA-2",
name: "Ідентифікація та автентифікація (організаційні користувачі)",
text:
"Система однозначно ідентифікує та автентифікує (перевіряє справжність) організаційних користувачів та процеси, що діють від їх імені, перед тим, як дозволити їм доступ до захищених ресурсів.",
parameters: [%{default: true, name: :org_user_auth, type: :boolean}]
},
%{
id: "IA-8",
name: "Ідентифікація та автентифікація (неорганізаційні користувачі)",
text:
"Зовнішні користувачі, що підключаються з публічних мереж, проходять сувору автентифікацію (наприклад, за допомогою mTLS або інтеграції з КЕП) для запобігання анонімному або підробленому доступу.",
parameters: [%{default: true, name: :non_org_user_auth, type: :boolean}]
},
%{
id: "IA-5(1)",
name: "Автентифікація на основі пароля (хешування)",
text:
"Для паролів чи PING-кодів (наприклад, для розблокування контейнерів PKCS#12) використовуються криптостійкі функції хешування з сіллю для запобігання атакам.",
parameters: [%{default: true, name: :password_based_auth, type: :boolean}]
},
%{
id: "IA-5(2)",
name: "Автентифікація на основі відкритого ключа",
text:
"Є основним профілем бібліотеки `ca`. Вона генерує, перевіряє (validate) та керує життєвим циклом інфраструктури відкритих ключів (X.509), забезпечуючи строгу автентифікацію.",
parameters: [%{default: true, name: :pki_enabled, type: :boolean}]
},
%{
id: "IA-5(5)",
name: "Зміна автентифікаторів до доставки (CSR)",
text:
"Система підтримує протоколи, за яких приватний ключ генерується на пристрої клієнта, а до CA відправляється лише Certificate Signing Request (CSR). Це гарантує зміну/встановлення ключів ще до факту доставки готового сертифіката користувачу.",
parameters: [%{default: true, name: :pre_delivery_change, type: :boolean}]
},
%{
id: "IA-5(6)",
name: "Захист автентифікаторів (PEM/PKCS#12)",
text:
"Приватні ключі (автентифікатори) зберігаються в захищеному зашифрованому вигляді (наприклад, контейнери формату PEM з паролем або PKCS#12), що унеможливлює використання ключів без знання пароля доступу.",
parameters: [%{default: true, name: :authenticator_protection, type: :boolean}]
},
%{
id: "IA-5(7)",
name: "Відсутність вбудованих незашифрованих статичних автентифікаторів",
text:
"Бібліотека заохочує динамічну генерацію ключів під час ініціалізації середовища (Root CA), що виключає необхідність зберігання \"hardcoded\" секретів у вихідному коді системи.",
parameters: [%{default: true, name: :no_unencrypted_static, type: :boolean}]
},
%{
id: "IA-5(8)",
name: "Багатосистемні облікові записи (mTLS/SSO)",
text:
"Сертифікати X.509, видані `synrc/ca`, можуть використовуватись як багатосистемний засіб автентифікації (на кшталт mTLS/SSO) для доступу до різноманітних мікросервісів та ERP-компонентів, розгорнутих у спільному домені довіри.",
parameters: [%{default: true, name: :multi_system_accounts, type: :boolean}]
},
%{
id: "IA-5(9)",
name: "Управління об'єднанням автентифікаторів (Intermediate CA)",
text:
"Підтримується архітектура федерації ключів (Federation) за рахунок використання ланцюгів сертифікатів (Intermediate CAs) та можливості перевіряти крос-сертифікаційні підписи (Cross-Certification).",
parameters: [%{default: true, name: :federation_management, type: :boolean}]
},
%{
id: "IA-5(10)",
name: "Динамічне зв'язування мандатів",
text:
"Бібліотека дозволяє видавати короткострокові сертифікати, що динамічно зв'язуються з конкретною сесією, IP-адресою чи атрибутами користувача (Dynamic Credential Binding).",
parameters: [%{default: true, name: :dynamic_credential_binding, type: :boolean}]
},
%{
id: "IA-5(11)",
name: "Автентифікація на основі апаратних токенів",
text:
"`synrc/ca` прозоро підтримує роботу з підписами, згенерованими на апаратних захищених носіях (Hardware Tokens, НКІ, е-Токени, PKCS#11). Серверній частині потрібен лише відкритий ключ для валідації.",
parameters: [%{default: true, name: :hardware_token_auth, type: :boolean}]
},
%{
id: "IA-5(12)",
name: "Ефективність біометричної автентифікації (Secure Enclave)",
text:
"Хоча `ca` працює з криптографією, будь-яка біометрична автентифікація (наприклад, TouchID, FaceID) на клієнті конвертується в криптографічний підпис (наприклад, через Secure Enclave), який успішно валідується модулями `synrc/ca`.",
parameters: [%{default: true, name: :biometric_efficiency, type: :boolean}]
},
%{
id: "IA-5(13)",
name: "Закінчення терміну дії автентифікаторів (NotBefore/NotAfter)",
text:
"Жорстко перевіряються поля `NotBefore` та `NotAfter` в сертифікатах X.509. Сертифікати зі строком дії, що минув, автоматично відхиляються без можливості оскарження.",
parameters: [%{default: true, name: :authenticator_expiration, type: :boolean}]
},
%{
id: "IA-5(14)",
name: "Управління змістом довірчих сховищ (Trust Stores)",
text:
"На рівні сервера бібліотека керує сховищем довірених кореневих cертифікатів (Trust Store, `priv/cacerts`). Оновлення або відкликання (через CRL) довіри до Root CA автоматично реплікується на політику доступу.",
parameters: [%{default: true, name: :trust_store_management, type: :boolean}]
},
%{
id: "IA-5(15)",
name: "Продукти та послуги, затверджені уповноваженим органом (ДСТУ 4145-2002)",
text:
"Завдяки абстракції криптографічних примітивів, `synrc/ca` підтримує державні криптографічні стандарти (наприклад, алгоритм цифрового підпису ДСТУ 4145-2002), необхідні для побудови систем, затверджених Державною службою спеціального зв'язку та захисту інформації (ДССЗЗІ).",
parameters: [%{default: true, name: :approved_products, type: :boolean}]
},
%{
id: "IA-5(16)",
name: "Передача довірчої автентифікації зовнішньої сторони (АЦСК)",
text:
"`synrc/ca` здатна перевіряти підписи, накладені зовнішніми Акредитованими центрами сертифікації ключів (АЦСК), забезпечуючи довірчу автентифікацію зовнішніх сторін.",
parameters: [%{default: true, name: :external_auth_transfer, type: :boolean}]
},
%{
id: "IA-5(18)",
name: "Менеджер паролів (KeyStores)",
text:
"Незважаючи на те, що `synrc/ca` не є менеджером паролів у звичному розумінні, механізми захисту ключів (KeyStores, PKCS#12) виступають у ролі захищених криптографічних сейфів, які можна відкрити лише спеціалізованими засобами із дотриманням секретності.",
parameters: [%{default: true, name: :password_manager, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 7},
library: "synrc/ca"
},
%{
id: "IR",
name: "РЕАГУВАННЯ НА ІНЦИДЕНТИ (IR)",
text:
"Сімейство IR забезпечує автоматизацію виявлення, фіксації та реагування на інциденти. Компонент `erpuno/itsm` (побудований на BPMN-рушії `synrc/bpe`) моделює процеси обробки інцидентів згідно з найкращими практиками ITIL.",
subcontrols: [
%{
id: "IR-2",
name: "Навчання з реагування на інциденти",
text:
"Інтерфейс `erpuno/itsm` надає контекстні підказки та інструкції безпосередньо у формах обробки інцидентів, що виконує функцію інтерактивного навчання та підтримки персоналу в кризових ситуаціях.",
parameters: [%{default: true, name: :incident_response_training, type: :boolean}]
},
%{
id: "IR-3",
name: "Тестування реагування на інциденти",
text:
"Можливості BPE-движка дозволяють запускати симуляції інцидентів у тестовому середовищі `itsm` для регулярного тестування планів реагування без впливу на продуктивну систему.",
parameters: [%{default: true, name: :incident_testing_simulation, type: :boolean}]
},
%{
id: "IR-4",
name: "Обробка інцидентів",
text:
"Будь-який інцидент безпеки автоматично реєструється як тикет у модулі `itsm`. Процес обробки (`incident_management_process`) гарантує, що інцидент пройде всі необхідні етапи: виявлення, ізоляція, усунення, відновлення.",
parameters: [%{default: true, name: :incident_handling, type: :boolean}]
},
%{
id: "IR-5",
name: "Моніторинг інцидентів",
text:
"Статуси інцидентів у реальному часі відображаються на дашбордах `erpuno/itsm`. BPE-движок дозволяє призначати SLA-таймаути (Boundary Events) для ескалації інцидентів, якщо час реакції перевищено.",
parameters: [%{default: true, name: :incident_monitoring, type: :boolean}]
},
%{
id: "IR-6",
name: "Звітність про інциденти",
text:
"Система `erpuno/itsm` автоматично формує звіти про інциденти, надаючи вичерпну інформацію про порушені сервіси, час простою (SLA) та дії команди, що закриває вимоги внутрішньої та зовнішньої звітності.",
parameters: [%{default: true, name: :automated_incident_reporting, type: :boolean}]
},
%{
id: "IR-7",
name: "Допомога у реагуванні на інциденти",
text:
"Вбудовані засоби комунікації в рамках тикету (коментарі, призначення експертів, інтеграція з базою знань) забезпечують оперативну допомогу та координацію групи безпеки під час інциденту.",
parameters: [%{default: true, name: :incident_assistance, type: :boolean}]
},
%{
id: "IR-8",
name: "План реагування на інциденти",
text:
"Сам конфігураційний код процесів `erpuno/itsm` виступає в ролі актуального та виконуваного плану реагування на інциденти (Executable Incident Response Plan), усуваючи розбіжність між документацією та реальністю.",
parameters: [%{default: true, name: :executable_ir_plan, type: :boolean}]
},
%{
id: "IR-9",
name: "Реагування на витік інформації (Information Spillage)",
text:
"Спеціалізовані BPMN-схеми в `itsm` передбачені для обробки витоків інформації. Вони включають обов'язкові кроки ідентифікації скомпрометованих даних, блокування доступу (`abac`) та сповіщення регулятора.",
parameters: [%{default: true, name: :information_spillage_response, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 8},
library: "erpuno/itsm"
},
%{
id: "MP",
name: "ЗАХИСТ НОСІЇВ ІНФОРМАЦІЇ (MP)",
text:
"KVS абстрагує роботу з фізичними носіями, виступаючи єдиним інтерфейсом між логікою додатку та диском.",
subcontrols: [
%{
id: "MP-2(1)",
name: "Доступ до носіїв інформації (через Erlang VM)",
text:
"Прямий доступ до файлів БД (RocksDB/Mnesia) на носіях закритий на рівні ОС. Весь логічний доступ здійснюється виключно через інтерфейс KVS всередині віртуальної машини Erlang, яка діє як обмежений шлюз доступу (MP-2(1)).",
parameters: [%{default: true, name: :os_level_access_control, type: :boolean}]
},
%{
id: "MP-4(1)",
name: "Криптографічний захист носіїв (Data-at-Rest)",
text:
"KVS підтримує політики постійного збереження даних на диск (Disk Persistence). Захист інформації в стані спокою (Data-at-Rest) реалізується через інтеграцію з шифруванням файлової системи (LUKS) або шифруванням значень (MP-4(1)).",
parameters: [%{default: true, name: :encryption_at_rest, type: :boolean}]
},
%{
id: "MP-5(1)",
name: "Транспортування носіїв інформації (TLS-реплікація)",
text:
"В розподіленому кластері KVS реплікує дані (переміщує їх) між нодами. Цей процес транспортування інформації захищається за допомогою TLS (Erlang Distribution over TLS), запобігаючи перехопленню даних поза контрольованими зонами (MP-5(1), MP-5(4)).",
parameters: [%{default: true, name: :tls_replication, type: :boolean}]
},
%{
id: "MP-6(8)",
name: "Знищення інформації на носіях (Tombstones)",
text:
"Хоча KVS є системою Append-Only, він надає чіткі API (`kvs:delete`) для виконання процедур очищення даних (наприклад, для забезпечення вимог GDPR \"Право на забуття\"). Під час видалення запису, бекенд RocksDB гарантовано помічає блоки як видалені (Tombstones), які під час подальшої компресії фізично стираються з носія без можливості відновлення (MP-6(8)).",
parameters: [%{default: true, name: :tombstone_deletion_enabled, type: :boolean}]
},
%{
id: "MP-7(1)",
name: "Використання носіїв інформації (марковані томи)",
text:
"KVS може конфігуруватись на використання виключно заздалегідь визначених (іменованих) просторів таблиць на авторизованих томах зберігання, забороняючи використання невідомих чи немаркованих баз даних (MP-7(1)).",
parameters: [%{default: true, name: :authorized_volumes_only, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 10},
library: "synrc/kvs"
},
%{
id: "CP",
name: "ПЛАНУВАННЯ БЕЗПЕРЕРВНОЇ РОБОТИ (CP)",
text:
"Сімейство CP гарантує доступність та відновлення системи у разі збоїв. Бібліотека `synrc/kvs` нативно підтримує механізми реплікації (через Riak Core або Mnesia) та створення резервних копій.",
subcontrols: [
%{
id: "CP-9",
name: "Резервне копіювання інформаційної системи",
text:
"Система здійснює автоматичне створення резервних копій бази даних KVS. Бекапи можуть зберігатися локально або відправлятися до хмарних сховищ, гарантуючи відновлення даних відповідно до RTO/RPO.",
parameters: [%{default: true, name: :system_backup, type: :boolean}]
},
%{
id: "CP-10",
name: "Відновлення інформаційної системи",
text:
"KVS забезпечує механізми швидкого відновлення з резервних копій (`kvs:restore/1`), дозволяючи адміністраторам відновити працездатність вузла з гарантією логічної цілісності журналу транзакцій.",
parameters: [%{default: true, name: :system_recovery, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 6},
library: "synrc/kvs"
},
%{
id: "PE",
name: "ФІЗИЧНИЙ ЗАХИСТ ТА ЗАХИСТ НАВКОЛИШНЬОГО СЕРЕДОВИЩА (PE)",
text:
"Сімейство PE визначає вимоги до фізичного захисту центрів обробки даних (ЦОД). Виконання цих контролів забезпечується на рівні організаційних та інженерних заходів провайдера (захист від несанкціонованого фізичного доступу, живлення, пожежогасіння). Детальні інструкції та опис наведені у зовнішньому документі `digital-profile.pdf`.",
subcontrols: [
%{
id: "PE-2",
name: "Фізичний доступ",
text:
"Регламентується інструкціями з режиму ЦОД (див. розділ PE у digital-profile.pdf).",
parameters: [
%{default: "digital-profile.pdf", name: :physical_access_doc_ref, type: :string}
]
},
%{
id: "PE-3",
name: "Контроль фізичного доступу",
text:
"Регламентується системами СКУД будівлі (див. розділ PE у digital-profile.pdf).",
parameters: [
%{default: "digital-profile.pdf", name: :physical_access_control_ref, type: :string}
]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 11},
library: "organization"
},
%{
id: "RA",
name: "ОЦІНКА РИЗИКІВ (RA)",
text:
"Сімейство RA стосується виявлення та мінімізації загроз. Інфраструктура `erpuno/itsm` підтримує ведення реєстру ризиків (Risk Register) та моделювання процесів їх усунення.",
subcontrols: [
%{
id: "RA-3",
name: "Оцінка ризиків",
text:
"Всі ідентифіковані вразливості або загрози фіксуються в реєстрі `itsm`, де їм присвоюється рівень критичності. На базі цього рівня розраховується пріоритет та призначаються відповідальні особи.",
parameters: [%{default: true, name: :risk_assessment, type: :boolean}]
},
%{
id: "RA-5",
name: "Сканування вразливостей",
text:
"Система передбачає можливість інтеграції зовнішніх сканерів вразливостей, звіти яких автоматично перетворюються на тикети усунення ризиків в системі `itsm`.",
parameters: [%{default: true, name: :vulnerability_scanning, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 14},
library: "erpuno/itsm"
},
%{
id: "SC",
name: "ЗАХИСТ СИСТЕМ ТА КОМУНІКАЦІЙ (SC)",
text:
"Сімейство SC гарантує цілісність, конфіденційність і доступність даних під час їх передачі внутрішніми та зовнішніми мережами. Бібліотеки `synrc/n2o` та `synrc/ca` реалізують стійкі з'єднання через WebSocket із використанням TLS, забезпечуючи криптографічний захист сесій та стійкість до мережевих атак.",
subcontrols: [
%{
id: "SC-2",
name: "Ізоляція функції безпеки",
text:
"Функції безпеки (шифрування, авторизація) виконуються в ізольованих процесах Erlang VM, окремо від бізнес-логіки системи. Ця архітектура Actor Model унеможливлює втручання несанкціонованих процесів у роботу механізмів безпеки.",
parameters: [%{default: true, name: :security_function_isolation, type: :boolean}]
},
%{
id: "SC-4",
name: "Інформація в загальних ресурсах системи",
text:
"Erlang VM не використовує спільну пам'ять (shared memory) між процесами сесій N2O. Пам'ять звільняється автоматично (Garbage Collection) після обробки запиту, запобігаючи витоку залишкової інформації між різними користувачами.",
parameters: [%{default: true, name: :shared_resource_protection, type: :boolean}]
},
%{
id: "SC-5",
name: "Захист від атак «відмова в обслуговуванні» (DoS)",
text:
"Інфраструктура N2O/Cowboy обробляє сотні тисяч конкурентних WebSocket-з'єднань завдяки легкості Erlang-процесів. Вбудовані механізми rate-limiting, обмеження розміру payload та таймаути захищають від атак на виснаження ресурсів (Slowloris, Flood).",
parameters: [%{default: true, name: :dos_protection, type: :boolean}]
},
%{
id: "SC-7",
name: "Захист периметра (Boundary Protection)",
text:
"Всі зовнішні підключення приймаються виключно через єдиний порт (керований інтерфейс), що обробляється веб-сервером (Cowboy). Доступ до внутрішніх API і вузлів кластера блокується правилами мережевого екранування за замовчуванням (Default Deny).",
parameters: [%{default: true, name: :boundary_protection, type: :boolean}]
},
%{
id: "SC-8",
name: "Захист цілісності та конфіденційності під час передачі",
text:
"Передача інформації між клієнтом і сервером здійснюється виключно через зашифровані канали (WSS/TLS), що унеможливлює перехоплення (Man-in-the-Middle) або несанкціоновану модифікацію даних на льоту.",
parameters: [%{default: true, name: :transmission_confidentiality, type: :boolean}]
},
%{
id: "SC-10",
name: "Розрив мережевого з'єднання",
text:
"Протокол N2O автоматично розриває мережеве з'єднання після завершення комунікаційного сеансу або перевищення часу очікування (Inactivity Timeout), звільняючи ресурси та сесію.",
parameters: [%{default: 3600, name: :network_disconnect_timeout, type: :integer}]
},
%{
id: "SC-12",
name: "Криптографічне управління ключами",
text:
"Керування ключами та сертифікатами для встановлення захищених з'єднань делегується бібліотеці `synrc/ca` та інтегрованим механізмам TLS ОС, що відповідають чинним криптографічним стандартам.",
parameters: [%{default: true, name: :cryptographic_key_management, type: :boolean}]
},
%{
id: "SC-13",
name: "Криптографічний захист",
text:
"Система підтримує використання схвалених криптографічних алгоритмів (AES-GCM, SHA-256/512, ДСТУ 4145-2002 через відповідні модулі), які забезпечують необхідний рівень стійкості.",
parameters: [%{default: true, name: :cryptographic_protection, type: :boolean}]
},
%{
id: "SC-23",
name: "Автентичність сеансу зв'язку",
text:
"Автентичність WebSocket-сесій N2O захищається токенами з криптографічним підписом (HMAC). Це гарантує, що повідомлення в рамках сесії не можуть бути підроблені або інжектовані сторонньою особою.",
parameters: [%{default: true, name: :session_authenticity, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 16},
library: "synrc/n2o"
},
%{
id: "SI",
name: "ЦІЛІСНІСТЬ СИСТЕМИ ТА ІНФОРМАЦІЇ (SI)",
text: "",
subcontrols: [
%{
id: "SI-10",
name: "ПЕРЕВІРКА ВВОДУ ІНФОРМАЦІЇ",
text:
"Система повинна перевіряти вхідну інформацію перед тим, як її обробляти та зберігати, щоб захиститись від ін'єкцій та забезпечити логічну цілісність. Екосистема Synrc (Nitro, Form) використовує архітектуру Server-Side Rendering (через N2O WebSockets) та декларативну серверну валідацію, що усуває цілі класи вразливостей.",
oid: {1, 2, 804, 3, 1, 2, 1, 100, 17, 10},
library: "synrc/form"
},
%{
id: "SI-10(1)",
name: "Перевірка вводу перевизначення (лише серверна валідація)",
text:
"Клієнтська сторона (браузер) в `synrc/nitro` не містить логіки валідації, яку можна було б обійти чи перевизначити (override) через маніпуляції з DOM або JS. Уся перевірка жорстко зашита у виконуваний код Erlang (`synrc/form`). Жодне клієнтське перевизначення не здатне змінити правила серверної валідації.",
parameters: [%{default: true, name: :server_side_validation_only, type: :boolean}]
},
%{
id: "SI-10(2)",
name: "Перевірка вводу інформації помилок (екранування HTML)",
text:
"Повідомлення про помилки валідації генеруються на сервері (Erlang) і передаються клієнту через WebSocket як готові безпечні HTML-фрагменти (екрановані `nitro`), запобігаючи виникненню XSS під час відображення помилкового вводу користувачу.",
parameters: [%{default: true, name: :escape_html_output, type: :boolean}]
},
%{
id: "SI-10(3)",
name: "Передбачувана поведінка (декларативні Records)",
text:
"Оскільки валідація описана декларативно (Record-структурами з типами полів, як-от `integer`, `string`, `date`), реакція системи на некоректні дані завжди є 100% передбачуваною (Predictable Behavior). Відсутні приховані клієнтські скрипти, що можуть реагувати непередбачувано на специфічний ввід.",
parameters: [%{default: true, name: :predictable_behavior, type: :boolean}]
},
%{
id: "SI-10(4)",
name: "Часові взаємодії (таймаути N2O)",
text:
"Оскільки ввід передається через сталий WebSocket-зв'язок (N2O), система має вбудований контроль тайм-аутів з'єднання та захист від перевантажень (Rate-limiting). Довгі запити або неповний ввід просто ігноруються після завершення вікна сесії, блокуючи атаки типу Slowloris.",
parameters: [%{default: true, name: :timing_interactions, type: :boolean}]
},
%{
id: "SI-10(5)",
name: "Обмеження вводу довіреними джерелами і форматами",
text:
"Бібліотека `form` пропускає дані лише для тих полів, які явно задекларовані в схемі форми (Approved Formats). Pattern Matching платформи Erlang автоматично відкидає будь-які JSON/BERT payload-пакети, які містять незадекларовані поля (унеможливлюючи Mass Assignment Vulnerability) або походять з неавторизованого джерела (Trust Zone).",
parameters: [%{default: true, name: :strict_type_checking, type: :boolean}]
},
%{
id: "SI-10(6)",
name: "Профілактика вводу даних (блокування через ABAC)",
text:
"Комбінація `nitro` та `abac` дозволяє здійснювати профілактику (Prevention): якщо користувач не має права вносити дані в певне поле, це поле взагалі не рендериться на стороні клієнта або рендериться в стані `readonly/disabled`, а бекенд-валідатор автоматично блокує будь-яку спробу його програмно передати (Data Input Prevention at source).",
parameters: [%{default: true, name: :data_input_prevention, type: :boolean}]
}
]
},
%{
id: "POLICIES",
name: "Політики та процедури з безпеки",
text: "",
subcontrols: [
%{
id: "IR-1",
name: "Політика та процедури реагування на інциденти",
text:
"Політика реагування на інциденти закодована безпосередньо у бізнес-процесах (BPMN) `erpuno/itsm`, забезпечуючи неухильне виконання процедур на кожному кроці життєвого циклу інциденту.",
parameters: [%{default: true, name: :incident_policy_enforcement, type: :boolean}]
}
]
},
%{
id: "PL",
name: "ПЛАНУВАННЯ (PL)",
text:
"Сімейство PL відповідає за документування архітектури безпеки, розробку планів захисту та правил поведінки. В екосистемі ERP/1 планування безпеки глибоко інтегроване в саму кодову базу (Configuration-as-Code). Даний файл конфігурації (CA.CM) автоматично генерує цільовий План Безпеки Системи.",
subcontrols: [
%{
id: "PL-2",
name: "План безпеки системи",
text:
"Система підтримує автоматичну генерацію актуального Плану безпеки системи на основі цього профілю (CM). План чітко визначає всі технічні та організаційні контролі (AC, AU, SC, CM тощо), середовище функціонування та архітектуру.",
parameters: [%{default: true, name: :system_security_plan, type: :boolean}]
},
%{
id: "PL-4",
name: "Правила поведінки",
text:
"Для всіх користувачів платформи (організаційних та зовнішніх) визначаються правила поведінки. Згода з правилами (наприклад, Terms of Service, NDA) фіксується в базі даних KVS під час онбордингу, перед наданням доступу до ERP/1.",
parameters: [%{default: true, name: :rules_of_behavior, type: :boolean}]
},
%{
id: "PL-8",
name: "Архітектура безпеки",
text:
"Архітектура безпеки платформи (Actor Model, ізоляція процесів, Zero Dependencies, Append-Only логування) розробляється інтегровано з загальною архітектурою підприємства. Вона регулярно переглядається на відповідність державним стандартам (НД ТЗІ, NIST SP 800-53).",
parameters: [%{default: true, name: :security_architecture, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 12},
library: "organization"
},
%{
id: "SR",
name: "УПРАВЛІННЯ РИЗИКАМИ В ЛАНЦЮГУ ПОСТАЧАННЯ (SR)",
text:
"Сімейство SR визначає заходи із запобігання атакам через ланцюг постачання (Supply Chain Attacks). Архітектура ERP/1 та компонентів Synrc є унікальною, оскільки вона побудована на філософії «Zero Dependencies» — відсутність будь-яких сторонніх залежностей (NPM, Hex, Cargo тощо), крім стандартної бібліотеки та віртуальної машини Erlang/OTP. Це фундаментально усуває більшість ризиків даного класу.",
subcontrols: [
%{
id: "SR-2",
name: "План управління ризиками ланцюга постачання",
text:
"План управління базується на принципі відмови від стороннього коду. Замість інтеграції сотень неперевірених бібліотек, команда розробляє всі необхідні компоненти (веб-сервер N2O, KVS, CA) самостійно в єдиному монорепозиторії.",
parameters: [%{default: true, name: :zero_dependency_policy, type: :boolean}]
},
%{
id: "SR-3",
name: "Контроль та захист ланцюга постачання",
text:
"Заборонено використання автоматичних менеджерів пакетів для завантаження коду під час збірки. Весь вихідний код системи та модулів міститься безпосередньо в репозиторії проекту, що гарантує 100% контроль над кожним рядком коду, який компілюється.",
parameters: [%{default: true, name: :strict_code_vendoring, type: :boolean}]
},
%{
id: "SR-6",
name: "Аудит та огляди постачальників",
text:
"Єдиним зовнішнім «постачальником» є розробник платформи Erlang/OTP (компанія Ericsson та спільнота). Оновлення версій OTP проходять жорстку перевірку перед їх застосуванням на продуктивних серверах.",
parameters: [%{default: true, name: :erlang_otp_supplier_review, type: :boolean}]
},
%{
id: "SR-11",
name: "Автентичність компонентів",
text:
"Будь-які оновлення або патчі самої системи передаються виключно через захищені канали із застосуванням криптографічних підписів (`synrc/ca`), що виключає можливість підміни бінарних файлів під час розгортання.",
parameters: [%{default: true, name: :component_authenticity, type: :boolean}]
}
],
oid: {1, 2, 804, 3, 1, 2, 1, 100, 18},
library: "erpuno"
}
]
end
end