Возможно ли, чтобы у владельца не было привилегий на таблицу?

#sql #postgresql #privileges #postgresql-13

Вопрос:

Мы пытались создать множество ролей и пользователей в одной из баз данных. В какой-то момент я столкнулся с этой проблемой, которую мне трудно воспроизвести.

Это воспроизводимо в базе данных, но когда я создаю новую базу данных и пытаюсь сделать то же самое, этого не происходит 🙁

ALTER TABLE public.table_name OWNER TO role_name;

Обычно после выполнения этого запроса. Это table_name будет owned role_name сделано ролью/пользователем.

После выполнения вышеуказанного запроса, если мы выполним приведенный ниже запрос:

 select grantee, table_catalog, privilege_type, table_schema, table_name 
from information_schema.table_privileges 
where table_name = 'table_name' 
order by grantee, table_schema, table_name
 

Мы получим следующие результаты:

  role_name   | database_name   | INSERT       | public   | table_name
 role_name   | database_name   | DELETE       | public   | table_name
 role_name   | database_name   | SELECT       | public   | table_name
 role_name   | database_name   | UPDATE       | public   | table_name
 role_name   | database_name   | TRUNCATE     | public   | table_name
 role_name   | database_name   | REFERENCES   | public   | table_name
 role_name   | database_name   | TRIGGER      | public   | table_name
 

Однако в особенно испорченной базе данных (я сожалею о языке, но бог знает, через что я прошел, и я уверен, что на этот раз он извинит меня 😛 ) после того, как я предоставлю право собственности, новая роль становится владельцем, но у нее нет SELECT, INSERT или каких-либо привилегий в этом отношении.

Итак, мой вопрос таков:

Существует ли какой-либо сценарий, при котором, когда мы назначаем роль владельцем таблицы, роль может быть владельцем, но у нее все еще нет привилегий выбора, вставки, обновления и удаления?

Если да, то когда и почему?

Комментарии:

1. да, «Владелец объекта может отменить свои обычные привилегии, например, чтобы сделать таблицу доступной только для чтения как для себя, так и для других. Но владельцы всегда считаются обладателями всех вариантов предоставления грантов, поэтому они всегда могут повторно предоставить свои собственные привилегии».

2. Спасибо за подробности. Я тоже читал инструкцию. В моем случае привилегия не отменяется. Сразу после предоставления права собственности, когда я проверяю привилегии, разрешение на выбор отсутствует.

3. кто-то лишил вас привилегий по умолчанию postgresql.org/docs/13/sql-alterdefaultprivileges.html

4. @mshabou: «Привилегии по умолчанию» применяются при создании объекта, а не при смене владельца. Другая тема, неприменимая к этому вопросу.

5. Ответ Эрвина дал мне хорошую зацепку, подтвердится завтра. Спасибо @mshabou

Ответ №1:

роль может быть владельцем и по-прежнему не иметь привилегий выбора, вставки, обновления, удаления?

Да. Руководство:

Владелец объекта может отменить свои обычные привилегии, например, чтобы сделать таблицу доступной только для чтения как для себя, так и для других. Но владельцы всегда рассматриваются как обладатели всех вариантов предоставления, поэтому они всегда могут повторно предоставить свои собственные привилегии.

И суперпользователь может делать все, что может сделать владелец.

Хитрая деталь: владелец (или суперпользователь) может REVOKE получить привилегии от самого себя (владельца). Если затем собственность переходит из рук в руки, новый владелец наследует набор привилегий, которыми обладал предыдущий владелец, плюс любые привилегии, которыми, возможно, уже обладал новый владелец. Таким образом, объединение предыдущих привилегий роли и привилегий владельца. Тогда это новые привилегии владельца.

Если собственность снова перейдет из рук в руки, весь набор привилегий будет передан! Предыдущий владелец теряет все привилегии, которыми он обладал непосредственно.

Но любая роль может наследовать дополнительные привилегии через членство в другой роли или через PUBLIC привилегии.

Тесно связаны:

Комментарии:

1. В моем случае привилегия не отменяется. Сразу после предоставления права собственности, когда я проверяю привилегии, разрешение на выбор отсутствует.

2. @LunaLovegood: Как я уже писал: если привилегии были отозваны у предыдущего владельца , следующий владелец наследует только уменьшенный набор привилегий. Это вступает в силу сразу после ALTER TABLE OWNER TO role_name; этого .

3. О, вы имеете в виду предыдущего владельца стола. Хммм, может быть, это и возможно. Позвольте мне проверить. Спасибо, что терпеливо указали на это.

4. @LunaLovegood: Это определенно возможно. Я проверил перед отправкой.

5. Хм, хорошо, позвольте мне подтвердить это. В данный момент подальше от Мака. Первым делом завтра проверим это и должным образом подтвердим этот ответ. Спасибо за помощь. Теперь, когда вы указали на это, я думаю, что это так.