Alle dokumenter

Tilgangsstyring

Oppdatert: 28. september 2026

Retningslinjen sier hvem som har tilgang til hva: brukerne i et meglerforetak, Verids egne folk i appen, og Verids folk i driftsverktøyene (Vercel, Neon, GitHub, Resend). Den sier også hvordan tilgang gis og fjernes. Det som er håndhevet i koden, peker på en fil. Det som er manuelt, står som manuelt.

Sist oppdatert: 28.09.2026.


1. Brukerne i meglerforetaket

Tilgangen følger medlemskap i et foretak (member.role). Rollene er definert i packages/auth/src/tilgang.ts.

RolleKanKan ikke
MeglerOpprette, lese og oppdatere saker. Kjøre søk. Lage rapport. Godkjenne egne saker uten avvik eller mistankeSlette saker. Godkjenne saker med avvik eller mistanke, eller andres saker. Se forbruk
HvitvaskingsansvarligAlt en megler kan, pluss godkjenne alle rapporter, se forbruk og styre medlemmerSlette foretaket
EierAlt en hvitvaskingsansvarlig kan, pluss slette foretaket—
  • Rettighetene sjekkes på serveren med auth.api.hasPermission før hver handling som endrer noe.
  • Retten til å slette saker finnes i rollene, men ingen handling i appen sletter en sak. Saker slettes bare av slettejobben.
  • Et foretak kan ikke slettes. Sletting er slått av i Better Auth (disableOrganizationDeletion i packages/auth/src/auth.ts), fordi sakene ellers ville blitt slettet med foretaket før fem år er gått.
  • Etter 10 feil passord på 15 minutter er adressen stengt resten av vinduet.
  • Den som oppretter foretaket, blir eier (OPPRETTERROLLE).
  • Det går bare an å invitere til megler eller hvitvaskingsansvarlig (INVITERBARE). Eierskap deles ikke ut i en invitasjon.
  • En invitasjon kan bare godtas med bekreftet e-postadresse (requireEmailVerificationOnInvitation i packages/auth/src/auth.ts).
  • Hver endring av medlemmer og roller logges i hendelse (apps/web/app/(innstillinger)/innstillinger/medlemmer/handlinger.ts).

Hvem styrer det: Foretaket selv. Hvitvaskingsansvarlig eller eier inviterer, endrer rolle og fjerner medlemmer. Verid gjør det ikke for dem.

2. Verids folk i appen

To plattformroller står i user.role (packages/auth/src/plattform.ts):

RolleKan
AdminSe alle foretak og brukere på /drift. Ta innsyn. Logge ut en brukers økter. Sende lenke for nytt passord
SuperadminAlt en admin kan, og gi eller fjerne plattformroller
  • En plattformrolle gir ingen tilgang til saker gjennom medlemskap.
  • Plattformtilgang krever bekreftet e-postadresse (harPlattformtilgang).
  • Vaktene leser rollen fra databasen, ikke fra sesjonen (apps/web/lib/drift.ts, krevDrift og krevSuperadmin).
  • Den siste superadminen kan ikke fjernes (settPlattformrolle i apps/web/lib/innsyn.ts).
  • Administrasjonsendepunktene i Better Auth er stengt over HTTP (hooks.before i packages/auth/src/auth.ts).

Innsyn er den eneste veien for Verid inn i et foretaks saker:

  • Krever en skriftlig grunn på minst fem tegn.
  • Varer høyst 30 minutter (INNSYN_MINUTTER). Tiden kan ikke forlenges.
  • Skrives i driftlogg *før* innsynet starter. Feiler loggen, skjer ikke innsynet.
  • Innsyn i en annen plattformbruker er stengt.
  • Under innsyn er disse handlingene stengt: godkjenne en rapport, sende en sak til kontroll, kontroll av person, kontrasignering og å sende en melding om mistenkelig forhold til Økokrim (apps/web/app/(app)/saker/[id]/kontroll-handlinger.ts, apps/web/app/(app)/saker/[id]/okokrim/handlinger.ts).
  • Brukeren ser innsynene på sin egen konto på /innstillinger/sikkerhet.

