Den gode sikkerhed i applikationer
(Principper for identitet, autorisation, databeskyttelse og borgertilknytning i DFDG – Det Fælles IT-baserede Datagrundlag)
1. Formål og anvendelsesområde
Denne side fastlægger de styrende sikkerhedsprincipper for alle applikationer, services og forretningsdomæner i DFDG (Det Fælles IT-baserede Datagrundlag).
Retningslinjerne:
Gælder for alle miljøer (udvikling, test, produktion)
Gælder for alle integrationer (brugeradgang og system-til-system)
Er normative og skal efterleves
Skal kunne danne grundlag for intern og ekstern revision
Sikkerhedsprincipperne er risikobaserede og skal anvendes med udgangspunkt i dokumenteret risikovurdering.
Denne side skal læses i sammenhæng med:
https://starwiki.atlassian.net/wiki/spaces/CITY/pages/3745415178
https://starwiki.atlassian.net/wiki/spaces/WIKI/pages/2490387
https://starwiki.atlassian.net/wiki/spaces/CITY/pages/3745349766
https://starwiki.atlassian.net/wiki/spaces/CITY/pages/3745022002
https://starwiki.atlassian.net/wiki/spaces/CITY/pages/203128898
Hvor der er konflikt mellem denne side og overordnet sikkerhedspolitik, er politikken styrende.
2. Sikkerhed som forretningskrav
DFDG behandler personhenførbare data, herunder CPR-baserede opslag. Sikkerhed understøtter korrekt og lovlig myndighedsudøvelse.
Sikkerhedskrav udledes af:
Databeskyttelseslovgivning
Indbygget databeskyttelse (Privacy by Design) jf. https://starwiki.atlassian.net/wiki/spaces/WIKI/pages/2490387
Følgende principper er styrende:
2.1 Fortrolighed
Kun autoriserede personer og systemer må tilgå borgerdata.
2.2 Integritet
Data må ikke kunne ændres eller manipuleres uautoriseret.
2.3 Tilgængelighed
Autoriserede brugere og systemer skal have adgang, når forretningsbehovet kræver det.
2.4 Sikkerhed i flere uafhængige lag
Sikkerhed skal implementeres i flere uafhængige lag.
Kontroller i ét lag må ikke forudsætte korrekt funktion i et andet lag.
Identitet, autorisation, applikationslogik, platform og netværk skal hver især bidrage til den samlede beskyttelse.
Hvis ét lag kompromitteres, må øvrige lag fortsat begrænse skadeomfanget.
Sikkerhed vurderes samlet på tværs af lag.
3. Identitet (Autentifikation)
Autentifikation fastslår, hvem der tilgår systemet.
3.1 Brugervendte applikationer
Brugervendte applikationer skal anvende korrekt identitetsløsning afhængig af målgruppe.
Borgeradgang
Skal anvende MitID.
Autentifikation skal ske med den til enhver tid gældende nationale borgeridentitetsløsning.
Borgeridentitet må ikke forveksles med medarbejder- eller systemidentitet.
Sagsbehandler- og medarbejderadgang
Skal anvende MitID Erhverv.
Autentifikation skal kunne knyttes entydigt til medarbejder og juridisk enhed.
Rolle og organisatorisk tilknytning skal kunne indgå i autorisationsgrundlaget.
Fælles krav
Løsningen skal understøtte Single Sign-On (SSO).
Der skal anvendes stærk autentifikation.
3.2 System-til-system adgang (eksterne aftagere)
Eksterne aftagere af data fra DFDG skal autentificeres via OCES-certifikater.
Adgang skal ske via gyldigt OCES funktionscertifikat.
Certifikatet skal kunne knyttes entydigt til juridisk enhed.
Certifikatets gyldighed og status skal valideres ved hvert kald.
Certifikat alene giver ikke adgang til data (jf. autorisation).
3.3 Interne forretningsdomæner
Interne domæner skal understøtte token-baseret adgang.
Tokens skal være signeret og valideres ved hvert kald.
Claims skal verificeres før autorisation.
4. Autorisation og adgang til borgere
Autentifikation alene giver ikke adgang til data.
Autorisation er et selvstændigt og obligatorisk kontroltrin.
4.1 Overordnet princip
Autorisation skal ske før forretningslogik eksekveres.
Autorisation må ikke implementeres i UI eller ad hoc i domænelag.
Autorisation skal håndhæves centralt i API- eller pipeline-laget.
Least privilege-princippet skal anvendes.
4.2 Webservice-aftageres adgang til borgere
DFDG giver adgang til borgerdata via CPR-baserede opslag. Dette er en myndighedshandling og kræver dokumenterbar hjemmel.
Følgende skal være opfyldt:
Adgang til en borger må kun ske, hvis aftageren har lovlig hjemmel.
Adgang skal valideres pr. kald.
OCES-certifikat alene er ikke tilstrækkelig autorisation.
Autorisation skal baseres på:
Identitet
Rolle
Myndighedstilknytning
Konfigureret adgangspolitik
Systemet skal kunne dokumentere:
Hvilken myndighed eller juridisk enhed
Hvilken bruger eller systemidentitet
Hvilken borger (CPR)
Hvilket tidspunkt
Hvilken handling
Manglende autorisation skal:
Afvises
Logges
Kunne revideres
Adgangskontrol må ikke baseres på aftagerens egen erklæring om hjemmel.
5. Databeskyttelse
5.1 Kryptering
Al ekstern kommunikation skal ske over krypterede forbindelser.
Databasetrafik skal krypteres.
Administrationstilgang skal ske via krypterede kanaler.
5.2 Test- og udviklingsmiljøer
Testdata må ikke indeholde personhenførbare oplysninger uden kontrolforanstaltninger.
Scrambling skal ske i henhold til https://starwiki.atlassian.net/wiki/spaces/CITY/pages/203128898.
Scrambling skal som minimum omfatte:
Navn
Adresse
Kontaktoplysninger
Fritekstfelter
Adgangsoplysninger
Hvis CPR eller andre direkte personidentifikatorer anvendes i test- eller udviklingsmiljøer, gælder følgende:
Adgang skal ske via personligt login eller certifikat.
Adgang skal være begrænset efter least privilege.
Alle adgangsforsøg og dataopslag skal logges.
Miljøet skal sikkerhedsmæssigt behandles som et produktionsmiljø.
Dette indebærer, at miljøet er underlagt samme krav til:
Adgangskontrol
Kryptering
Logning
Patch management
Overvågning
Miljøer med CPR eller personhenførbare data må ikke klassificeres eller behandles som lavere sikkerhedsniveau end produktion.
6. Applikationssikkerhed
Applikationslaget udgør den største risiko for tab af fortrolighed, integritet og tilgængelighed.
Udvikling skal ske i overensstemmelse med:
https://starwiki.atlassian.net/wiki/spaces/CITY/pages/3745022002
Gældende secure coding-principper
6.1 Inputvalidering
Alt input skal valideres.
Der skal etableres beskyttelse mod SQL injection og XSS.
Data må ikke præsenteres uden rensning.
6.2 Sessionshåndtering
Sessionscookies skal være secure og httpOnly.
Sessioner skal have timeout.
Session IDs skal være uforudsigelige.
6.3 Hemmeligheder
Hardcoded passwords er forbudt.
Secrets må ikke lagres i klartekst.
Passwordkrav skal følge overordnet sikkerhedspolitik.
6.4 Kunstig intelligens og maskinlæring
Anvendelse af kunstig intelligens (AI), maskinlæring (ML) og generative modeller betragtes som en del af applikationslaget.
AI-komponenter skal behandles som sikkerhedskritiske softwarekomponenter.
AI må ikke implementeres uden forudgående risikovurdering.
6.4.1 Databeskyttelse ved AI
Hvis AI behandler personhenførbare oplysninger:
Behandlingsgrundlag skal være dokumenteret.
Dataminimering skal anvendes.
Produktionsdata må ikke anvendes til modeltræning uden særskilt godkendelse.
6.4.2 Modelstyring
Modelversion skal dokumenteres.
Modelopdateringer må ikke ske uden kontrol og godkendelse.
Automatisk opdatering af modeller er ikke tilladt uden eksplicit risikovurdering.
Modeller fra tredjepart skal have dokumenteret oprindelse.
6.4.3 Runtime-krav
AI-komponenter skal:
Køre i isoleret miljø.
Have begrænset adgang til interne systemer.
Have begrænset databaseadgang.
Have kontrolleret netværksadgang.
6.4.4 Logging
Følgende skal kunne dokumenteres:
Modelversion.
Input (i nødvendigt og lovligt omfang).
Output.
Tidsstempel.
Anvendt konfiguration.
Manglende sporbarhed betragtes som manglende sikkerhed.
7. Infrastruktur- og platformsikkerhed
Sikkerheden i applikationer og databaser er afhængig af den underliggende platform. Hvis platformen kompromitteres, kompromitteres hele løsningen.
Infrastruktur- og platformsikkerhed er derfor et centralt kontrolområde.
7.1 Operativsystem og platform
Operativsystemer skal være sikkert konfigureret.
Unødvendige services skal deaktiveres.
Patch management skal være etableret.
Sikkerhedsopdateringer skal implementeres rettidigt.
7.2 Databaseplatform
Applikationer må ikke anvende administrative databasebrugere (fx “sa”).
Brugerrettigheder skal tildeles efter least privilege.
Databasetrafik skal være krypteret.
Adgang til databaseadministration skal være begrænset.
Manglende konfigurationsmæssig sikring kan medføre uautoriseret direkte adgang til data.
7.3 Risikokæde
Sikkerhed skal implementeres nærmest data.
Hvis:
Platformen er sårbar
Databasen er forkert konfigureret
Applikationen mangler inputvalidering
… kompromitteres hele sikkerhedsmodellen.
Sikkerhed vurderes derfor samlet på tværs af lag.
7.4 Netværkssikkerhed
Adgang mellem komponenter skal begrænses til nødvendige forbindelser.
Netværkssegmentering skal anvendes.
8. Logging, overvågning og sporbarhed
Logging er et revisionskrav.
Følgende skal logges:
Loginforsøg
Adgang til borgerdata
Fejlede autorisationsforsøg
Administrative handlinger
Logs skal:
Være manipulationssikre
Opbevares iht. de gældende sikkerhedspolitikker.
Kunne fremlægges ved revision
Understøtte efterfølgende analyse og hændelseshåndtering
Skal opbevares adskilt fra applikationslaget
Manglende logning betragtes som manglende sikkerhed.
9. Ledelsens ansvar og godkendelse af sikkerhedsarkitektur
Sikkerhed i DFDG er et ledelsesansvar.
Ledelsen har ansvar for, at sikkerhedsarkitekturen er:
Risikobaseret
Lovmedholdelig
Dokumenteret
Implementeret
Sikkerhedsarkitektur må ikke ændres eller fraviges uden dokumenteret beslutning.
9.1 Godkendelseskrav
Følgende kræver ledelsesmæssig eller systemejer-godkendelse:
Overordnet identitets- og autorisationsmodel
Adgang til borgerdata
Integration med eksterne aftagere
Anvendelse af AI-komponenter
Væsentlige ændringer i sikkerhedskontroller
Godkendelse skal være dokumenterbar.
9.2 Risikoaccept
Afvigelser fra disse principper må kun ske efter:
Dokumenteret risikovurdering
Begrundet forretningsmæssigt behov
Eksplicit risikoaccept
Risikoaccept skal være tidsbegrænset.
Manglende godkendelse eller dokumentation betragtes som manglende styring.
10. Roller og ansvar
Sikkerhed er et fælles ansvar.
Systemejer
Har ansvar for, at sikkerhedskrav er defineret og efterleves.
Forretningsdomæneansvarlig
Har ansvar for korrekt implementering af autorisationsregler.
Udviklingsteams
Skal implementere sikkerhed i overensstemmelse med disse principper.
Drift
Har ansvar for platform-, database- og infrastruktur-sikkerhed.
11. Anti-patterns (må ikke forekomme)
Autorisation implementeret i UI
Certifikat = fuld adgang
Hardcoded secrets
Brug af administrative databasekonti
Manglende logning af borgeropslag
Adgang baseret på tillid fremfor validering