3
Доступ на уровне строк
Управление доступом на основе ролей
разграничение на уровне отношений (столбцов)
роли и привилегии, базовый механизм
Управление доступом на уровне строк
разграничение на уровне отдельных строк отношений
требуется доверенный контекст
различные способы реализации
Роли и привилегии реализуют ролевую модель доступа (Role-Based
Access Control, RBAC), базовый механизм управления доступом
PostgreSQL. Эта модель регламентирует доступ к отношениям
(таблицам, представлениям), возможно к отдельным их столбцам.
Более детальное разграничение информации на уровне отдельных
строк как правило реализуется в приложениях, но может возникнуть
потребность ограничить доступ и на уровне базы данных. Такое
разграничение требует учета детальных условий (Fine-Grained Access
Control, FGAC).
Критерии доступа должны быть основаны на информации, которой
можно доверять. Очевидно, что нельзя полагаться ни на какие данные,
передаваемые самим пользователем (параметры функций, условия в
запросах и т. п.), поскольку злоумышленник может их подменить. По
сути, единственное, чему можно доверять — это имя пользователя,
поскольку СУБД проводит его проверку (аутентификацию). Если же
аутентификация клиентов выполняется приложением, задача
осложняется (см. задание Практики+).
Существуют разные подходы к решению задачи, основные из которых
рассмотрены дальше в этой теме.