Перейти к основному содержимому

Атрибуты роли

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

Привилегия входа в систему

Только роли, которые имеют атрибут LOGIN, могут использоваться в качестве первоначального имени роли для подключения к базе данных. Роль с атрибутом LOGIN может рассматриваться как эквивалентная «пользователь базы данных». Чтобы создать роль с привилегией входа в систему, используйте любой из следующих вариантов:

CREATE ROLE name LOGIN;
CREATE USER name;

(CREATE USER аналогичен CREATE ROLE, за исключением того, что CREATE USER включает LOGIN по умолчанию, а CREATE ROLE - нет.)

Статус суперпользователя

Суперпользователь базы данных пропускает все проверки разрешений, за исключением входа в систему. Эту привилегию следует использовать с осторожностью, так как она открывает широкие возможности. Большую часть операций рекомендуется выполнять под обычными учетными записями. Для создания нового пользователя с правами суперпользователя применяется команда CREATE ROLE name SUPERUSER. Выполнить ее может только существующий суперпользователь.

Создание баз данных

Роль должна явно получить разрешение на создание баз данных (за исключением суперпользователей, поскольку они обходят все проверки разрешений). Чтобы создать такую роль, используйте CREATE ROLE name CREATEDB.

Создание ролей

Роль должна явно получить разрешение на создание дополнительных ролей (за исключением суперпользователей, поскольку они обходят все проверки разрешений). Чтобы создать такую роль, используйте CREATE ROLE name CREATEROLE. Роль с привилегией CREATEROLE может изменять и удалять другие роли, а также предоставлять или отзывать членство в них. Изменение роли включает большинство изменений, которые могут быть внесены с использованием ALTER ROLE, включая, например, изменение паролей. Это также включает изменения в роли, которые можно внести с помощью команд COMMENT и SECURITY LABEL.

Однако CREATEROLE не предоставляет возможность создавать роли SUPERUSER, и она также не дает никаких полномочий над существующими ролями 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 name REPLICATION LOGIN.

Пароль

Пароль имеет значение только в том случае, если метод аутентификации клиента требует от пользователя ввода пароля при подключении к базе данных. Методы аутентификации password и md5 используют пароли. Пароли баз данных отделены от системных паролей операционной системы. Укажите пароль при создании роли с помощью CREATE ROLE name PASSWORD 'string'.

Наследование привилегий

По умолчанию роль получает разрешение наследовать привилегии ролей, членом которых она является. Однако чтобы создать роль без разрешения, используйте CREATE ROLE name NOINHERIT.

Обход политики безопасности уровня строки

Роль должна явно получить разрешение на обход каждой политики безопасности уровня строки (RLS) (за исключением суперпользователей, поскольку они обходят все проверки разрешений). Чтобы создать такую роль, используйте CREATE ROLE name BYPASSRLS как суперпользователь.

Ограничение количества подключений

Ограничение подключения может указывать, сколько одновременных подключений может установить роль. -1 (по умолчанию) означает отсутствие ограничений. Укажите ограничение подключения при создании роли с помощью CREATE ROLE name CONNECTION LIMIT 'integer'.

Атрибуты роли могут быть изменены после создания с помощью ALTER ROLE. Смотрите страницы справки для команд CREATE ROLE и ALTER ROLE для получения подробной информации.

Роль может иметь индивидуальные значения по умолчанию для большинства параметров конфигурации времени выполнения, перечисленных в главе Конфигурация сервера. Например, если необходимо отключить индексное сканирование при каждом подключении (замечание: это не рекомендуется), можно воспользоваться следующим запросом:

ALTER ROLE myname SET enable_indexscan TO off;

Новая настройка будет сохранена, но не вступит в силу мгновенно. В будущих подключениях с участием этой роли будет выполнено действие, аналогичное выполнению команды SET enable_indexscan TO off в самом начале сессии. При желании эту настройку можно изменить прямо в ходе сессии; она станет новым значением по умолчанию. Для сброса индивидуальной настройки по умолчанию для роли используйте команду ALTER ROLE rolenameRESETvarname. Следует учесть, что настройки по умолчанию, относящиеся к ролям без привилегии LOGIN`, практически бессмысленны, так как никогда не срабатывают.