[DRAFT] Можливість налаштовувати сервіс id.gov.ua як спосіб автентифікації для отримувачів послуг на рівні реєстру

Сторінка технічної документації є баченням майбутньої реалізації, актуальність якого може бути застарілою.

Загальний опис

При розгортанні декількох реєстрів на одному екземплярі платформи може виникати потреба в інтеграції з сервісом id.gov.ua для отримувачів послуг на рівні окремого реєстру. При цьому ключ шифрування, який є обов’язковим для використання сервісу id.gov.ua, повинен бути різним для кожного реєстру. Управління цими ключами та налаштуваннями інтеграції повинно відбуватися через_Веб-інтерфейс управління платформою та реєстрами_.

Детальніше з архітектурою інтеграції з id.gov.ua можна ознайомитися за посиланням

Концепти

  • Ключ за замовчуванням Сервісу цифрових підписів - ключ з яким виконується первинна ініціалізація та контекст якого використовується для виконання операцій якщо не вказано інший ключ

  • Ключ шифрування - ключ який використовується для інтеграції з сервісом id.gov.ua.

  • Ключ підпису - ключ який використовується для накладання цифрового підпису системи (електронна печатка)

  • Платформена інтеграція з id.gov.ua - інтеграція з сервісом id.gov.ua на рівні платформи

Функціональні сценарії

  • Налаштування інтеграції з id.gov.ua на рівні окремого реєстру для Кабінету отримувача послуг Адміністратором реєстру

  • Налаштування інтеграції з id.gov.ua на рівні окремого реєстру для Кабінету надавача послуг Адміністратором реєстру

  • Управління ключами Адміністратором платформи

  • Вибір Ключа шифрування для інтеграції з id.gov.ua на рівні окремого реєстру для Кабінету отримувача послуг Адміністратором реєстру зі списку попередньо зареєстрованих ключів

  • Вибір Ключа шифрування для інтеграції з id.gov.ua на рівні окремого реєстру для Кабінету надавача послуг Адміністратором реєстру зі списку попередньо зареєстрованих ключів

  • Вибір Ключа підпису для реєстру Адміністратором реєстру зі списку попередньо зареєстрованих ключів

Ролі користувачів

  • Адміністратор платформи

  • Адміністратор реєстру

Загальні принципи та положення

Сервіс цифрових підписів

  • Доступ до всіх операцій з ключем забезпечується Сервісом цифрових підписів

  • Сервіс цифрових підписів ініціюється з ключем за замовчуванням в контексті (поточна реалізація)

  • У Сервіс цифрових підписів можуть бути додані додаткові ключі з вказанням псевдоніма (alias)

  • Додаткові ключі можуть бути як файловими, так і з фізичного носія (Гряда-301, Алмаз тощо)

  • При виклику методів Сервісу цифрових підписів можна вказати псевдонім ключа, який буде використовуватися для тієї чи іншою операції

  • Якщо псевдонім ключа не вказано, то використовується ключ за замовчуванням

  • Вказати псевдонім ключа необхідно тільки для операцій, в яких результат операції залежить від контексту ключа (наприклад, методи /officer/verify, /citizen/verify, /owner не залежать від контексту ключа і результат буде однаковий для будь-якого ключа)

