Я хочу реализовать контроль доступа на уровне столбца и уровня на данных, хранящихся в моей базе данных MySQL. Я использую NodeJS на своем сервере, каков путь для этого? Я вижу, что SAP Hana позволяет это, но хочет сохранить MySQL.Контроль доступа MYSQL
ответ
Есть три подхода, которые Вы могли бы взять с собой:
- ли это в пределах приложения
- ли это между приложением и БД, внутри БД прокси
- ли это в базе данных
Первый вариант на самом деле не квалифицируется как управление доступом на уровне строк, поскольку логика приложения является ответственной за фильтрацию/маскировку. (Фильтрация - это управление доступом на уровне строк, тогда как маскирование - это уровень ячейки).
Второй вариант, использующий прокси-сервер, является подходом, который все чаще принимается. Есть специализированные решения, такие как:
- GreenSQL
- Informatica DDM и
- Аксиоматика Data Access Filter.
Эти решения обычно перехватывают трафик SQL и изменяют его так, что возвращаются только авторизованные данные. Это называется маскирование динамических данных. Это объясняется немного больше на Wikipedia.
Третий вариант - использовать собственные возможности базы данных. Например, Oracle имеет нечто, называемое Virtual Private Database (VPD), которое позволяет настраивать расширенные возможности фильтрации строк.
В вашем случае (MySQL) есть что-то под названием мелкозернистый контроль доступа (FGAC). Есть замечательная статья по теме here. Google этот термин для большего количества ресурсов.
Дэвид, все эти варианты, кажется, платят и дорогие. Есть ли какие-либо варианты с открытым исходным кодом? – Vineet
Разве MySQL FGAC не свободен? –
Есть еще версия с открытым исходным кодом GreenSQL на [Github] (https://github.com/larskanis/greensql-fw), но кажется довольно старой. Немного информации о статусе. – cdan
Стандартный способ - использовать процедуру и вызвать ее из приложения с необходимыми параметрами. – Mihai