FirebirdSQL logo

Роли с системными привилегиями

Предложение SET SYSTEM PRIVILEGES TO позволяет создать роль с системными привилегиями.Системные привилегии это части привилегий администратора.Таким образом, через делегирование роли с системными привилегиями пользователю можно передавать ему часть прав администратора БД.

Note

Системные привилегии позволяют производить очень тонкую настройку, поэтому иногда вам нужно будет выдать более 1 системной привилегии для выполнения какой-либо задачи.Например, необходимо выдать IGNORE_DB_TRIGGERS совместно с USE_GSTAT_UTILITY, потому что gstat должен игнорировать триггера на события БД.

Доступны следующие системные привилегии:
USER_MANAGEMENT

Управление пользователями.

READ_RAW_PAGES

Чтение страниц в сыром формате используя Attachment::getInfo()

CREATE_USER_TYPES

Создание, изменение и удаление не системных записей в таблице RDB$USER_TYPES.

USE_NBACKUP_UTILITY

Использование nbackup для создания резервных копий.

CHANGE_SHUTDOWN_MODE

Закрытие базы данных (shutdown) и возвращение её в online.

TRACE_ANY_ATTACHMENT

Трассировка чужих пользовательских сессий.

MONITOR_ANY_ATTACHMENT

Мониторинг (MON$ таблицы) чужих пользовательских сессий.

ACCESS_SHUTDOWN_DATABASE

Доступ к базе данных в режиме shutdown.

CREATE_DATABASE

Создание новой базы данных (хранится в базе данных пользователей security.db).

DROP_DATABASE

Удаление текущей БД.

USE_GBAK_UTILITY

Использование утилиты или сервиса gbak.

USE_GSTAT_UTILITY

Использование утилиты или сервиса gstat.

USE_GFIX_UTILITY

Использование утилиты или сервиса gfix.

IGNORE_DB_TRIGGERS

Разрешает игнорировать триггеры на события БД.

CHANGE_HEADER_SETTINGS

Изменение параметров на заголовочной странице БД.

SELECT_ANY_OBJECT_IN_DATABASE

Выполнение оператора SELECT из всех селективных объектов (таблиц, представлений, хранимых процедур выбора).

ACCESS_ANY_OBJECT_IN_DATABASE

Доступ (любым способом) к любому объекту БД.

MODIFY_ANY_OBJECT_IN_DATABASE

Изменение любого объекта БД.

CHANGE_MAPPING_RULES

Изменение правил отображения при аутентификации.

USE_GRANTED_BY_CLAUSE

Использование GRANTED BY в операторах GRANT и REVOKE.

GRANT_REVOKE_ON_ANY_OBJECT

Выполнение операторов GRANT и REVOKE для любого объекта БД.

GRANT_REVOKE_ANY_DDL_RIGHT

Выполнение операторов GRANT и REVOKE для выдачи DDL привилегий.

CREATE_PRIVILEGED_ROLES

Создание привилегированных ролей (с использованием SET SYSTEM PRIVILEGES).

GET_DBCRYPT_KEY_NAME

Получение имени ключа шифрования.

MODIFY_EXT_CONN_POOL

Управление пулом внешних соединений.

REPLICATE_INTO_DATABASE

Использование API репликации для загрузки наборов изменений в базу данных.

PROFILE_ANY_ATTACHMENT

Профилирование любого соединения.

Для проверки имеет ли текущее подключение заданную системную привилегию можно воспользоваться встроенной функциейRDB$SYSTEM_PRIVILEGE().

Кто может создать роль

Выполнить оператор CREATE ROLE могут:

Примеры CREATE ROLE

Example 1. Создание роли.
CREATE ROLE SELLERS;
Example 2. Создание роли с системными привилегиями.
CREATE ROLE SYS_UTILS
SET SYSTEM PRIVILEGES TO USE_GBAK_UTILITY, USE_GSTAT_UTILITY, IGNORE_DB_TRIGGERS;

ALTER ROLE

Назначение

Изменение системных привилегий роли.

Доступно в

DSQL, ESQL

Синтаксис
ALTER ROLE rolename
{
    SET SYSTEM PRIVILEGES TO <privileges_list>
  | DROP SYSTEM PRIVILEGES
}


<privileges_list> ::= <privilege> [, <privilege> [, <privilege> ...]]
Синтаксис для роли RDB$ADMIN
ALTER ROLE RDB$ADMIN {SET | DROP} AUTO ADMIN MAPPING
Table 1. Параметры оператора ALTER ROLE
Параметр Описание

rolename

Имя роли.

privilege

Системная привилегия.

Оператор ALTER ROLE изменяет список системных привилегий роли или удаляет их.При использовании предложения SET SYSTEM PRIVILEGES TO к роли добавляются системные привилегии из списка.Для очистки списка системных привилегий установленных предыдущим оператором используйте оператор ALTER ROLE с предложением DROP SYSTEM PRIVILEGES.

Оператор ALTER ROLE RDB$ADMIN предназначен для включения и отключения возможности администраторам Windows автоматически получать привилегииадминистраторов при входе.

Эта возможность существует только для одной роли, а именно системной роли RDB$ADMIN, которая существует в любой базе данных с ODS 11.2 и выше.Подробности см. в AUTO ADMIN MAPPING.

В настоящее время является устаревшим и поддерживается для обратной совместимости, вместо него рекомендуется использовать операторы{CREATE | ALTER | DROP} MAPPING.