Има три подхода, които можете да предприемете:
- Направете го в приложението
- Направете го между приложението и db, вътре в db прокси
- Направете го в базата данни
Първата опция всъщност не се квалифицира като контрол на достъпа на ниво ред, тъй като логиката на приложението е тази, която отговаря за филтрирането/маскирането. (Филтрирането е контрол на достъпа на ниво ред, докато маскирането е на ниво клетка).
Вторият вариант , използвайки прокси, е подход, който все повече се прилага. Има специални решения като:
- GreenSQL
- Informatica DDM и
- Аксиоматичен филтър за достъп до данни.
Тези решения обикновено прихващат SQL трафика и го променят така, че да се връщат само разрешени данни. Това се нарича динамично маскиране на данни . Обяснено е малко повече в Уикипедия .
Трети вариант е да се използват собствените възможности на базата данни. Например Oracle има нещо, наречено виртуална частна база данни (VPD), което ви позволява да конфигурирате разширени възможности за филтриране на редове.
Във вашия случай (MySQL) има нещо, наречено финен контрол на достъпа (FGAC). Има страхотна статия по темата тук . Google този термин за повече ресурси.