2015-04-11 4 views
0

Я знаю, как предоставить доступ только SELECT пользователю к выбранным таблицам или представлениям или даже столбцам. С другой стороны, я не хочу, чтобы они могли выполнять SELECT column1, column2 FROM ..... Создание представления не является опцией, так как SELECT column1, column2 FROM view будет делать то же самое. С другой стороны, я создал функцию pgpsql, которая требует два идентификатора и запрашивает одну и ту же таблицу, но только извлекает максимум две строки из таблицы БД (для id = ID1 И id = ID2). Есть ли способ ограничить пользователя использованием этой функции только для запроса таблицы, не предоставляя ему полные права SELECT в этой таблице?PostgreSQL grant select righs on function без доступа SELECT к таблице

ответ

1

Самое простое решение - предоставить привилегии на столе только для OWNER; это поведение по умолчанию в PostgreSQL.

Затем вы можете создать функцию с помощью SECURITY DEFINER, что означает, что функция выполняется с привилегиями тех, кто создал эту функцию. Если это тот же пользователь, что и владелец таблицы, то эта часть выполнена.

Все, что сейчас осталось, это GRANT EXECUTE о функции, доступной кому-либо для доступа к данным.

+0

Отлично. Поэтому я определяю функцию как владельца таблицы БД, и я использую ОПРЕДЕЛЕНИЕ БЕЗОПАСНОСТИ в определении функции. Затем я предоставляю эту функцию ограниченному пользователю. Таким образом, ограниченный пользователь может запросить таблицу Db через эту функцию, и все же ограниченный пользователь не имеет привилегий SELECT в таблице DB. Правильно ли я понимаю? – Alexandros

+0

Да, это правильно. По умолчанию доступ к нему имеет только владелец таблицы. Предоставляя привилегии 'EXECUTE' для функции с предложением' SECURITY DEFINER', этот ограниченный пользователь может выполнить функцию (как и следовало ожидать), но доступ к таблице выполняется владельцем функции. Если этот владелец также является владельцем таблицы, тогда все в порядке, в противном случае владелец таблицы должен «GRANT SELECT» владельцу функции. – Patrick

 Смежные вопросы

  • Нет связанных вопросов^_^