Hvad er en Tenant Owner

1. Hvad er en Tenant Owner?

TesseraCMS har et 3-niveau rolle-system designet til SaaS-multi-tenant-drift. Hver rolle har et klart afgrænset scope og et klart sæt af handlinger den kan udføre.

De tre roller

Rolle Scope Kan
Platform Admin Globalt Alle tenants' admin, opret/slet tenants, tildel Tenant Owners, alt en Tenant Owner kan + audit-logs på tværs
Tenant Owner Per tenant Egen tenants admin, redigér content, tildel både Owner + Editor til andre brugere på egen tenant, fjerne brugere (undtagen sidste Owner)
Editor Per tenant Egen tenants admin, redigér content. Ingen user-mgmt, ingen tenant-settings

Hvor rollen kommer fra

Der er to forskellige storage-mekanismer:

Platform Admin

Lever som en AAD app-role på TesseraCMS-applikationen i Microsoft Entra ID. Tildeles én gang i Azure-portalen og bekymrer sig ikke om TesseraCMS' egen storage. Globalt og uafhængigt af tenant-data — også når storage er nede.

Tenant Owner + Editor

Lever i en custom Azure Table Storage-tabel kaldet TenantRoles:

PartitionKey: tenant-slug ("palle_jacobsen")
RowKey:       user-object-id (AAD oid claim)
Fields:       role, displayName, email, isGuest, assignedBy, assignedAt

Tildeles dynamisk via admin-UI uden Azure-runde. Dette gør tenants reelt self-managing — du behøver ikke kontakte Platform Admin hver gang du vil tilføje en editor.

Designprincipper

Mindste privilegier

Editor er content-only; Tenant Owner styrer egen tenant uden at se andre; Platform Admin er platform-wide. Hver rolle får kun de privilegier den behøver til sin opgave.

Fuld delegation

Tenant Owner kan tildele Owner — modsat en model hvor kun Platform Admin kan promote. Dette gør tenants reelt self-managing: du kan invitere en kollega som co-owner uden at involvere os.

Sidste-Owner-invariant

Pr. tenant skal der altid være ≥ 1 Owner. UI + backend afviser fjernelse hvis det ville bryde invarianten. Dette beskytter mod "lock yourself out"-scenariet hvor en tenant ender uden nogen der kan styre brugere.

Audit-trail er obligatorisk

Alle rolle-changes logges i RoleAuditLog-tabellen. Bruges både til debugging ("hvem fjernede mig?") og compliance.

Audit-trail

Hver rolle-ændring opretter en entry i RoleAuditLog:

  • Hvem lavede ændringen (actor object-id + email)
  • Hvem blev ramt (target object-id + email)
  • Hvilken handlingassigned, changed, removed
  • Fra hvilken rolle → til hvilken rolle (eller null hvis tilføjelse/fjernelse)
  • Hvornår (ISO-timestamp)

Logen er append-only — entries kan ikke ændres eller slettes via UI. Du kan se de seneste 20 entries på /{tenant}/admin/users (kun synlig for Owners).

Platform Admin kan query'e log på tværs af tenants. Det giver os mulighed for at debug "hvorfor kunne X ikke logge ind sidste uge" uden at gætte.

Hvad du IKKE kan som Owner

  • Oprette nye tenants — kun Platform Admin
  • Slette tenants — kun Platform Admin (og kun med danger-zone confirm)
  • Se andre tenants' data — du er fuldt isoleret
  • Promote dig selv til Platform Admin — den rolle tildeles via Azure-portalen (uden for vores admin-UI)
  • Bypass last-Owner invariant — selv som Owner kan du ikke fjerne den sidste owner

Hvis du har brug for noget af ovenstående, kontakt os (Platform Admin).