Der er tre tilgange, du kan tage:
- Gør det i appen
- Gør det mellem appen og db'en inde i en db-proxy
- Gør det inde i databasen
Den første mulighed ville ikke rigtig kvalificere som adgangskontrol på rækkeniveau, da applikationslogikken er den, der er ansvarlig for filtreringen/maskeringen. (Filtrering er adgangskontrol på rækkeniveau, mens maskering er celleniveau).
Den anden mulighed , ved hjælp af en proxy, er en tilgang, der i stigende grad tages. Der er dedikerede løsninger såsom:
- GreenSQL
- Informatica DDM, og
- Axiomatics Data Access Filter.
Disse løsninger opfanger typisk SQL-trafikken og ændrer den, så kun autoriserede data returneres. Dette kaldes dynamisk datamaskering . Det er forklaret lidt mere på Wikipedia .
Den tredje mulighed er at bruge databasens native muligheder. Oracle har f.eks. noget, der hedder Virtual Private Database (VPD), som lader dig konfigurere avancerede rækkefiltreringsfunktioner.
I dit tilfælde (MySQL) er der noget, der hedder finkornet adgangskontrol (FGAC). Der er en fantastisk artikel om emnet her . Google det udtryk for flere ressourcer.