Інтеграція з id.gov.ua

  • Для можливості реєстрової інтеграції з id.gov.ua використовуються тіж самі реалізації автентифікатора (first login flow) та identity провайдерів, що і для платформеної інтеграції з id.gov.ua (IdGovUaIdentityProviderV2 та IdGovUaAuthenticator)

  • Автентифікатори, які відповідають за інтеграцію з id.gov.ua, повинні використовувати Сервіс цифрових підписів, розгорнутий в Підсистемі управління користувачами та ролями (platform-dso) (поточний стан)

  • Конфігурація автентифікаторів розширюється параметром для вказання Ключа шифрування для інтеграції з id.gov.ua

  • Автентифікатор посадових осіб для інтеграції з id.gov.ua так само розширюється параметром для вказання Ключа шифрування

  • Параметр Ключ шифрування може мати пусте значення. В такому випадку автентифікатор не буде передавати псевдоним Ключа шифрування в Сервіс цифрових підписів і буде використовуватися Ключ за замовчуванням

  • Для інтеграції з id.gov.ua на рівні реєстру додається новий ідентіті провайдер з типом IdGovUaIdentityProviderV2

  • Для логіну в кабінет отримувача послуг може бути обраний один з 3 типів автентифікації: widget, platform-id-gov-ua та registry-id-gov-ua

  • Тип автентифікації задається на рівні автентифікатора ds-citizen-authenticator

  • В залежності від обраного типу автентифікації на сторінці логіну відображається віджет або кнопка "Увійти через id.gov.ua"

  • Кнопка формує посилання або на платформений ідентіті провайдер або на реєстровий ідентіті провайдер для id.gov.ua в залежності від обраного параметру автентифікації

  • При використанні реєстрової або платформеної інтеграції з id.gov.ua не користувач все одно повинен обрати режим громадянина або фізичної особи на сторінці в Веб-інтерфейсі управління користувачами та ролями

Керування ключами

  • Адміністратор платформи має можливість керувати ключами в окремій секції Веб-інтерфейсу управління платформою та реєстрами

  • Всі ключі зберігаються у Підсистемі управління секретами та шифруванням

  • При налаштуванні Автентифікації отримувачів послуг Адміністратор реєстру може вказати тип "Реєстрова інтеграція з id.gov.ua" з можливістю вказати Посилання на id.gov.ua, ідентифікатор клієнта, секрет клієнта та обрати Ключ шифрування з переліку заздалегідь створених ключів Адміністратором платформи

  • При налаштуванні Автентифікації надавачів послуг Адміністратор реєстру додається необхідність обрати Ключ шифрування з переліку заздалегідь створених ключів Адміністратором платформи

  • Для раніше налаштованих інтеграцій значення в конфігурації реєстру залишається пустим і відповідний автентифікатор використовує Ключ за замовчуванням. При першому редагуванні секції, потрібно буде обрати ключ з переліку

  • Якщо немає жодного ключа для вибору то Адміністратор реєстру повинен бачити повідомлення про відсутність ключів і необхідність звернутися до Адміністратора платформи

Високорівневий дизайн рішення

use case key mng.drawio
Figure 1. Діаграма варіантів використання
component citizen id gov ua.drawio
Figure 2. Компоненти Сервісу управління користувачами та ролями

Зміни в ідентіті провайдері IdGovUaIdentityProviderV2

Контракти налаштувань в Хелм чартах

Журнал рішень

  • Автентифікатори з Підсистеми управління користувачами та ролями не повинні отримувати доступ до Сервісу цифрових підписів Оперативної зони реєстру, а продовжувати використовувати сервіс зі своєї підсистеми

  • Система повинна надавати можливість керувати ключами централізовано у Веб-інтерфейсі управління платформою та реєстрами

Обсяг робіт

  • Додати опис для секції Керування платформою/Дані про ключ текстом, що це Ключ за замовчуванням Сервісу цифрових підписів Підсистеми управління користувачами та ролями Веб-інтерфейсу управління платформою та реєстрами

  • Додати опис для секції Керування платформою/Дані про ключ текстом, що це Ключ за замовчуванням Сервісу цифрових підписів Підсистеми управління користувачами та ролями Веб-інтерфейсу управління платформою та реєстрами

