Skip to content

Cerințe Universale GovStack (catalog `CU-*`)

Sursa de adevăr transversală. Orice aplicație GovStack le moștenește implicit prin anexa tehnică comună (skill parti-comune). Caietul de sarcini specific nu le rescrie — doar le referențiază, le parametrizează sau notează abateri justificate.

  • ID: CU-<DOMENIU>-NNN (stabil, nu se reutilizează după retragere).
  • Nivel: MUST (obligatoriu) / SHOULD (recomandat puternic).
  • Stack implicit: Angular, ASP.NET Core / Java Spring Boot, PostgreSQL, Elasticsearch, Redis, RabbitMQ, Kubernetes, GitLab CI/CD.

IDCerință (nivel)Criteriu de verificare (testabil)Mapare
CU-SEC-001Tot traficul extern și intern de servicii pe TLS ≥ 1.2 (MUST)scan TLS: HTTP redirecționat la HTTPS; cifruri slabe respinseIngress/WAF, mesh
CU-SEC-002Secretele NU în cod/repo; doar în secret store (MUST)scan repo fără secrete; secrete din K8s Secrets/VaultGitLab CI, K8s
CU-SEC-003Validare input pe server + protecție OWASP Top 10 (MUST)teste injection/XSS/CSRF negative trecAPI
CU-SEC-004Gestiune vulnerabilități: scan dependențe + imagini la fiecare build (SHOULD)pipeline blochează CVE critice neacceptateGitLab CI, registry
CU-SEC-005Rate limiting & protecție abuz pe API publice (SHOULD)test depășire prag → 429WAF/API gateway
IDCerință (nivel)Criteriu de verificareMapare
CU-AUTH-001Autentificarea cetățeanului/funcționarului prin MPass (MUST)flux E2E login cu cont de test MPassMPass
CU-AUTH-002Semnătura electronică prin MSign unde e nevoie de act semnat (MUST)document semnat validabilMSign
CU-AUTH-003Sesiuni cu expirare + revocare; token-uri scurte + refresh (MUST)sesiune expiră; token revocat → 401API
IDCerință (nivel)Criteriu de verificareMapare
CU-RBAC-001Acces pe bază de roluri; deny-by-default (MUST)acțiune fără rol → 403API
CU-RBAC-002Roluri & permisiuni configurabile (nu hardcodate) (MUST)adăugare rol fără re-deployAdmin
CU-RBAC-003Separarea atribuțiilor pentru acțiuni sensibile (4 ochi) (SHOULD)acțiune critică cere a doua aprobareBusiness
IDCerință (nivel)Criteriu de verificareMapare
CU-AUDIT-001Orice acțiune cu efect (creare/modificare/ștergere/aprobare) jurnalizată: cine, ce, când, de unde (MUST)acțiune → înregistrare audit imutabilăDB audit/append-only
CU-AUDIT-002Jurnalul de audit este imutabil și păstrat conform retenției legale (MUST)tentativă de modificare respinsăstorage WORM/append
CU-AUDIT-003Audit consultabil/filtrabil de rolurile autorizate (SHOULD)căutare audit după user/perioadăUI admin
IDCerință (nivel)Criteriu de verificareMapare
CU-OBS-001Logs structurate (JSON) cu correlation-id per cerere (MUST)log cu trace-id propagat între serviciilogging stack
CU-OBS-002Metrici expuse (RED/USE) + dashboard (MUST)endpoint /metrics; dashboard livePrometheus/Grafana
CU-OBS-003Tracing distribuit pe căile critice (SHOULD)trace E2E vizibilOpenTelemetry
CU-OBS-004Alerte pe SLO-uri (erori, latență, saturare) (SHOULD)prag depășit → alertăAlertmanager
IDCerință (nivel)Criteriu de verificareMapare
CU-CACHE-001Cache pentru citiri costisitoare/frecvente, cu TTL explicit (SHOULD)hit-rate măsurat; TTL configurabilRedis
CU-CACHE-002Invalidare la scriere (fără date învechite vizibile) (MUST)după update, citirea reflectă noul statRedis
CU-CACHE-003Degradare grațioasă dacă cache-ul cade (MUST)Redis down → aplicația merge (mai lent), fără erori 5xx în masăApp
IDCerință (nivel)Criteriu de verificareMapare
CU-SEARCH-001Indexare asincronă; sursa de adevăr rămâne în DB (MUST)după scriere, indexul se actualizează ≤ N sES + RabbitMQ
CU-SEARCH-002Reindexare reproductibilă (rebuild din sursă) (MUST)rebuild index → rezultate consistenteES
CU-SEARCH-003Căutare cu i18n (RO/RU), paginare, filtrare, sortare (SHOULD)căutare diacritice RO + chirilice RUES analyzers
IDCerință (nivel)Criteriu de verificareMapare
CU-DOCS-001Documentele în object storage (S3-compatibil), nu în DB/FS local (MUST)upload/download via storage; pod efemerS3/MinIO, MDocs
CU-DOCS-002Scanare antivirus la upload; tipuri/limite validate (MUST)fișier infectat respinsAV scanner
CU-DOCS-003Acces la documente controlat de RBAC + URL-uri semnate/expirante (MUST)link expiră; acces fără drept → 403storage + API
CU-DOCS-004Retenție & ștergere conform legii (SHOULD)politică de retenție aplicatăstorage lifecycle

