| |
|---|
| Cod document | SPEC-GSSO-2026 / Raportul 05 |
| Versiune | 0.1-draft (sursa EN, text care prevalează) |
| Data | 2026-10-05 |
| Statut | Proiect |
| Rapoarte însoțitoare | 00 RFP · 01 ADR · 02 Cerințe · 03 Consumatori și contract · 04 Documentație tehnică |
| Versiune | Data | Modificări |
|---|
| 0.1-draft | 2026-10-05 | Fazele S0–S5, MVP, riscuri, dependențe |
| Etapa consumatorului | Ce necesită de la GSSO | Faza GSSO |
|---|
| CRM F0 (fundația) | CAP-GSSO-01: realm-ul gstack, crm-gateway, clienți de serviciu, locale, sub de tip UUID | S1 |
| CRM F1+ / gDocFlow / gTenders | CAP-GSSO-03, 07 (sesiuni, token exchange) | S3 |
| gFlow G1 | interogarea rol → utilizatori, principali de serviciu per aplicație | S3 |
| gInsight (amânat) | claim-urile org_unit (CAP-GSSO-04) | S2 |
| Consolidarea aplicațiilor existente | Eliminarea modelelor A/C | S4 |
Fiecare fază se încheie cu o poartă. În faza S0 nu se poate începe scrierea codului până când ADR-urile din raportul 01 nu sunt Acceptat (DEV-PLAYBOOK §4).
- Se creează depozitul
govtech/gstack/gsso, CLAUDE.md, gsso.jdl și test-scenarios.md și se acceptă ADR-urile.
keycloak/:
- un Dockerfile pe 26.6.3;
- configurațiile de bază
gstack, cetatean și tenant-template prin keycloak-config-cli;
- tema GDS de autentificare în RO/RU/EN.
Modulul de extensii este doar un schelet în această fază.
deploy/docker-compose.yml cu Keycloak, două baze de date PostgreSQL și Kafka; docker-compose.test.yml.
- Generarea JHipster 9.1.0 a
gsso și gsso-gateway; scheletul gsso-web pe GDS, cu bara laterală și i18n. Versiunile sunt fixate.
- Poartă: AC-001 și AC-002 trec local, ADR-urile sunt acceptate, iar
/gsast este curat.
- Realm-uri (registru, creare din șablon, comutator, limitare a vizibilității, adoptare în dry-run).
- Platforme, clienți, roluri, clienți de serviciu în masă și mapper-e de audiență.
- Utilizatori: listă, creare/invitare, editare, activare/dezactivare, credențiale, sesiuni, deblocare, proiecție.
- Reconcilierea: joburi outbox, worker, reîncercare, reconciliere completă, drift
REPORT/ENFORCE, ecranul de sincronizare.
- Evenimentele proprii GSSO doar cu adăugare, încă fără ingestie din Kafka.
- Ecranele din design Realm-uri, Aplicații, Utilizatori (panou lateral), Roluri și Sincronizare.
- Poartă: AC-003..009, 026, 027 (parțial) și 028 trec. CAP-GSSO-01 este livrat local și în staging.
- Atribuiri: ciclul de viață, principiul „patru ochi”, inbox-ul, expirarea și notificările, pachetele, unitățile organizaționale și rolurile limitate.
- Event listener-ul Keycloak
gsso-kafka, consumatorul, lanțul de hash-uri, redirecționarea către GLog, completarea retroactivă (back-fill) și tabloul de bord (KPI, autentificări în 24 h, evenimente, mixul metodelor de autentificare).
- Politici de autentificare: ecranul metodelor, MFA condiționat de rolul sensibil, federarea LDAP, brokerul mock MPass în
cetatean și branding-ul.
- Publicatorul de revocări și raportul de acces.
- Poartă: AC-010..019, 024, 025 trec. CAP-GSSO-02 și 04 sunt livrate.
gsso-spring-boot-starter și @gstack/gsso-angular.
api/v1/app (autoînregistrare, căutări, roluri, sesiuni, cereri de atribuire).
- Permisiunile de token exchange.
- Aplicația de exemplu și runbook-ul de conectare.
- Aplicațiile pilot:
- gregistry (modelul B): trece pe
gstack și pe starter;
- glog: starter și scope-uri, iar GSSO devine client de ingestie;
- scheletul gateway-ului CRM.
- Poartă: AC-020..023 trec, SSO funcționează între gsso-console + gregistry + glog, iar CAP-GSSO-03, 06 și 07 sunt livrate.
- Preluarea în producție a Keycloak-ului activ (raportul 04 §11.1), cu aprobarea proprietarului și într-o fereastră de mentenanță.
- Se adoptă realm-ul
interdictii, apoi se decide Q-GSSO-1.
- Se migrează aplicațiile cu modelul A (interdictii, gdocs, gnotify) și modelul C (drumuri: personalul în
gstack, MPass în cetatean). Apoi gstorage (realm-ul gstorage → gstack), cancelarie, platform și gportal.
- Se retrage
ROLE_ADMIN; se șterg realm-urile perimate (gdocs, gnotify, gstorage, ultra) după migrare.
- Se creează realm-urile
tenant-* pentru site-urile whitelabel.
- Poartă: AC-030; nicio aplicație nu emite token-uri și nu păstrează parole locale; realm-ul partajat conține doar platforme
gstack.
- Campanii de revizuire a accesului.
- Reguli de separare a atribuțiilor (segregation of duties).
- Raportul conturilor inactive.
- Autentificarea QR cross-device ca authenticator Keycloak pentru gsso_mob.
- Magic link.
- Keycloak Organizations.
gsso-cli sau Terraform pentru conectarea din CI.
- Consolidarea pentru producție a chart-ului Helm (Keycloak HA).
- Autentificare bazată pe risc (doar pe bază de reguli, GSSO-ADR-014).
MVP-ul este S0 + S1 + tabloul de bord, evenimentele și atribuirile din S2, rulând local și pe gazda demo față de un Keycloak local sau de staging (nu de producție). Poate fi demonstrat prin:
- Cele 6 ecrane din design (Tablou de bord, Realm-uri, Aplicații, Utilizatori cu panou lateral, Roluri, Autentificare), plus Platforme, Atribuiri și Sincronizare, în RO/RU/EN.
- Înregistrarea unei platforme cu clienți și roluri, care apar apoi în Keycloak.
- O cerere de atribuire, aprobarea și revocarea ei, vizibile în token-ul utilizatorului și în evenimente.
- Un drift făcut manual în Keycloak, care este detectat și corectat.
- SSO între consola GSSO și o aplicație de exemplu.
| # | Risc | Impact | Atenuare |
|---|
| R1 | Preluarea Keycloak-ului activ blochează autentificarea în toate aplicațiile | Ridicat | Aceeași versiune, copie de rezervă a bazei de date, mai întâi doar înlocuirea imaginii, rollback = imaginea anterioară, fereastră de mentenanță, aprobarea proprietarului |
| R2 | Modificări ale Admin API sau ale SPI Keycloak la actualizări | Mediu | Versiune fixată 26.6.x; suita IT condiționează actualizările (NFR-OPS-004); adaptorul este izolat în KeycloakAdminGateway |
| R3 | Reconcilierea șterge obiecte create manual | Ridicat | Marcajul gsso.managed; obiectele negestionate nu sunt șterse niciodată; IGNORE pentru realm-urile adoptate; rulări de probă |
| R4 | Realm-ul gstack este un punct unic de defectare pentru toate aplicațiile personalului | Ridicat | Keycloak HA în arhitectura țintă; autentificările nu depind de GSSO, Kafka sau GLog (NFR-AVL-003) |
| R5 | Migrarea aplicațiilor cu modelul A este mai lentă decât s-a planificat | Mediu | Aliasuri de roluri în starter; clientul vechi păstrat în paralel pentru o versiune; câte o aplicație o dată |
| R6 | Reînnoirea TLS pe gazda demo este în continuare defectă | Ridicat | Corectare înainte de S4; alertă de expirare a certificatului (NFR-AVL-006) |
| R7 | Accesul la MPass de producție întârzie | Mediu | IdP mock; producția cetatean îl așteaptă (Q-GSSO-8) |
| R8 | Pașii de aprobare încetinesc administratorii | Scăzut | Atribuiri directe pentru rolurile nesensibile, pachete, aprobare în masă |
| R9 | Scurgerea secretelor din notițele în text clar | Ridicat | Rotirea tuturor secretelor de client și a parolelor de administrator în timpul preluării; doar un depozit de secrete |
| R10 | Presiune asupra memoriei pe gazda demo partajată | Mediu | Buget de memorie (raportul 04 §8.1), Kafka opțional (clusterul partajat, dacă este disponibil) |
| Dependență | Necesară pentru | Statut |
|---|
| Keycloak 26.6.3 (activ) | Preluare, adoptare | Rulează |
| Clusterul Kafka | Evenimente, revocare | Cluster partajat planificat; între timp, un broker local unic |
| GLog | Redirecționarea auditului | Rulează; GSSO are nevoie de un client gsso-glog cu audit:write |
| GNotify | Notificări, alerte | Rulează; OIDC dezactivat, așa că S4 îl activează |
Pachetele GDS @gstack/gds-angular, @gstack/gds-core | Consolă, teme | Publicate (proiectul npm GitLab 581) |
| Mediul de test MPass | cetatean | În așteptare (Q-GSSO-2) |
| AD/LDAP-ul instituției | Federare | În așteptare (Q-GSSO-3) |
nginx de margine + DNS gsso.gstack.esempla.systems | Implementarea demo | Necesită aprobarea proprietarului |
- Textul EN este cel care prevalează. Traducerile RO și RU poartă antetul
Translated from EN rev.
- Modificările se fac prin revizie, fără renumerotare.
- Porțile fazelor sunt revizuite de teamlead. Acțiunile de producție (S4) necesită de fiecare dată aprobarea explicită a proprietarului.