20.2. Атрибуты ролей
Роль базы данных может иметь атрибуты, определяющие её полномочия и взаимодействие с системой аутентификации клиентов.
- Право подключения
- Только роли с атрибутом - LOGINмогут использоваться для начального подключения к базе данных. Роль с атрибутом- LOGINможно рассматривать как пользователя базы данных. Для создания такой роли можно использовать любой из вариантов:- CREATE ROLE - имяLOGIN; CREATE USER- имя;- (Команда - CREATE USERэквивалентна- CREATE ROLEза исключением того, что- CREATE USERпо умолчанию включает атрибут- LOGIN, в то время как- CREATE ROLE— нет.)
- Статус суперпользователя
- Суперпользователь базы данных обходит все проверки прав доступа, за исключением права на вход в систему. Это опасная привилегия и она не должна использоваться небрежно. Лучше всего выполнять большую часть работы не как суперпользователь. Для создания нового суперпользователя используется - CREATE ROLE. Это нужно выполнить из под роли, которая также является суперпользователем.- имяSUPERUSER
- Создание базы данных
- Роль должна явно иметь разрешение на создание базы данных (за исключением суперпользователей, которые пропускают все проверки). Для создания такой роли используется - CREATE ROLE.- имяCREATEDB
- Создание роли
- Роль должна явно иметь разрешение на создание других ролей (за исключением суперпользователей, которые пропускают все проверки). Для создания такой роли используется - CREATE ROLE. Роль с правом- имяCREATEROLE- CREATEROLEможет не только создавать, но и изменять и удалять другие роли, а также выдавать и отзывать членство в ролях. Изменение роли включает большинство действий команды- ALTER ROLE, например смену пароля, а также действия команд- COMMENTи- SECURITY LABELв отношении ролей.- Однако, имея право - CREATEROLE, нельзя ни создавать, ни каким-либо образом влиять на роли- SUPERUSER. Кроме того, с правом- CREATEROLEнельзя ни создавать пользователей- REPLICATION, ни предоставлять или отзывать право- REPLICATION, ни изменять свойства ролей таких пользователей. Тем не менее, это право позволяет использовать команды- ALTER ROLE ... SETи- ALTER ROLE ... RENAMEв отношении ролей- REPLICATION, а также- COMMENT ON ROLE,- SECURITY LABEL ON ROLEи- DROP ROLE. Наконец, право- CREATEROLEне даёт возможности предоставлять или отзывать право- BYPASSRLS.- Поскольку право - CREATEROLEдаёт пользователю возможность предоставлять или отзывать членство даже в тех ролях, к которым у него (пока) нет доступа, пользователь с правом- CREATEROLEможет получить доступ к возможностям каждой заданной роли в системе, включая роли, имеющие множество прав, такие как- pg_execute_server_programи- pg_write_server_files.
- Запуск репликации
- Роль должна иметь явное разрешение на запуск потоковой репликации (за исключением суперпользователей, которые пропускают все проверки). Роль, используемая для потоковой репликации, также должна иметь атрибут - LOGIN. Для создания такой роли используется- CREATE ROLE.- имяREPLICATION LOGIN
- Пароль
- Пароль имеет значение, если метод аутентификации клиентов требует, чтобы пользователи предоставляли пароль при подключении к базе данных. Методы аутентификации - passwordи- md5используют пароли. База данных и операционная система используют раздельные пароли. Пароль указывается при создании роли:- CREATE ROLE.- имяPASSWORD '- строка'
- Наследование прав
- По умолчанию роль получает разрешение наследовать права той роли, членом которой она является. Однако можно создать роль и без такого разрешения, выполнив - CREATE ROLE.- имяNOINHERIT
- Игнорирование защиты на уровне строк
- Разрешение обходить все политики защиты на уровне строк (RLS) нужно давать роли явно. Создать роль с таким разрешением можно, выполнив - CREATE ROLEот имени суперпользователя.- имяBYPASSRLS
- Ограничение соединений
- Для роли можно ограничить число одновременных соединений. -1 (по умолчанию) означает отсутствие ограничения. Для создания роли с ограничением используется - CREATE ROLE.- nameCONNECTION LIMIT '- число'
 Атрибуты ролей могут быть изменены после создания командой ALTER ROLE. Более детальная информация в справке по командам CREATE ROLE и ALTER ROLE.
На уровне ролей можно устанавливать многие конфигурационные параметры времени выполнения, описанные в Главе 18. Например, если по некоторым причинам всякий раз при подключении к базе данных требуется отключить использование индексов (подсказка: плохая идея) можно выполнить:
ALTER ROLE myname SET enable_indexscan TO off;
 Установленное значение параметра будет сохранено (но не будет применено сразу). Для последующих подключений с этой ролью это будет выглядеть как выполнение команды SET enable_indexscan TO off перед началом сеанса. Но это только значение по умолчанию; в течение сеанса этот параметр можно изменить. Для удаления установок на уровне ролей для параметров конфигурации используется ALTER ROLE . Обратите внимание, что установка параметров конфигурации на уровне роли без права имя_роли RESET имя_переменнойLOGIN лишено смысла, т. к. они никогда не будут применены.