21.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может не только создавать, но и изменять и удалять другие роли, а также выдавать и отзывать членство в ролях. Однако для создания, изменения, удаления ролей суперпользователей и изменения членства в них требуется иметь статус суперпользователя; права- CREATEROLEв таких случаях недостаточно.
- Запуск репликации
- Роль должна иметь явное разрешение на запуск потоковой репликации (за исключением суперпользователей, которые пропускают все проверки). Роль, используемая для потоковой репликации, также должна иметь атрибут - LOGIN. Для создания такой роли используется- CREATE ROLE.- имяREPLICATION LOGIN
- Пароль
- Пароль имеет значение, если метод аутентификации клиентов требует, чтобы пользователи предоставляли пароль при подключении к базе данных. Методы аутентификации - passwordи- md5используют пароли. База данных и операционная система используют раздельные пароли. Пароль указывается при создании роли:- CREATE ROLE.- имяPASSWORD '- строка'
 Атрибуты ролей могут быть изменены после создания командой ALTER ROLE. Более детальная информация в справке по командам CREATE ROLE и ALTER ROLE.
Подсказка
Рекомендуется создать роль с правами CREATEDB и CREATEROLE, но не суперпользователя, и в последующем использовать её для управления базами данных и ролями. Такой подход позволит избежать опасностей, связанных с использованием полномочий суперпользователя для задач, которые их не требуют.
На уровне ролей можно устанавливать многие конфигурационные параметры времени выполнения, описанные в Главе 19. Например, если по некоторым причинам всякий раз при подключении к базе данных требуется отключить использование индексов (подсказка: плохая идея) можно выполнить:
ALTER ROLE myname SET enable_indexscan TO off;
 Установленное значение параметра будет сохранено (но не будет применено сразу). Для последующих подключений с этой ролью это будет выглядеть как выполнение команды SET enable_indexscan TO off перед началом сеанса. Но это только значение по умолчанию; в течение сеанса этот параметр можно изменить. Для удаления установок на уровне ролей для параметров конфигурации используется ALTER ROLE . Обратите внимание, что установка параметров конфигурации на уровне роли без права имя_роли RESET имя_переменнойLOGIN лишено смысла, т. к. они никогда не будут применены.