powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
10 сообщений из 10, страница 1 из 1
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896115
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, банальный чайниковский вопрос, спотнулся на ровном месте. Как говорится - или лыжи не едут.
Не могу понять , в чем пробелема, вроде все делается по теории.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
-bash-4.2$ psql -d record_db -U storage
psql (11.4)
Type "help" for help.

record_db=> \dp
                                      Access privileges
 Schema  |     Name      |   Type   |    Access privileges    | Column privileges | Policies
---------+---------------+----------+-------------------------+-------------------+----------
 storage | table1        | table    | storage=arwdDxt/storage |                   |
 storage | table1_id_seq | sequence |                         |                   |
(2 rows)

record_db=> GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA storage TO actions ;
GRANT
record_db=> \dp
                                      Access privileges
 Schema  |     Name      |   Type   |    Access privileges    | Column privileges | Policies
---------+---------------+----------+-------------------------+-------------------+----------
 storage | table1        | table    | storage=arwdDxt/storage+|                   |
         |               |          | actions=arwdDxt/storage |                   |
 storage | table1_id_seq | sequence |                         |                   |
(2 rows)

-bash-4.2$ psql -d record_db -U actions
psql (11.4)
Type "help" for help.

record_db=> select * from storage.table1 ;
ERROR:  permission denied for schema storage
LINE 1: select * from storage.table1 ;
                      ^
record_db=> \dp
                            Access privileges
 Schema | Name | Type | Access privileges | Column privileges | Policies
--------+------+------+-------------------+-------------------+----------
(0 rows)

                      ^

Почему у роли actions нет доступа к схеме storage, после выполнения
Код: plaintext
1.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA storage TO actions ;
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896127
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
юзаж?
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896128
gav21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rinace,
на схему (представьте его как каталог) тоже нужно выдать права - USAGE (просмотр обьектов внутри) или\ и CREATE (право создания обьектов внутри схемы).
GRANT USAGE ON SCHEMA storage TO actions ;

p.s на сиквенс тоже надо выдать права явно.
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896144
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, спасибо.
Совсем упустил из виду.

Да, все работает, чудес не бывает.
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896157
Синий Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rinace
чудес не бывает.


Бывают у тех, кто в них верит.
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896168
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо коллеги.
Данный вопрос, очень быстро решен.
Но тема получила продолжение.

Есть идея разграничить доступ к данным следующим образом:
- схема storage для хранения таблиц
- схема actions для хранимых процедур, обрабатывающих таблицы из схемы storage

Роль user1 не имеет доступа к таблицам схемы storage , только на выполнение хранимых процедур схемы actions .

Вопрос - данная схема реализуема в PostgreSQL ?

В Oracle я так и делал.

Но пока , не удалось реализовать подобную схему в PostgreSQL :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-bash-4.2$ psql -d record_db -U user1
psql (11.4)
Type "help" for help.

record_db=> select actions.add_to_table1('test user');
NOTICE:  ***arc_activity_log
ERROR:  permission denied for schema storage
LINE 1: INSERT INTO storage.table1 ( txt ) VALUES (curr_text )
                    ^
QUERY:  INSERT INTO storage.table1 ( txt ) VALUES (curr_text )
CONTEXT:  PL/pgSQL function actions.add_to_table1(text) line 5 at SQL statement
record_db=>

Я так понимаю, проблема в том, что роль user1 не имеет грантов на INSERT. Но ведь в этом и состоит идея разграничения.

Гранты установлены следующим образом :
Код: plaintext
1.
2.
3.
4.
5.
6.
GRANT ALL PRIVILEGES ON SCHEMA storage TO GROUP actions;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA storage TO actions ; 
GRANT USAGE ON ALL SEQUENCES IN SCHEMA storage TO actions ;

GRANT USAGE ON SCHEMA actions TO user1 ;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA actions TO user1 ;
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896298
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rinace
В Oracle я так и делал.

В Oracle процедуры по умолчанию создаются как security definer, а в postgresql как security invoker.
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896391
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
rinace
В Oracle я так и делал.

В Oracle процедуры по умолчанию создаются как security definer, а в postgresql как security invoker.

Большое спасибо.
Все таки DBA, уже позабывал многое нужное разработчикам.
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896406
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rinace,

Во избежание сюрпризов не забудьте про:
Код: sql
1.
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA actions FROM public;
...
Рейтинг: 0 / 0
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
    #39896433
rinace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов
Код: sql
1.
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA actions FROM public;


Спасибо, еще раз.
Реально мог бы упустить. Может быть вышло бы на тестировании, а может и нет.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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