Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema / 10 сообщений из 10, страница 1 из 1
29.11.2019, 10:12
    #39896115
rinace
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
Коллеги, банальный чайниковский вопрос, спотнулся на ровном месте. Как говорится - или лыжи не едут.
Не могу понять , в чем пробелема, вроде все делается по теории.
Код: 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
29.11.2019, 10:24
    #39896127
Синий Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
юзаж?
...
Рейтинг: 0 / 0
29.11.2019, 10:24
    #39896128
gav21
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
rinace,
на схему (представьте его как каталог) тоже нужно выдать права - USAGE (просмотр обьектов внутри) или\ и CREATE (право создания обьектов внутри схемы).
GRANT USAGE ON SCHEMA storage TO actions ;

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

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


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

Есть идея разграничить доступ к данным следующим образом:
- схема 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
29.11.2019, 12:45
    #39896298
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чайниковский вопрос, прошу прощения - ERROR: permission denied for schema
rinace
В Oracle я так и делал.

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

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

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

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


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


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