Описание ролей ИБ
Добавлены две сущности: роль Администратора СУБД и роль Администратора базы данных, которые реализованы в виде разделяемых каталогов (таблиц схемы pg_catalog):
- qhb_dbms_admin для администраторов СУБД;
- qhb_db_admin для администраторов конкретных баз данных.
Информация о ролях администраторов ИБ
Наличие в системе ролей администраторов СУБД и администраторов конкретных баз данных позволяет назначать Администраторов Информационной Безопасности, не включая атрибут суперпользователя у соответствующих записей в таблице каталога пользователей и ролей pg_authid.
Привилегии администраторов ИБ
Объект в СУБД | Администратор СУБД | Администратор базы данных |
---|---|---|
Таблица в базе данных | Права по умолчанию | Полные права в управляемой базе данных: вставка, чтение, редактирование, удаление |
Последовательность | Права по умолчанию | Полные права в управляемой базе данных: использование, чтение, редактирование |
База данных | Имеет право создавать базы данных | Полные права в управляемой базе данных: создание объектов, логин, работа с планировщиком |
Оболочка сторонних данных | Права по умолчанию | Право использования в управляемой базе данных |
Функции/процедуры | Права по умолчанию | Право использования в управляемой базе данных |
Язык процедур | Права по умолчанию | Право использования в управляемой базе данных |
Большие объекты | Права по умолчанию | Полные права в управляемой базе данных: чтение и изменение |
ALTER SYSTEM | Полные права в СУБД | Права по умолчанию |
Схема | Права по умолчанию | Полные права в управляемой базе данных: использование и создание |
Табличное пространство | Полные права на создание | Права по умолчанию |
Тип данных | Права по умолчанию | Полные права в управляемой базе данных, включая создание |
Особенности реализации
В данной реализации назначение ролей администратора СУБД и администратора конкретных баз данных осуществляется индивидуально каждому пользователю, минуя иерархию ролей в СУБД. Назначить роли администраторов ИБ групповым ролям СУБД нельзя.
Назначение ролей ИБ
Суперпользователь имеет полномочия назначать администраторов СУБД и администраторов конкретных баз данных с помощью встроенных процедур.
Назначение администратора СУБД
Встроенная процедура qhb_make_dbms_admin позволяет назначить пользователя одним из администраторов СУБД, что наделит его дополнительными полномочиями.
SELECT qhb_make_dbms_admin(<oid_пользователя>);
Для передачи идентификатора пользователя в виде параметра в функцию qhb_make_dbms_admin следует найти значение oid в каталоге pg_authid, соответствующее имени требуемого пользователя. Например, с помощью такого запроса SQL:
SELECT oid FROM pg_authid WHERE rolname LIKE '<имя_пользователя>';
Права для назначения пользователя администратором СУБД есть у суперпользователей.
Права для назначения пользователя администратором СУБД отсутствуют:
- у обычных пользователей;
- у администраторов СУБД и баз данных, не являющихся суперпользователями.
Назначение администратора базы данных
Встроенная процедура qhb_make_db_admin позволяет назначить пользователя одним из администраторов заданной базы данных, что наделит его дополнительными полномочиями в отношении выбранной базы данных и ее объектов.
SELECT qhb_make_db_admin(<oid_пользователя>, <oid_базы_данных>);
Для передачи идентификатора пользователя в виде параметра в функцию qhb_make_db_admin следует найти значение oid в каталоге pg_authid, соответствующее имени требуемого пользователя. Например, с помощью такого запроса SQL:
SELECT oid FROM pg_authid WHERE rolname LIKE '<имя_пользователя>';
Аналогично идентификатор базы данных для передачи в виде параметра можно найти с помощью следующего запроса SQL:
SELECT oid FROM pg_database WHERE datname LIKE '<имя_базы_данных>';
Права для назначения пользователя администратором базы данных есть:
- у суперпользователей;
- у администраторов СУБД.
Отсутствуют права для назначения пользователя администратором базы данных:
- у обычных пользователей;
- у администраторов баз данных, не являющихся суперпользователями.
Просмотр текущих администраторов СУБД и баз данных
Текущие администраторы ИБ отображаются в таблицах разделяемого каталога qhb_dbms_admin и qhb_db_admin.
С помощью следующих запросов, использующих встроенные процедуры, можно определить текущий статус пользователя:
SELECT qhb_is_dbms_admin(<oid_пользователя>);
и
SELECT qhb_is_db_admin(<oid_пользователя>, <oid_базы_данных>);
Удаление ролей администраторов ИБ
Для отмены назначения ролей администратора СУБД и администратора базы данных следует воспользоваться процедурами qhb_drop_dbms_admin и qhb_drop_db_admin.
Для удаления назначения пользователя администратором СУБД можно использовать запрос:
SELECT qhb_drop_dbms_admin(<oid_пользователя>);
Для удаления назначения пользователя администратором конкретной базы данных можно использовать запрос:
SELECt qhb_drop_db_admin(<oid_пользователя>, <oid_базы_данных>);
Для передачи идентификатора пользователя в виде параметра в функции qhb_drop_dbms_admin и qhb_drop_db_admin следует найти значение oid в каталоге pg_authid, соответствующее имени требуемого пользователя. Например, с помощью такого запроса SQL:
SELECT oid FROM pg_authid WHERE rolname LIKE '<имя_пользователя>';
Аналогично идентификатор базы данных для передачи в виде параметра можно найти с помощью следующего запроса SQL:
SELECT oid FROM pg_database WHERE datname LIKE '<имя_базы_данных>';