Skip to content

Sikkerhet og personvern ​

Lumi har blant annet maskering av personopplysninger, grenser for hvor mange kall API-et tar imot, validering av inndata og tilgang i dashboardet avgrenset til team. Det reduserer risikoen, men dere har fortsatt ansvaret for å unngå personopplysninger i surveyen og konteksten. Hva det innebærer, står i bruksvilkårene.

PII-maskering ​

API-et maskerer kjente mønstre for personlig identifiserbar informasjon (PII) i fritekstsvar og utvalgte kontekstfelt. Maskeringen er mønsterbasert og garanterer ikke at alle personopplysninger blir fanget opp. Navn og vanlige adresser maskeres ikke. Fødselsnummer maskeres bare når kontrollsifrene er gyldige, og telefonnummer bare når de har åtte sifre og starter med 2–9.

MønsterEksempelErstatning
Fødselsnummer01020349294[FØDSELSNUMMER FJERNET]
Nav-identA123456[NAVIDENT FJERNET]
E-posttest@nav.no[E-POST FJERNET]
Telefonnummer987 65 432[TELEFON FJERNET]
Kortnummer1234-5678-9012-3456[KORTNUMMER FJERNET]
Kontonummer1234.56.12345[KONTONUMMER FJERNET]
Hemmelig adresse«hemmelig adresse»[HEMMELIG ADRESSE]

Hvor og når maskering skjer ​

FeltVed lagringVed lesingMerknad
Fritekstsvar (answers[].value.text)PII-mønstre maskeresPII-mønstre maskeres på nyttDet eneste feltet med dobbel maskering
context.urlPII-mønstre maskeres i path, query-parametere og fragmentIngen ekstra maskeringMaskeringen dekoder URL-verdier for å fange kodede mønstre
context.pathnamePII-mønstre maskeres etter URL-dekodingIngen ekstra maskeringSamle helst en statisk eller allerede renset path
context.tagsPII-mønstre maskeres i både nøkler og verdierIngen ekstra maskeringBruk bare verdier med få varianter, aldri identifikatorer
context.debugPII-mønstre maskeres rekursivt i nøkler og verdierIngen ekstra maskeringVises ikke i dashboardet eller eksporten
context.userAgentHTML fjernes, men PII-mønstre maskeres ikkeIngen ekstra maskeringSendes automatisk av widgeten og vises ikke i dashboardet eller eksporten
Surveydefinert metadata (surveyId, fieldId, spørsmålstekst/-beskrivelse og svaralternativenes ID/tekst)PII-mønstre maskeres ikkePII-mønstre maskeres ikkeVerdiene valideres, men må ikke inneholde personopplysninger. BigQuery-eksporten maskerer PII-mønstre i ID-ene og tekstene den tar med
Strukturerte svar (rating, valgte alternativ-ID-er og dato)PII-mønstre maskeres ikkePII-mønstre maskeres ikkeBruk bare svarverdier som ikke identifiserer personen

Dobbel maskering

Dobbel maskering gjelder bare fritekstsvar. Kontekstfeltene som er markert i tabellen, maskeres ved lagring, men får ingen ny PII-kontroll ved lesing.

Hvem som svarte ​

Lumi API lagrer ikke hvem som svarte. Tokenet fra appens backend brukes til å sjekke at kallet kommer fra en app med tilgang. En hash av brukerens ID holdes bare i minnet, for å begrense hvor mange svar én bruker kan sende inn. Nav-identen i tokenet fra interne apper lagres ikke.

Hvert svar lagres med team, app, tidspunkt og konteksten widgeten sender, som enhetstype, skjermstørrelse og user agent. I små brukergrupper kan dette til sammen gjøre det mulig å kjenne igjen hvem som har svart.

