Ci sono tre approcci che potresti adottare:
- Fai all'interno dell'app
- Fallo tra l'app e il db, all'interno di un proxy db
- Fallo all'interno del database
La prima opzione non si qualificherebbe davvero come controllo di accesso a livello di riga poiché la logica dell'applicazione è quella responsabile del filtraggio/mascheramento. (Il filtraggio è il controllo dell'accesso a livello di riga mentre il mascheramento è a livello di cella).
La seconda opzione , l'utilizzo di un proxy è un approccio sempre più diffuso. Esistono soluzioni dedicate come:
- GreenSQL
- DDM Informatica e
- Filtro di accesso ai dati assiomatici.
Queste soluzioni in genere intercettano il traffico SQL e lo modificano in modo che vengano restituiti solo i dati autorizzati. Questo è chiamato mascheramento dinamico dei dati . È spiegato un po' di più su Wikipedia .
La terza opzione consiste nell'utilizzare le capacità native del database. Ad esempio Oracle ha qualcosa chiamato Virtual Private Database (VPD) che ti consente di configurare funzionalità avanzate di filtraggio delle righe.
Nel tuo caso (MySQL), c'è qualcosa chiamato controllo degli accessi a grana fine (FGAC). C'è un ottimo articolo sull'argomento qui . Google quel termine per più risorse.