Иллюстрированный самоучитель по PostgreSQL

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

В PostgreSQL учет привилегий ведется при помощи списков управления доступом (access control lists, ACL). Информация, хранящаяся в этих списках, указывает, каким пользователям разрешена выборка, обновление и другие способы модификации объектов в базе данных. Для всех объектов баз данных PostgreSQL (таблиц, представлений и последовательностей) существует набор привилегий и ограничений доступа. Суперпользователи и владельцы объектов изменяют ACL при помощи пары команд SQL: GRANT и REVOKE.

Как было сказано в главе 9, когда пользователь создает базу данных, он косвенно становится владельцем этой базы. Аналогичный принцип распространяется и на другие объекты: они также принадлежат пользователю, который ввел соответствующую команду SQL CREATE.

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

Управление доступом

Как упоминалось выше, списки управления доступом относятся к трем категориям объектов баз данных: таблицам, спискам и последовательностям. Для этих объектов существуют четыре общие привилегии, которые могут предоставляться пользователям или группам и отбираться у них. Отзыв прав требуется только для отмены их предшествующего предоставления. Изначально пользователи и группы не имеют никаких прав.

Сводка прав ACL просматривается в клиенте psql при помощи команды \z. Команда выводит информацию обо всех правах доступа для базы данных, подключенной в настоящий момент. Чтобы просмотреть права для конкретного объекта, передайте имя этого объекта в качестве параметра команды \z. Вместо имени можно задать регулярное выражение, чтобы просмотреть привилегии для группы объектов.

В табл. 10.2 перечислены привилегии доступа, поддерживаемые в PostgreSQL. Каждой привилегии соответствует определенная буква, которая используется как сокращенное обозначение этой привилегии и включается в выходные данные команды \z клиента psql.

Таблица 10.2. Привилегии доступа в PostqreSQL.

Ключевое слово Символ Описание
SELECT r Пользователю разрешается выборка данных из таблицы, представления или последовательности (хотя функция nextval () не может вызываться при наличии только права SELECT). Также используется термин "право чтения"
INSERT a Пользователю разрешается вставка новых записей в таблицу. Также используется термин "право дополнения"
UPDATE, DELETE w Пользователю разрешается модификация и удаление записей из таблицы. При предоставлении хотя бы одного из прав UPDATE или DELETE другое право предоставляется автоматически. Также используется термин "право записи"
RULE R Пользователю разрешается создание правила перезаписи для таблицы или представления
ALL arwR Сокращенное обозначение, используемое для предоставления или отзыва всех прав. Само по себе ключевое слово ALL правом не является. Указание ключевого слова ALL приводит к предоставлению прав SELECT, INSERT, UPDATE, DELETE и RULE
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.