Nødutgang: pnpm --filter @workspace/db plattformrolle <epost> <rolle> setter en rolle direkte i databasen, og logger det i driftlogg med «skript» som aktør (packages/db/scripts/plattformrolle.ts). Den krever databasenøkkelen, se punkt 3.

3. Verids folk i driftsverktøyene

Denne tilgangen er utenfor appen og styres i hver leverandørs konsoll. Den er ikke håndhevet eller logget i repoet.

VerktøyHva tilgangen girHvem i dag (ikke kontrollert mot konsollen)
VercelUtrulling, miljøvariabler (alle hemmeligheter), driftslogger, Blob-arkivetGrunnleggeren
NeonHele databasen, inkludert all saksdataGrunnleggeren
GitHubKildekoden. En push til main rulles ut i produksjonGrunnleggeren
ResendUtsendt e-post og domeneoppsettGrunnleggeren
Samarbeidsportalen (Digdir)Maskinporten-klienten og den offentlige nøkkelenGrunnleggeren
  • Hemmelighetene ligger som miljøvariabler hos Vercel. Listen står i .env.example, uten verdier. .env* er utelatt fra git (.gitignore).
  • Skriptene i packages/db/scripts/ leser nøklene fra .env.local på utviklerens maskin. Den som har den filen, har databasetilgang.
  • Tilgang gis bare til personer som trenger den for jobben, og på den laveste rollen leverandøren tilbyr som dekker jobben.

4. Når noen slutter

En megler slutter i et foretak (foretaket gjør dette):

  1. Hvitvaskingsansvarlig eller eier fjerner medlemmet på /innstillinger/medlemmer. Sakene blir igjen hos foretaket.
  2. Det aktive foretaket nullstilles i alle personens sesjoner for det foretaket (fjernMedlem i apps/web/app/(innstillinger)/innstillinger/medlemmer/handlinger.ts). Hurtigbufferet kan holde tilgangen åpen i inntil 5 minutter (punkt 5).

En person hos Verid slutter (Verid gjør dette, manuelt):

  1. Fjern plattformrollen på /drift/tilgang.
  2. Logg ut personens økter fra /drift/brukere/<id>.
  3. Fjern personen fra Vercel, Neon, GitHub, Resend og Samarbeidsportalen.
  4. Bytt hemmelighetene personen kan ha sett (se kryptering-og-nokler).
  5. Skriv ned hva som ble gjort og når.

5. Tilbakekalling av økter

  • En bruker kan logge ut egne økter på /innstillinger/sikkerhet. Bytte av passord logger ut alle andre økter (apps/web/app/(innstillinger)/innstillinger/_deler/konto.ts).
  • Drift kan logge ut alle økter for en bruker (loggUtOkter i apps/web/lib/innsyn.ts). Handlingen står i driftlogg.
  • En tilbakekalt økt kan virke i inntil 5 minutter, på grunn av hurtigbufferet i informasjonskapselen (cookieCache i packages/auth/src/auth.ts).

6. Gjennomgang

Plattformrollene står på /drift/tilgang. Listen skal gås gjennom når noen begynner eller slutter hos Verid.


Gjenstår

MangelRisikoPlan
Tilgangen til Vercel, Neon, GitHub, Resend og Samarbeidsportalen er ikke listet eller gjennomgått skriftligIngen kan vise hvem som har tilgang i dagFør en liste med navn, rolle og dato, og gå den gjennom hvert kvartal
Det er ikke dokumentert om totrinnsinnlogging er på hos leverandørene. I appen finnes den ikkeEt lekket passord gir full tilgangKrev totrinn på alle leverandørkontoer. Legg til twoFactor i appen
Produksjonsnøkler ligger i .env.local på utviklerens maskinEn stjålet maskin gir databasetilgangEgen databasebruker med lesetilgang for skript, eller hent nøklene ved behov
Ingen fast rutine for gjennomgang av plattformrollerGlemte roller blir liggendeGjennomgang hvert kvartal, med dato i dette dokumentet