Імпорт користувачів через файл та надання прав доступу
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис
З метою реалізації можливості спрощеного створення великої кількості користувачів (посадових осіб) у Keycloak, впроваджено функціональність для завантаження переліку користувачів у систему через файл.
В Кабінет адміністратора регламентів додано нову сторінку "Управління користувачами", на якій реалізовано можливість завантажити файл з даними користувачів цього реєстру.
З метою мінімізації помилок при створенні нових користувачів запроваджено первинну перевірку валідаційних правил до файлу (розмір, формат, кодування).
Задля виконання вимог безпеки та надійності збереження даних, виконується шифрування файлу та його збереження в об’єктне сховище реєстру (Ceph).
Усі подальші кроки щодо запуску процесу імпорту користувачів в Keycloak та парсинг і валідація даних користувачів з файлу, обробка даних у файлі та створення користувачів в Keycloak виконується автоматично без участі адміністратора реєстру.
Для моніторингу процесу виконання та його результату реалізовано функціональність у сервісі логування Kibana. Адміністратор реєстру може переглянути інформацію, що файл було опрацьовано, та підсумковий результат: кількість оброблених записів, кількість успішних, кількість помилкових, а також детальну інформацію за кожним помилковим записом.
Також на основі розробленого в Redash "Журналу подій системи" окремо створено новий — "Журнал управління користувачами". Адміністратор реєстру в "Журналі управління користувачів" може бачити дії, пов’язані зі створенням користувачів в Keycloak, в т.ч. інформацію щодо імпорту через файл.
2. Налаштування атрибутів адміністратора в Keycloak
Попередньо необхідно в Keycloak разово виконати наступні дії:
-
Перейдіть у відповідний
-admin
реалм і виберіть розділ Users. -
Оберіть користувача-адміністратора, що імпортує файл, і відкрийте секцію Attributes.
-
Створіть три ключі для обов’язкових атрибутів автентифікації:
-
fullName
— ПІБ; -
drfo
— особистий реєстраційний номер облікової картки платника податків (РНОКПП); -
edrpou
— унікальний ідентифікаційний номер юридичної особи в Єдиному державному реєстрі підприємств та організацій України (ЄДРПОУ).
-
-
Перейдіть до секції Role Mappings > Available Roles та додайте роль
user-management
до переліку Assigned Roles.
|
Налаштування атрибутів в Keycloak виконується один раз. При наступних процедурах імпорту користувачів виконувати її немає потреби. |
3. Імпорт користувачів через Кабінет адміністратора регламенту
-
Перейдіть до Кабінету адміністратора регламентів.
Посилання до Кабінету адміністратора регламентів відповідного реєстру можливо отримати, наприклад, в Openshift, для цього необхідно перейти до меню
Networking
→Routes
, обрати уProject
необхідний проєкт, у пошуку вказатиadmin-portal
та перейти за посиланням у колонціLocation
. -
Оберіть розділ
Управління користувачами
та натисніть кнопкуДодати користувачів
. -
Завантажте шаблон файлу
Users_Upload.csv
для заповнення даними користувачів. -
Ознайомтеся з
Поясненнями до заповнення файлу "Users_Upload"
.Обов’язково зверніть увагу на особливості заповнення параметрів шалону файлу, щоб уникнути помилок.
Якщо під час імпорту користувачів з файлу буде виявлена хоча б одна помилка, то процес імпорту буде перервано і жоден з користувачів не буде доданий до системи Keycloak. Див. схему нижче.
-
Заповніть файл даними користувачів, яким потрібно надати доступ до реєстру.
Вимоги до файлу:
-
максимальний розмір файлу —
30 МБ
; -
формат файлу —
CSV
; -
кодування файлу —
UTF-8
.
Якщо файл не відповідає одному з вищеописаних критеріїв, користувач отримає відповідне повідомлення:
-
Файл занадто великого розміру.
-
Невідповідний формат файлу.
-
Файл невідповідного кодування.
Це означатиме, що завантаження файлу не відбулося. Див. схему нижче.
Валідаційні правила для даних у файлі:
- Атрибут
drfo
: -
обов’язковий до заповнення, є унікальним у зв’язці з атрибутами
edrpou
таfullName
; - Атрибут
edrpou
: -
обов’язковий до заповнення, є унікальним у зв’язці з атрибутами
drfo
таfullName
, для введення доступні лише цифри; - Атрибут
fullName
: -
обов’язковий до заповнення, є унікальним у зв’язці з атрибутами
drfo
таedrpou
; - Атрибут
Realm Roles
: -
обов’язковий до заповнення, може містити декілька ролей (системні та регламентні ролі, при наявності), які вказані через кому. Вказані ролі повинні бути вже створені в Officer Realm у відповідному реєстрі у Keycloak.
- Атрибут hierarchy_code:
-
cурогатний ключ для доступу до об’єктів відповідно до ієрархічної структури. Наприклад,
101.202.303
. Обов’язковий до заповнення для реєстрів, які використовують ієрархічну рольову модель управління.Детальніше про ієрархічну модель читайте на сторінці Ієрархічна модель. - Атрибут
KATOTTG
: -
обов’язковий до заповнення для реєстрів, які використовують рольову модель за територіальною ознакою, для інших випадків необов’язковий. Значення складається із літер «UA», за якими слідують 17 цифр (наприклад, UA53060230000098362). Якщо користувач матиме доступ до декількох територіальних одиниць, їх коди вносяться через кому. Максимально можлива кількість значень для одного користувача — 16. У випадку надання користувачу доступу до записів всієї України в значенні KATOTTG потрібно вказати тільки два символи – UA.
Детальніше про рольову модель за територіальною прив’язкою читайте на сторінці Рольова модель за територіальною прив’язкою (КАТОТТГ). - Будь-який інший атрибут:
-
не обов’язковий атрибут з довільною назвою та значенням за потреби (наприклад, назва організації, область, район, населений пункт тощо), якщо надалі буде необхідність будувати на основі нього статистику щодо створених користувачів. Заборонено включати до значення спеціальні символи ([, ], {, }, \, "), а також значення, які містять понад 255 символів.
Назва кожного додаткового атрибута обов’язково повинна бути однаковою для всіх користувачів реєстру і мати унікальну назву серед інших параметрів.
-
-
Завантажте файл перетягнувши його у відповідне поле
Завантажити перелік посадових осіб
або обравши його у відповідній директорії. -
Натисніть кнопку
Почати імпорт
. -
На наступному кроці буде показано, що файл взято в обробку. Зачекайте декілька хвилин до повного завантаження користувачів реєстру. Також у повідомленні зазначене посилання на сервіс Kibana, де можна переглянути результат опрацювання файлу: кількість оброблених записів, кількість успішних, кількість помилкових.
4. Перегляд результату виконання процесу в сервісі Kibana
Модуль перевіряє увесь файл і пише всі знайдені проблеми в сховище технічних логів Kibana
. У логах фіксується інформація про кожен запис, пропущений при створенні, із зазначеною причиною пропуску, а успішно відпрацьовані порядково не фіксуються (показується лише загальна кількість успішних). Також присвоюється унікальний ідентифікатор користувача в Keycloak (Username), який дублюється.
Під час першого використання сервісу Kibana необхідно створити Для цього слід виконати наступні кроки:
|
4.1. Загальні валідаційні правила для перевірки даних користувачів з файлу
У разі порушення валідаційного правила запису даних у файлі буде показана відповідна помилка:
-
обов’язкове поле пусте
або
складається тільки з пробілівабо
має кілька значень через кому замість одного (для поля edrpou, drfo, fullName) — помилка про відсутність обов’язкового атрибута; -
поле
edrpou
містить недопустимі символи (має складатися лише з цифр)-- помилка про присутність неприпустимих символів; -
вказана роль відсутня у переліку наявних ролей Officer Realm відповідного реєстру у Keycloak — помилка про відсутність вказаної ролі;
-
структура файлу не відповідає заданій — помилка про невідповідність файлу закладеній структурі.
В такому випадку процес імпорту користувачів не відбувається.
Якщо імпорт користувачів у Keycloak відбувся з порушенням валідаційних правил, потрібно повторно з самого початку повторити процедуру імпорту користувачів з файлу, попередньо виконавши потрібні корегування. |
Виконання часткового імпорту користувачів з помилкою можливе в наступних випадках:
-
користувач із таким username і такими атрибутами (
drfo
,edrpou
,fullName
) вже є в Keycloak; -
користувач із таким
username
, але з іншими атрибутами вже є в Keycloak; -
користувач із такими атрибутами, але з іншим
username
вже є у Keycloak (тоді у логах буде вказано, який реальнийusername
у користувача в Keycloak); -
користувач із такими атрибутами вже зустрівся в CSV-файлі раніше (дублювання записів).
-
у процесі імпорту виникла помилка в Keycloak.
В такому випадку процес імпорту користувачів відбувається частково, записи користувачів з помилками фіксуються в логах Kibana як Failed to import
та Skipped
, і вони не додаються до системи Keycloak, а усі інші успішні записи користувачів додаються до системи Keycloak.
Алгоритм запису логів при імпорті користувачів з помилкою:
-
Якщо один із запитів в групі з N записів повертає помилку, запис користувачів саме з цієї групи починається порядково. Користувач, на якому сталася помилка, пропускається.
-
У логах фіксується інформація про всі записи, пропущені при створенні, з фіксацією причини пропуску (позначені як
Skipped
абоFailed to import
).
Якщо імпорт користувачів у Keycloak відбувся з помилками (часткове створення користувачів), потрібно наново завантажити файл з користувачами, яких не вдалося створити, виконавши потрібні корегування. |
4.2. Результат виконання процесу імпорту з помилкою
Першочергово необхідно в логах знайти відповідний запис з загальним результатом опрацювання імпорту.
-
Total users in file
— відображає загальну кількість користувачів, що було додано через файл; -
Successfully imported
— кількість успішно доданих користувачів; -
Skipped
- кількість пропущених користувачів; -
Failed to import
— кількість користувачів, що не вдалося додати через помилку з сервісом Keycloak.
За кожним користувачем, що не вдалося додати до сервісу (пропущені) буде показано окремий запис у логах з інформацією про валідаційну помилку.
Якщо імпорт користувачів у Keycloak відбувся з помилками (часткове створення користувачів), потрібно наново підвантажити файл з користувачами, яких не вдалося створити (виконавши потрібні корегування).
4.3. Успішний результат виконання процесу імпорту користувачів
У разі успішного проходження валідаційних правил виконується процес імпорту всіх користувачів з файлу у Keycloak. Skipped
та Failed to import
вказуються с нулями.
Total users in file
відповідає кількості Successfully imported
.
Створення користувачів у Keycloak відбувається групами (окремими запитами) по N записів (значення N задається в налаштуваннях процесу).
За результатом успішного проведення імпорту користувачів у Keycloak створюються облікові записи користувачів з відповідними атрибутами та ролями.
5. Перегляд логів аудиту в "Журналі управління користувачами" системи Redash
Адміністратор безпеки (з відповідним правом доступу) має можливість переглянути в Redash "Журнал управління користувачами", наприклад, з метою проведення аудиту надання доступу користувачам.
Для надання прав доступу до системи Redash та створення аналітичної звітності користувач повинен мати роль Посилання до перегляду аудит-логів у системі Redash можна знайти в консолі Openshift > Networking > Routes > оберіть проєкт із вашим реєстром та знайдіть посилання до сервісу Додайте ендпоінт |
У журналі представлено всі записи, які відповідають наступним параметрам: applicationName="Keycloak", type="SYSTEM_EVENT".
Кожен користувач, якого було створено через імпорт файлом, відображається окремим рядком з зазначеним набором додаткових параметрів.
- Звіт містить наступні параметри
Назва в Redash |
Назва параметру |
Опис параметру |
Ідентифікатор запиту |
|
Ідентифікатор запиту з MDC |
Назва події в БД |
|
"USER_CREATE" |
Назва додатку/поди |
|
Назва пайплайну для імпорту користувачів (pod_name) |
Дата та час операції |
|
Мітка часу |
ПІБ адміністратора |
|
ПІБ користувача який запустив процес імпорту |
Ідентифікатор адміністратора |
|
Keycloak ідентифікатор користувача який запустив процес імпорту |
ДРФО адміністратора |
|
ДРФО код користувача який запустив процес імпорту |
ID створеного користувача |
|
Keycloak ідентифікатор створеного користувача |
Username створеного користувача |
|
username створеного користувача |
Користувач активний |
|
true/false |
КАТОТТГ |
|
Кодифікатор адміністративно-територіальних одиниць та територій територіальних громад. Може містити кілька значень. |
Довільні поля |
|
Власні (довільні) додаткові атрибути користувача |
Ідентифікатор реалму |
|
Keycloak ідентифікатор реалму в якому був створений користувач |
Ім’я реалму |
|
Ім’я реалму в якому був створений користувач |
Ім’я клієнта в Keycloak |
|
Значення "Client ID" атрибута реалму, від імені якого був створений користувач |
Ідентифікатор клієнта в Keycloak |
|
Keycloak-ідентифікатор клієнта від імені якого був створений користувач |
Ролі створеного користувача |
|
Ролі створеного користувача |
Ідентифікатор CSV файлу |
|
Ідентифікатор CSV файлу у Ceph-сховищі |
Оригінальне ім’я CSV файлу |
|
Оригінальне ім’я CSV файлу, з якого проводився імпорт користувачів |
Контрольна сума CSV файлу |
|
Чек сума завантаженого користувачем CSV файлу (незашифрованого) |
Функціональністю сервісу Redash передбачено можливість фільтрування, сортування параметрів та експорту сформованої вибірки.