powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / REVOKE EXECUTE ON FUNCTION
10 сообщений из 10, страница 1 из 1
REVOKE EXECUTE ON FUNCTION
    #40096228
victorov1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я портирую код с MSSQL/MySQL на Postgre и столкнулся с "замечательной" особенностью этой СУБД: любой созданный пользователь (через CREATE ROLE LOGIN) имеет по умолчанию EXECUTE доступ ко всем функциям БД!!! Причем к таблицам - нет. Для меня загадка почему так, но вопрос как решить. Мне нужно, чтобы вновь созданный пользователь по умолчанию не имел доступа ни к чему в моей БД и я сам назначал ему права.
Поиск дал такой вариант:
revoke execute on function <name> from public;
это работает, но если у меня много функций, то не хочется вызывать это для каждой.
ALTER default privileges revoke execute on functions from public; - вообще не дает эффекта
есть какой-то красивый и надежный вариант?
Или создать пользователя через CREATE ROLE таким образом, чтобы он не наследовал от PUBLIC ничего. Я пробовал NOINHERIT, но толку нет.
Я новичек в postgre - просьба помочь.
Спасибо.
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096247
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
victorov1
Я портирую код с MSSQL/MySQL на Postgre и столкнулся с "замечательной" особенностью этой СУБД: любой созданный пользователь (через CREATE ROLE LOGIN) имеет по умолчанию EXECUTE доступ ко всем функциям БД!!! Причем к таблицам - нет. Для меня загадка почему так, но вопрос как решить. Мне нужно, чтобы вновь созданный пользователь по умолчанию не имел доступа ни к чему в моей БД и я сам назначал ему права.
Поиск дал такой вариант:
revoke execute on function <name> from public;
это работает, но если у меня много функций, то не хочется вызывать это для каждой.
ALTER default privileges revoke execute on functions from public; - вообще не дает эффекта
есть какой-то красивый и надежный вариант?
Или создать пользователя через CREATE ROLE таким образом, чтобы он не наследовал от PUBLIC ничего. Я пробовал NOINHERIT, но толку нет.
Я новичек в postgre - просьба помочь.
Спасибо.


А какую проблему вы видите в том что "имеет по умолчанию EXECUTE доступ ко всем функциям БД"?
К данным к которым у него нет доступа он и так не доберётся а исходники хранимок он всегда сможет посмотреть поэтому закрывать доступ к хранимкам которые смысла особого нет.
"Мне нужно, чтобы вновь созданный пользователь по умолчанию не имел доступа ни к чему в моей БД" - так закройте доступ именно к вашей конкретной базе для PUBLIC в целом.

Public доступ имеют все пользователи и всегда это псевдороль которую отобрать нельзя.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096280
victorov1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А какую проблему вы видите в том что "имеет по умолчанию EXECUTE доступ ко всем функциям БД"?

Издеваетесь??? Это огромная брешь в безопасности. Особенно если функция создана с опцией SECURITY DEFINER
Т.е. создали юзера, никаких прав ему еще не давали, а он на тебе - уже все может делать в БД!
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096285
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096287
victorov1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это я читал

какое в итоге решение для "закройте доступ именно к вашей конкретной базе для PUBLIC в целом"?

REVOKE ALL ON DATABASE mydatabase FROM PUBLIC;

это не дает возможности подконнектиться к БД, но когда даем GRANT CONNECT, то пользователь получает и доступ EXECUTE

ме нужно что-то типа

REVOKE EXECUTE ON ALL FUNCTIONS TO DATABASE mydatabase FROM PUBLIC;
но такого нет.
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096288
victorov1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victorov1
это я читал

какое в итоге решение для "закройте доступ именно к вашей конкретной базе для PUBLIC в целом"?

REVOKE ALL ON DATABASE mydatabase FROM PUBLIC;

это не дает возможности подконнектиться к БД, но когда даем GRANT CONNECT, то пользователь получает и доступ EXECUTE

мне нужно что-то типа

REVOKE EXECUTE ON ALL FUNCTIONS TO DATABASE mydatabase FROM PUBLIC;
но такого нет.
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096292
victorov1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробую:

\с mydatabase
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA PUBLIC FROM PUBLIC;

вроде то что нужно
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096309
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит отметить, что при создании новой функции, автоматом EXECUTE выдается public-ку.
Т.е. после создания новой функции надо по новой делать отзыв привилегий для нее.
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096310
victorov1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya
Стоит отметить, что при создании новой функции, автоматом EXECUTE выдается public-ку.
Т.е. после создания новой функции надо по новой делать отзыв привилегий для нее.


это уже увидел, спасибо.
...
Рейтинг: 0 / 0
REVOKE EXECUTE ON FUNCTION
    #40096311
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
victorov1
А какую проблему вы видите в том что "имеет по умолчанию EXECUTE доступ ко всем функциям БД"?


Издеваетесь??? Это огромная брешь в безопасности. Особенно если функция создана с опцией SECURITY DEFINER
Т.е. создали юзера, никаких прав ему еще не давали, а он на тебе - уже все может делать в БД!

На таком уровне доступов я бы начинал с
https://blog.crunchydata.com/blog/postgresql-defaults-and-impact-on-security-part-1
и далее с
https://blog.crunchydata.com/blog/postgresql-defaults-and-impact-on-security-part-2
(CVE-2018-1058 - вообще прикольная дырка да).

Там много чего интересного помимо того что вы написали вылезает.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / REVOKE EXECUTE ON FUNCTION
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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