Как настроить разрешения, чтобы все разработчики получали ВСЕ ПРИВИЛЕГИИ к объектам, созданным кем-либо из других разработчиков? - PullRequest
0 голосов
/ 21 декабря 2018

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

Я думал, что для этого нужно создать роль role_developers, в которой все разработчики должны быть членамиэту роль, а затем выполните следующее:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO role_developer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO role_developer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO role_developer;

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

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

Так что, очевидно, я что-то упускаю.Я новичок в pgsql, хотя я опытный разработчик SQL Server, что, очевидно, омрачает мою точку зрения.

1 Ответ

0 голосов
/ 21 декабря 2018

Показанные вами операторы ALTER DEFAULT PRIVILEGES влияют только на таблицы, созданные пользователем, который выполнял эти операторы.

Вам нужно будет запустить

ALTER DEFAULT PRIVILEGES FOR ROLE someuser ....

для всех пользователей, которые могутможно создавать такие объекты.

Это раздражает, и все равно не позволяет другим пользователям удалять или изменять созданные мной таблицы, поскольку это ограничено владельцем таблицы.

Это можетлучше создать такую ​​роль:

CREATE ROLE object_owner NOINHERIT;

и предоставить эту роль всем вашим пользователям.

Затем, когда кто-то захочет создать, изменить или удалить объект, онсначала нужно сделать

SET ROLE object_owner;

Затем вам нужно запустить только один набор ALTER DEFAULT PRIVILEGES команд для этой роли.

Вы можете принудительно применить это, предоставив CREATE в схемах толькоobject_owner.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...