RBAC · Role-Based Access Control

Cine vede, cine operează,
cine aprobă.

Accesul efectiv se evaluează pe combinația Tenant + Role + Scope + Permission. Tenant isolation strictă, least privilege, separation of duties, auditability. Orice acțiune write este verificată server-side și lasă audit event.

Rolurile sistemului

Cinci roluri operaționale principale.

Catalogul de roluri este definit la nivel de seed și este read-only în v1 — fără editor de roluri, pentru control.

OA

OPS Admin

Administratorul complet al aplicației. Singurul cu permisiunea admin și acces la Admin Console: tenants, users, role catalog, assignments, permissions matrix, audit, import, file storage.

admin
OO

OPS Operator

Proprietarul operării. Creează & configurează promoții, pornește workflow-uri (Approval, Live Ops), gestionează alerte, închide promoții, capturează lecții. Nu are implicit atlas.manage sau promote_to_atlas.

create · edit · resolve · escalate
BV

Beneficiary Viewer

Acces view-only, limitat la propriul tenant și, ideal, la promoțiile asignate. Rule Corpus complet este hidden. Orice scriere → 403.

view · scoped
AM

Atlas Manager

Promovare lecții, regenerare instantiations, import artefacte, atașare DOC-1 templates. Gestionează corpusul fără a fi OPS Admin.

atlas.manage · promotion.import
DO

Doctrine Owner

Editor de doctrină: valorizează lecții, întreține rule corpus, validează promovarea în Atlas. Permisiunea cheie: promote_to_atlas.

promote_to_atlas
Roluri adiacente (Workflow & Tenant): Business Owner, Operations Owner, Risk / Doctrine Owner, Data Owner, DPO / Legal Counsel, Fulfilment Owner, Customer Support Owner, Finance Owner, Beneficiary Approver, Beneficiary Auditor, OPS Auditor. Acestea se atribuie prin Assignments (user × tenant × rol × scope).
Matricea de permisiuni

Cine ce poate face în fiecare modul.

Read-only în v1. Verifici, de exemplu, că doar OPS Admin deține permisiunea admin.

Modul OPS Admin OPS Operator Doctrine Owner Atlas Manager Beneficiary Viewer OPS Auditor
DashboardMV / EVVV scopedV
IntakeMEVV scopedV
ConfigurationMEV / E riscV scopedV
ApprovalMEA Risk / DoctrineV scopedV
Live OpsMEVV scopedV
ClosureMEV / E overridesV scopedV
LearningMEEVhidden / limitedV
Atlas InboxMV / EEMV scoped limitedV
Rule CorpusMVV / EMhiddenV
ArtifactsMV / E scopedVMV scoped onlyV
Admin ConsoleM

Legendă: V view E edit / operate A approve / reject M manage / admin fără acces

Modelul de acces

Tenant + Role + Scope + Permission.

Patru dimensiuni evaluate la fiecare cerere. Server-side. Cu audit event la fiecare scriere.

TENANT

Izolare strictă

Tipuri: ops, beneficiary, partner. Un beneficiar nu vede obiectele altui tenant.

ROLE

Catalog read-only

System, Workflow, Tenant, Audit. Definite la seed; fără editor de roluri în v1.

SCOPE

Limitare la obiecte

Tipuri: global (doar OPS Admin), tenant, promotion, module, artifact.

PERMISSION

Verb explicit

view · create · edit · delete · assign · approve · reject · start_workflow · resolve · escalate · override · promote_to_atlas · import · export · admin.

Audit & Sessions

Tot ce e write este atribuit și auditat.

Audit-ul nu este negociabil. Sesiunile sunt pe server, cu hash SHA-256 al token-ului în DB.

EVENT

Atribuit complet

Fiecare audit event conține userId, tenantId, roleId, permission, objectType, objectId, before/after dacă există, timestamp. Vizibilitate: internal / tenant_visible / public_summary.

VIEWER

Plafon 500 rânduri / query

GET /api/admin/audit-events — filtrabil pe acțiune. Read-only, fără export/full-text în v1.

SESIUNE

12h implicit

Cookie __Host-pg4_session în producție (Secure, doar TLS). Rotație SESSION_SECRET invalidează sesiunile.

REVOKE

My Sessions + Admin

Orice user își vede & revocă propriile sesiuni (mai puțin cea curentă — Logout). OPS Admin are revoke individual & revoke-all pentru fiecare user.