| |
|---|
| Код документа | SPEC-GSSO-2026 / Отчёт 05 |
| Версия | 0.1-draft (исходный текст EN, имеющий преимущественную силу) |
| Дата | 2026-10-05 |
| Статус | Черновик |
| Сопутствующие отчёты | 00 Техническое задание · 01 ADR · 02 Требования · 03 Потребители и контракт · 04 Техническая документация |
| Версия | Дата | Изменения |
|---|
| 0.1-draft | 2026-10-05 | Фазы S0–S5, MVP, риски, зависимости |
| Этап потребителя | Что требуется от GSSO | Фаза GSSO |
|---|
| CRM F0 (фундамент) | CAP-GSSO-01: realm gstack, crm-gateway, сервисные клиенты, locale, UUID sub | S1 |
| CRM F1+ / gDocFlow / gTenders | CAP-GSSO-03, 07 (сессии, token exchange) | S3 |
| gFlow G1 | запрос «роль → пользователи», сервисные principal для каждого приложения | S3 |
| gInsight (отложен) | claims org_unit (CAP-GSSO-04) | S2 |
| Усиление существующих приложений | Устранение паттернов A/C | S4 |
Каждая фаза завершается контрольной точкой (gate). В фазе S0 нельзя приступать к написанию кода, пока ADR из отчёта 01 не переведены в статус Acceptat (DEV-PLAYBOOK §4).
- Создать репозиторий
govtech/gstack/gsso, CLAUDE.md, gsso.jdl и test-scenarios.md и принять ADR.
keycloak/:
- Dockerfile на версии 26.6.3;
- базовые конфигурации
gstack, cetatean и tenant-template через keycloak-config-cli;
- тема входа GDS на RO/RU/EN.
Модуль расширений в этой фазе — только каркас.
deploy/docker-compose.yml с Keycloak, двумя базами данных PostgreSQL и Kafka; docker-compose.test.yml.
- Генерация
gsso и gsso-gateway средствами JHipster 9.1.0; каркас gsso-web на GDS с боковой панелью и i18n. Версии зафиксированы.
- Контрольная точка: AC-001 и AC-002 проходят локально, ADR приняты,
/gsast без замечаний.
- Realms (реестр, создание из шаблона, переключатель, ограничение области, adoption в режиме dry-run).
- Платформы, клиенты, роли, массовое создание сервисных клиентов и audience mappers.
- Пользователи: список, создание/приглашение, редактирование, включение/отключение, учётные данные, сессии, разблокировка, проекция.
- Reconciler: задания outbox, worker, повторные попытки, полная сверка, drift
REPORT/ENFORCE, экран синхронизации.
- Собственные append-only события GSSO, пока без приёма событий из Kafka.
- Экраны дизайна Realms, Applications, Users (drawer), Roles и Sync.
- Контрольная точка: проходят AC-003..009, 026, 027 (частично) и 028. CAP-GSSO-01 предоставлена в локальной среде и на staging.
- Grants (назначения доступа): жизненный цикл, принцип «четырёх глаз», входящие (inbox), истечение срока и уведомления, пакеты (bundles), организационные подразделения и роли с областью действия.
- Слушатель событий Keycloak
gsso-kafka, потребитель, хеш-цепочка, пересылка в GLog, back-fill и дашборд (KPI, входы за 24 ч, события, структура методов аутентификации).
- Политики аутентификации: экран методов, условная MFA для чувствительных ролей, федерация LDAP, mock-брокер MPass в
cetatean и брендинг.
- Публикатор отзывов (revocation publisher) и отчёт о доступе.
- Контрольная точка: проходят AC-010..019, 024, 025. Предоставлены CAP-GSSO-02 и 04.
gsso-spring-boot-starter и @gstack/gsso-angular.
api/v1/app (самостоятельная регистрация, справочные запросы, роли, сессии, запросы на назначение доступа).
- Разрешения token exchange.
- Пример приложения и runbook подключения.
- Пилотные приложения:
- gregistry (паттерн B): переходит на
gstack и starter;
- glog: starter и scopes, при этом GSSO становится клиентом приёма (ingest);
- каркас шлюза CRM.
- Контрольная точка: проходят AC-020..023, SSO работает между gsso-console + gregistry + glog, предоставлены CAP-GSSO-03, 06 и 07.
- Производственный перенос под управление (takeover) действующего Keycloak (отчёт 04 §11.1) с одобрения владельца и в окно обслуживания.
- Принять под управление (adopt) realm
interdictii, затем решить Q-GSSO-1.
- Мигрировать приложения паттерна A (interdictii, gdocs, gnotify) и паттерна C (drumuri: персонал — в
gstack, MPass — в cetatean). Затем gstorage (realm gstorage → gstack), cancelarie, platform и gportal.
- Вывести из употребления
ROLE_ADMIN; после миграции удалить устаревшие realms (gdocs, gnotify, gstorage, ultra).
- Создать realms
tenant-* для whitelabel-сайтов.
- Контрольная точка: AC-030; ни одно приложение не выпускает токены и не хранит локальные пароли; общий realm содержит только платформы
gstack.
- Кампании пересмотра доступа (access review).
- Правила разделения обязанностей (segregation of duties).
- Отчёт о неактивных учётных записях.
- Вход с другого устройства по QR-коду в виде аутентификатора Keycloak для gsso_mob.
- Magic link.
- Keycloak Organizations.
gsso-cli или Terraform для подключения через CI.
- Доработка Helm chart для production (HA Keycloak).
- Вход с учётом риска (только на основе правил, GSSO-ADR-014).
MVP — это S0 + S1 + дашборд, события и grants из S2, работающие локально и на демонстрационном хосте с локальным или staging Keycloak (не production). Демонстрируется следующим:
- 6 экранов дизайна (Dashboard, Realms, Applications, Users с drawer, Roles, Authentication), а также Platforms, Grants и Sync — на RO/RU/EN.
- Регистрация платформы с клиентами и ролями, которые затем появляются в Keycloak.
- Запрос, одобрение и отзыв назначения доступа, видимые в токене пользователя и в событиях.
- Расхождение (drift), внесённое вручную в Keycloak, обнаруживается и исправляется.
- SSO между консолью GSSO и одним примером приложения.
| # | Риск | Влияние | Меры по снижению |
|---|
| R1 | Перенос под управление действующего Keycloak нарушает вход во все приложения | Высокое | Та же версия, резервная копия базы данных, сначала замена только образа, откат = предыдущий образ, окно обслуживания, одобрение владельца |
| R2 | Изменения Keycloak Admin API или SPI при обновлениях | Среднее | Зафиксирована версия 26.6.x; набор IT-тестов служит контрольной точкой для обновлений (NFR-OPS-004); адаптер изолирован в KeycloakAdminGateway |
| R3 | Reconciler удаляет объекты, созданные вручную | Высокое | Маркер gsso.managed; неуправляемые объекты никогда не удаляются; IGNORE для принятых под управление realms; прогоны в режиме dry-run |
| R4 | Realm gstack — единая точка отказа для всех приложений персонала | Высокое | HA Keycloak в целевой архитектуре; вход не зависит от GSSO, Kafka или GLog (NFR-AVL-003) |
| R5 | Миграция приложений паттерна A идёт медленнее запланированного | Среднее | Псевдонимы ролей в starter; старый клиент сохраняется параллельно в течение одного релиза; по одному приложению за раз |
| R6 | Продление TLS на демонстрационном хосте всё ещё не работает | Высокое | Исправить до S4; оповещение об истечении сертификата (NFR-AVL-006) |
| R7 | Задержка доступа к production MPass | Среднее | Mock IdP; production cetatean ожидает его (Q-GSSO-8) |
| R8 | Шаги одобрения замедляют работу администраторов | Низкое | Прямые назначения для нечувствительных ролей, пакеты (bundles), массовое одобрение |
| R9 | Утечка секретов из заметок в открытом виде | Высокое | Ротация всех секретов клиентов и паролей администраторов в ходе takeover; только хранилище секретов |
| R10 | Нехватка памяти на общем демонстрационном хосте | Среднее | Бюджет памяти (отчёт 04 §8.1), Kafka опционально (общий кластер, если доступен) |
| Зависимость | Требуется для | Статус |
|---|
| Keycloak 26.6.3 (действующий) | Takeover, adoption | Работает |
| Кластер Kafka | События, отзыв | Общий кластер запланирован; пока — локальный одиночный брокер |
| GLog | Пересылка аудита | Работает; GSSO требуется клиент gsso-glog с audit:write |
| GNotify | Уведомления, оповещения | Работает; OIDC отключён, поэтому S4 его включает |
Пакеты GDS @gstack/gds-angular, @gstack/gds-core | Консоль, темы | Опубликованы (GitLab npm project 581) |
| Тестовая среда MPass | cetatean | Ожидается (Q-GSSO-2) |
| AD/LDAP учреждения | Федерация | Ожидается (Q-GSSO-3) |
Пограничный nginx + DNS gsso.gstack.esempla.systems | Демонстрационное развёртывание | Требуется одобрение владельца |
- Текст EN имеет преимущественную силу. Переводы RO и RU содержат заголовок
Translated from EN rev.
- Изменения вносятся путём ревизий, без перенумерации.
- Контрольные точки фаз проверяет тимлид. Действия в production (S4) каждый раз требуют явного одобрения владельца.