Den gode filtrering
Basalt sikkerhedsprincip i STAR City
1. Forretningsmæssig kontekst
I DFDG skal information kun eksponeres til aftagere, der har ret til at se den.
Filtrering anvendes når:
En aftager ikke må kende til et objekts eksistens
En aftager må kende objektet, men kun dele af det
Retten til indsigt afhænger af:
Myndighedstype
Sikkerhedskontekst
Kontaktgruppe, f.eks. om borgeren er tilmeldt som værende dagpengemodtager
Medlemskaber, f.eks. a-kasse medlemskab
Endpoint
Kaldende system
Filtrering er dermed en informationssikkerhedsmekanisme.
Filtrering er ikke et spørgsmål om præsentation – det er et spørgsmål om adgang.
2. Grundprincipper
2.1 Filtrering er ikke forretningslogik
Forretningslaget arbejder altid på ufiltrerede data.
Filtrering:
SKAL ske efter query feature
SKAL ske udenfor forretningslaget
MÅ IKKE implementeres i forretningslogik
MÅ IKKE implementeres i repositories
MÅ IKKE implementeres via SQL-betingelser for adgang
SKAL unittestses - både for positive og negative scenarier
Dette sikrer:
Korrekt forretningsadfærd
Ensartet sikkerhed
Genbrugelige domænemodeller
2.2 Ansvar for filtrering
Filtrering er et tværgående sikkerhedslag, men:
Domæneobjekter har selv ansvaret for at kunne filtrere sig selv.
Det betyder:
Filtreringsregler defineres i domænemodellen
Domæneobjekter afgør selv:
Om de skal fjernes helt
Om de skal trimmes
Filtrering må ikke centraliseres i en ekstern service med domæneviden
Dette sikrer:
Høj kohæsion
Lokaliseret ansvar
At filtreringsregler følger domænelogikken
3. Teknisk implementering
Den tekniske implementering af filtrering er beskrevet i:
https://starwiki.atlassian.net/wiki/spaces/CITY/pages/2739666965
Denne side beskriver alene de forretningsmæssige og arkitektoniske principper.