Det finns tre tillvägagångssätt du kan använda:
- Gör det i appen
- Gör det mellan appen och db, inuti en db-proxy
- Gör det i databasen
Det första alternativet skulle inte riktigt kvalificera sig som åtkomstkontroll på radnivå eftersom applikationslogiken är den som ansvarar för filtreringen/maskeringen. (Filtrering är åtkomstkontroll på radnivå medan maskering är cellnivå).
Det andra alternativet , med hjälp av en proxy, är ett tillvägagångssätt som används alltmer. Det finns dedikerade lösningar som:
- GreenSQL
- Informatica DDM och
- Axiomatics dataåtkomstfilter.
Dessa lösningar fångar vanligtvis upp SQL-trafiken och modifierar den så att endast auktoriserad data returneras. Detta kallas dynamisk datamaskering . Det förklaras lite mer på Wikipedia .
Det tredje alternativet är att använda databasens ursprungliga funktioner. Oracle har till exempel något som kallas Virtual Private Database (VPD) som låter dig konfigurera avancerade radfiltreringsfunktioner.
I ditt fall (MySQL) finns det något som kallas finkornig åtkomstkontroll (FGAC). Det finns en bra artikel om ämnet här . Googla på den termen för fler resurser.