Попередня декомпозиція

  • Як Адміністратор Платформи я хочу мати можливість керувати ключами через Веб-інтерфейсу управління платформою та реєстрами

    • [FE] Додати можливість додавати файловий ключ в систему

    • [FE] Додати можливість додавати апаратний ключ в систему

    • [FE] Додати сторінку з переглядом ключів, які були внесені в систему

    • [FE] Додати можливість видаляти ключ, який був внесений в систему

    • [BE] Додати можливість вказувати додаткові ключі в Сервісі цифрових підписів

    • [BE] Додати можливість передавати псевдоним ключа в Сервіс цифрових підписів при виклику методів

    • [DEVOPS] Зберігати ключ, який був доданий у систему у Сервіс управління секретами та шифруванням

    • [DEVOPS] Видаляти ключ, який був видалений з систему з Сервісу управління секретами та шифруванням

    • [DEVOPS] Зберігати ключ, який був доданий у систему як додатковий ключ у Сервіс цифрових підписів Підсистеми управління користувачами та ролями

    • [DEVOPS] Видаляти ключ, який був видалений з системи як додатковий ключ у Сервісі цифрових підписів Підсистеми управління користувачами та ролями

  • Як Адміністратор реєстру я хочу мати можливість налаштовувати інтеграцію з id.gov.ua для отримувачів послуг на рівні реєстру через Веб-інтерфейсу управління платформою та реєстрами

    • [FE] Розширити секцію "Автентифікація отримувачів послуг" можливістю обрати тип автентифікації "Реєстрова інтеграція з id.gov.ua" (включно з вибором ключа шифрування з переліку)

    • [DEVOPS] Додати налаштування реалму Сервісу управління користувачами та ролями при реєстровій інтеграції з id gov ua (identity provider, authenticator, auth flow тощо)

    • [BE] Передавати псевдоним ключа при виклику методів Сервісу цифрових підписів з налаштувань в IdGovUaIdentityProviderV2

    • [BE] Помітити реалізацію IdGovUaIdentityProvider як deprecated

    • [FE/BE] Формувати посилання на кнопку "Вхід з id.gov.ua" на ідентіті провайдер який відповідає за реєстрову інтеграцію з id.gov.ua при відповідному налаштуванні

    • [BE] Додаткові потенційні зміни в автентифікаторах та ідентіті провайдері, які відповідають за реєстрову інтеграцію (перевірити чи потрібні зміни, для того щоб не додавати нову реалізацію)

  • Як Адміністратор реєстру я хочу мати можливість обирати Ключ шифрування при налаштуванні інтеграції з id.gov.ua для надавачів послуг через Веб-інтерфейсу управління платформою та реєстрами

    • [FE] Розширити секцію "Автентифікація надавачів послуг" для типу автентифікації id.gov.ua можливістю обрати ключ шифрування з переліку

    • [DEVOPS] Передавати налаштування по псевдониму ключа в ідентіті провайдер по інтеграції з id.gov.ua для надавачів послуг

    • [BE] Передавати псевдоним ключа при виклику методів Сервісу цифрових підписів з налаштувань в IdGovUaOfficerIdentityProvider

Всі налаштування зроблені в попередніх версіях повинні працювати і використовувати ключ за замовчуванням для шифрування

Поза скоупом

  • Авторизація використання конкретного ключа при виклику методів Сервісу цифрових підписів

  • Вказання типу додаткового ключа (шифрування/підпису) в Сервісі цифрових підписів

  • Обмеження Адміністратора реєстру на використання певних ключів з переліку (всі ключі відкриті для використання всім Адміністраторам реєстру)

  • Налаштування Платформеної інтеграція з id.gov.ua через Веб-інтерфейс управління платформою та реєстрами (включно з можливістю вибору Ключа шифрування іншого від Ключа за замовчуванням)

  • Можливість вибору Ключа підпису для реєстру з переліку заздалегідь створених ключів Адміністратором платформи

  • Автоматичний редірект на сторіну id gov ua з Кабінета отримувача послуг і подальший вибір режиму роботи (фізична особа/ юридична особа)

Обмеження рішення

  • Список сертифікатів та дозволених ключів налаштовуються для Сервісу цифрових підписів взагалі, а не для кожного ключа