Lagringstid og sletting ​

  • Svar slettes automatisk når de er eldre enn tolv måneder. Jobben kjører én gang i døgnet og sletter opptil 500 svar. Kommer det over tid inn flere enn 500 svar i døgnet, kan svar bli liggende lenger enn tolv måneder.
  • Svar dere sletter i dashboardet, slettes fra databasen med en gang.
  • Surveydefinisjonen, altså spørsmålene og svaralternativene, slettes ikke automatisk.
  • Databasen sikkerhetskopieres hver natt etter Nais' standardoppsett, og sju sikkerhetskopier beholdes. Et slettet svar kan derfor finnes i sikkerhetskopiene i opptil sju døgn. I tillegg tar Nais en daglig katastrofekopi til et miljø utenfor Google Cloud.
  • Har dere satt opp BigQuery-eksport, har Lumi en kopi av svarene i teamets datasett. Sletter dere et svar i dashboardet, forsvinner det fra kopien innen noen minutter når kjøringen lykkes. Hvordan sletting, time travel og utløp virker der, står i Teamets ansvar.

Små utvalg i dashboardet ​

Dashboardet viser statistikk også når utvalget har 1–4 svar. Med så få svar kan ett enkelt svar gi store utslag, så tolk små utvalg varsomt.

Rate limiting ​

API-et begrenser antall kall på flere nivåer for å hindre misbruk:

KategoriGrenseBeskrivelse
Innsending100 req/minPer kaller-app
Innsending (per bruker)15 req/minPer hashet sluttbruker innenfor samme kaller-app
Analyse300 req/minPer kallende klient og bruker
Eksport30 req/minPer kallende klient og bruker
Endringer i BigQuery-eksport20 req/minPer kallende klient og bruker, i tillegg til grensen for analyse
Avvist eksportautentisering/-autorisasjon30 forsøk/minPer kilde-IP
Global10 000 req/minPer kilde-IP

I dev går innsendinger fra apper i tenanten trygdeetaten.no via lumi-submission-proxy. Da gjelder grensen for innsending for proxyen samlet, og grensen per bruker brukes ikke.

Slik telles analyse- og eksportkall

Gyldige kall telles per kallende klient og per pseudonymisert bruker. Eksportkall reserverer i tillegg en plass per kilde-IP før autentiseringen. Plassen gis tilbake når kallet er godkjent, mens avviste kall beholder den. Kilde-IP er socket-adressen til den som kaller. Forwarding-headere som X-Forwarded-For brukes ikke.

Inndatavalidering ​

Alle innsendinger valideres strengt i API-et før lagring. API-et sjekker lengde og format på alle relevante felt, krever https i URL-er, validerer formatet på pathname og begrenser størrelsen og dybden på debug-objektet.

Sender appens backend ugyldig payload, blir innsendingen avvist med en tydelig valideringsfeil før noe lagres. Oppsettet av backend står i Koble til backend.

Penetrasjonstest ​

Team SåPe, Navs interne team for sikkerhetstesting, gjorde en penetrasjonstest av Lumi i februar 2026. Det var en whitebox-test med gjennomgang av kildekoden i både backend og frontend.

Hovedresultat

Testen fant ingen sårbarheter med høy eller kritisk alvorlighetsgrad. Grunnleggende sikkerhetsmekanismer som autentisering og autorisasjon fungerer etter hensikten.

Ifølge rapporten beskytter Reacts automatiske escaping mot XSS, og Lumi har i tillegg tiltak mot CSV-injeksjon. Testen ga til sammen 5 funn: 2 med middels alvorlighetsgrad og 3 informasjonelle. Alle funnene var utbedret i mars 2026.

Etter testen ble blant annet inndatavalideringen i API-et strammet inn. Kontekstfelt blir nå HTML-sanert før lagring, og dashboardet viser bare gyldige https://*.nav.no-lenker som klikkbare.

Risiko- og sårbarhetsanalyse (ROS) ​

ROS-analysen for Lumi blir oppdatert ved vesentlige endringer.

Åpne ROS-analysen (krever Nav-innlogging).

Utviklet og driftet av Team eSyfo i Nav