Роли информационной безопасности

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

Права для назначения пользователя администратором базы данных есть:

  • у суперпользователей;
  • у администраторов СУБД.

Отсутствуют права для назначения пользователя администратором базы данных:

  • у обычных пользователей;
  • у администраторов баз данных, не являющихся суперпользователями.

Синтаксис SQL для управления ролями администраторов

Помимо управления ролями администраторов через указанные процедуры предоставляется синтаксис SQL в виде команд CREATE QHBSECUREROLE и DROP QHBSECUREROLE.


Представления для просмотра текущих настроек

Доступны представления SQL: role_db_admins и role_dbms_admins.

  • Представление role_db_admins позволяет администратору СУБД просмотреть текущие назначения роли администратора БД для пользователей системы. администратору БД будет показано его собственное назначение.

  • Представление role_dbms_admins позволяет администратору СУБД просмотреть текущие назначения роли администратора СУБД для пользователей системы.

Пример использования представлений:

SELECT * FROM role_db_admins; -- просмотр администраторов БД
SELECT * FROM role_dbms_admins; -- просмотр администраторов СУБД


Просмотр текущих администраторов СУБД и баз данных

Текущие администраторы информационной безопасности отображаются в таблицах разделяемых каталогов 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 '<имя_базы_данных>';


См. также

CREATE QHBSECUREROLE, DROP QHBSECUREROLE