6
Групповые роли
Включение роли в группу
student=> GRANT dba TO alice;
Исключение роли из группы
student=> REVOKE dba FROM alice;
Право управления участием в групповой роли
любая роль может включить другую роль в саму себя
роль с атрибутом SUPERUSER — любую роль в любую другую
роль с атрибутом CREATEROLE — любую роль в любую, кроме
суперпользовательской
student alice
dba
dba
alice
Роль может быть включена в другую роль подобно тому, как
пользователь Unix может быть включен в группу.
PostgreSQL не делает различий между ролями-пользователями и
ролями-группами. Поэтому любая роль может быть включена в любую
другую. При этом возможно появление цепочек включений (но циклы не
допускаются).
Смысл такого включения состоит в том, что для роли становятся
доступны атрибуты (и привилегии, о которых пойдет речь дальше),
которыми обладает групповая роль. Включение выполняется командой
GRANT: возможности групповой роли предоставляются другой роли.
Важно, от имени какой роли выполняется команда GRANT. Правом на
включение и исключение других ролей в данную роль обладают:
- сама эта роль;
- роли с атрибутом SUPERUSER;
- роли с атрибутом CREATEROLE (если данная роль — не является
суперпользовательской).
Чтобы воспользоваться правами, которые дают атрибуты групповой
роли, необходимо переключиться в нее командой SET ROLE.