В моем приложении запросчик имеет разрешение запрашивать только определенные столбцы. Столбцы могут отличаться между запрашивающими. Предложение where изменяется между запросами, чтобы возвращаемые строки изменялись с каждым запросом. Каков наилучший способ управления этим контролем доступа? Должен ли я использовать массив для хранения разрешенных столбцов, а затем выполнить проверку в моем приложении?Как ограничить столбцы SQL на основе идентификатора запроса?
Я на PostgreSQL 9.x
Пример: У нас есть медицинские работники, которые могут получить доступ к записи пациентов, но не все медицинские работники должны быть в состоянии получить доступ к информации. Они пытаются запросить произвольную информацию о любом пациенте (у которого есть uid), но мы должны обеспечить контроль доступа.
Так говорят информация является имя, дата рождения, тип крови и болезни
Доктор А имеет разрешение для всех полей Доктор B может видеть все, кроме крови Администратор может видеть только имя и дата рождения гематолог может видеть только тип крови
GRANT кажется ориентированным на пользователей БД, в то время как мои «пользователи» являются пользователями приложения. В частности, текущий пользователь моего приложения будет исправлен после того, как я открою соединение с db, и я не думаю, что это хорошая идея создать много коротких замыканий. – user492922
Это уменьшает параметры до номера 2. – Curt
Что касается вашего второго варианта, какова схема «выбираемой» таблицы? Каждая строка состоит из булевых для каждого столбца? Я могу работать со стороны приложения. Является ли мое первоначальное предложение использовать массивы для хранения столбцов и делать чек в приложении плохо продуманным? – user492922