Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права, требуемые коду view или функции / 3 сообщений из 3, страница 1 из 1
15.10.2007, 22:29
    #34870327
Cyanide
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права, требуемые коду view или функции
Приветствую, господа

На 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
16.10.2007, 04:30
    #34870448
ЯЕХХ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права, требуемые коду view или функции
Cyanide
Я, натурально, даже не предполагал, что может быть по другому.

Запросто может. Это другая система, документацию читать надо обязательно. По view - всё совпадает, по функциям - нужна волшебная опция при создании (и в MSSQL2005 кстати аналог её есть).
...
Рейтинг: 0 / 0
16.10.2007, 10:34
    #34870785
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Права, требуемые коду view или функции
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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Права, требуемые коду view или функции / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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