Er zijn drie benaderingen die u kunt nemen:
- Doe het binnen de app
- Doe het tussen de app en de db, in een db-proxy
- Doe het in de database
De eerste optie zou niet echt kwalificeren als toegangscontrole op rijniveau, aangezien de toepassingslogica degene is die verantwoordelijk is voor het filteren / maskeren. (Filteren is toegangscontrole op rijniveau, terwijl maskeren op celniveau is).
De tweede optie , het gebruik van een proxy, is een aanpak die steeds vaker wordt gevolgd. Er zijn speciale oplossingen zoals:
- GreenSQL
- Informatica DDM, en
- Axiomatics-gegevenstoegangsfilter.
Deze oplossingen onderscheppen doorgaans het SQL-verkeer en wijzigen het zodanig dat alleen geautoriseerde gegevens worden geretourneerd. Dit heet dynamische gegevensmaskering . Het wordt iets meer uitgelegd op Wikipedia .
De derde optie is om de eigen mogelijkheden van de database te gebruiken. Oracle heeft bijvoorbeeld iets dat Virtual Private Database (VPD) wordt genoemd, waarmee u geavanceerde rijfiltermogelijkheden kunt configureren.
In jouw geval (MySQL) bestaat er zoiets als fijnkorrelige toegangscontrole (FGAC). Er is een geweldig artikel over het onderwerp hier . Google die term voor meer bronnen.