Описание ролей ИБ

Добавлены две сущности: роль Администратора СУБД и роль Администратора базы данных, которые реализованы в виде разделяемых каталогов (таблиц схемы 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 '<имя_базы_данных>';