INTEROP / API / MSG — Integrări externe & contracte

Section titled “INTEROP / API / MSG — Integrări externe & contracte”
IDCerință (nivel)Criteriu de verificareMapare
CU-INTEROP-001Schimbul de date între instituții prin MConnect, nu punct-la-punct (MUST)diagrama integrare + contracte de dateMConnect
CU-INTEROP-002Notificări către cetățean prin MNotify; plăți prin MPay (unde e cazul) (SHOULD)notificare/plată E2E cu cont testMNotify/MPay
CU-API-001API REST versionat, documentat OpenAPI, contracte stabile (MUST)spec OpenAPI publicată; teste de contractAPI
CU-API-002Idempotență pe operații de scriere expuse extern (MUST)retry → fără efect dubluAPI
CU-MSG-001Comunicare async via RabbitMQ cu retry + dead-letter (SHOULD)mesaj eșuat → DLQ, fără pierdereRabbitMQ
CU-API-003Structură URL standard api/v{N}/<zonă> cu zone public/citizen/staff/admin/app (MUST)toate căile respectă structura (audit)API standard
CU-API-004Endpoint-uri operaționale standard /health/live, /health/ready, /metrics, /info, /api/v1/openapi.json (MUST)endpoint-urile există și au formatul standardAPI standard
CU-API-005Erori RFC 7807, paginare/filtrare/corelare standard, deprecare via Sunset (MUST)răspuns de eroare conform problem+jsonAPI standard
CU-API-006Conformitatea cu Standardul API e verificată periodic + în CI; abaterile → issue + propuneri (MUST)audit rulează în CI și pe cadență; raport generatapi-governor
IDCerință (nivel)Criteriu de verificareMapare
CU-DATA-001Migrări de schemă versionate, reluabile, fără downtime (expand/contract) (MUST)migrare aplicată/rollback în CIFlyway/Liquibase/EF
CU-DATA-002Backup automat + restore testat periodic (MUST)restore reușit într-un mediu de testDB ops
CU-DATA-003Integritate referențială + tranzacții pe operații compuse (MUST)operație parțială → rollbackDB
IDCerință (nivel)Criteriu de verificareMapare
CU-PD-001Temei legal + minimizare; doar datele necesare (MUST)registru prelucrări; câmpuri justificateLegal
CU-PD-002Drepturile persoanei (acces, rectificare, ștergere) suportate (SHOULD)cerere de ștergere onoratăApp
CU-PD-003Cifrare la repaus pentru date sensibile + control acces strict (MUST)date sensibile cifrate; acces auditatDB/storage
IDCerință (nivel)Criteriu de verificareMapare
CU-I18N-001Interfețe și mesaje în RO și RU; fără stringuri hardcodate (MUST)comutare limbă în UI; fără text fixAngular i18n
CU-A11Y-001Conformitate WCAG 2.1 AA pe fluxurile principale (SHOULD)audit axe-core fără erori criticeFrontend

PERF / AVAIL — Performanță & disponibilitate

Section titled “PERF / AVAIL — Performanță & disponibilitate”
IDCerință (nivel)Criteriu de verificareMapare
CU-PERF-001Țintă implicită: p95 < 500 ms la încărcarea nominală (parametrizabil în caiet) (SHOULD)test de încărcare confirmă pragulApp
CU-AVAIL-001Disponibilitate țintă 99,5%/lună; fără SPOF pe căile critice (SHOULD)min. 2 replici; test de cădere a unei repliciK8s
IDCerință (nivel)Criteriu de verificareMapare
CU-DEPLOY-001Pipeline GitLab CI/CD: build→test→scan→deploy; promovare pe medii (dev→staging→prod) (MUST)pipeline verde gatează deploy-ulGitLab CI
CU-DEPLOY-002Deploy fără downtime (rolling/blue-green) + rollback rapid (MUST)update fără 5xx; rollback < N minK8s/ArgoCD
CU-DEPLOY-003Config prin variabile/Secrets, imagini imutabile, semnate (SHOULD)aceeași imagine pe toate mediileregistry
CU-K8S-001Containerizat; liveness/readiness probes; limite resurse (requests/limits) (MUST)pod nesănătos scos din rotațieK8s
CU-K8S-002Stateless unde e posibil; starea în servicii dedicate (DB/Redis/ES/S3) (MUST)restart pod fără pierdere de dateK8s
CU-K8S-003Autoscalare orizontală pe metrici (HPA) (SHOULD)încărcare ↑ → replici ↑K8s HPA

Promovarea unui candidat din vault/2-structurat/candidates/ în acest catalog se face cu aprobarea govstack-architect/teamlead și primește un ID CU-* stabil.