powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права, требуемые коду view или функции
3 сообщений из 3, страница 1 из 1
Права, требуемые коду view или функции
    #34870327
Cyanide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, господа

На MSSQL привелигированный пользователь (для простоты - dbo) может написать view или процедуру, которые обращаются к неким таблицам, к которым dbo имеет доступ, а затем дать другому пользователю (для простоты - user) права на выполнение этой процедуры или просмотр этого view. При этом user может _не иметь_ прав доступа к этим таблицам. То есть получается, что код процедуры или view выполняется _с правами автора процедуры_.

Я, натурально, даже не предполагал, что может быть по другому. Но вот сегодня postgresql 8.2 огорошил меня требованием прав для доступа к таблице для оператора, содержащегося в функции!.

То есть я пишу под пользователем postges:

CREATE OR REPLACE FUNCTION foo ()
RETURNS SETOF integer
AS $$
SELECT code
FROM bar;
$$ LANGUAGE SQL STABLE;
GRANT EXECUTE ON FUNCTION foo() TO public;

потом под пользователем user пишу

SELECT foo();

и получаю:

ERROR: permission denied for relation bar

Просвятите чайника: можно на PostgreSQL написать такую функцию, _не давая_ пользователю user прав на таблицу bar?
...
Рейтинг: 0 / 0
Права, требуемые коду view или функции
    #34870448
ЯЕХХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cyanide
Я, натурально, даже не предполагал, что может быть по другому.

Запросто может. Это другая система, документацию читать надо обязательно. По view - всё совпадает, по функциям - нужна волшебная опция при создании (и в MSSQL2005 кстати аналог её есть).
...
Рейтинг: 0 / 0
Права, требуемые коду view или функции
    #34870785
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM[EXTERNAL] SECURITY INVOKER

[EXTERNAL] SECURITY DEFINER

SECURITY INVOKER indicates that the function is to be executed with the privileges of the user that calls it. That is the default.

SECURITY DEFINER specifies that the function is to be executed with the privileges of the user that created it.

The key word EXTERNAL is allowed for SQL conformance, but it is optional since, unlike in SQL, this feature applies to all functions not only external ones.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права, требуемые коду view или функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]