FirebirdSQL logo

Роль (role) — объект базы данных, представляющий набор привилегий.Роли реализуют концепцию управления безопасностью на групповом уровне.Множество привилегий предоставляется роли, а затем роль может быть предоставлена или отозвана у одного или нескольких пользователей.

Пользователь, которому предоставлена роль, должен указать её при входе, для того чтобы получить её привилегии, или же эта роль должна быть грантована с использованием ключевого слова DEFAULT.Любые другие привилегии, предоставленные пользователю, не будут затронуты при его входе в систему с указанной ролью.Вход в систему с несколькими ролями не поддерживается, однако вы можете права нескольких ролей назначенных по умолчанию.Вы можете изменить текущую роль с помощью оператора SET ROLE.

Роли могут быть грантованы другие роли.При входе с этой ролью пользователь автоматически получит права всех ролей выданных с использованием ключевого слова DEFAULT.

В данном разделе рассматриваются вопросы создания и удаления ролей.

CREATE ROLE

Назначение

Создание новой роли.

Доступно в

DSQL, ESQL

Синтаксис
CREATE ROLE rolename
[SET SYSTEM PRIVILEGES TO <privileges_list>]

<privileges_list> ::= <privilege> [, <privilege> [, <privilege> ...]]
Table 1. Параметры оператора CREATE ROLE
Параметр Описание

rolename

Имя роли.Максимальная длина 63 символа.

privilege

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

Оператор CREATE ROLE создаёт новую роль.Имя роли должно быть уникальным среди имён ролей.

Warning

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

docnext count = 7

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

Предложение 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.

DROP ROLE

Назначение

Удаление существующей роли.

Доступно в

DSQL, ESQL

Синтаксис
DROP ROLE rolename
Table 1. Параметры оператора DROP ROLE
Параметр Описание

rolename

Имя роли.

Оператор DROP ROLE удаляет существующую роль.При удалении роли все привилегии, предоставленные этой роли, отменяются.

Кто может удалить роль

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

Примеры DROP ROLE

Example 1. Удаление роли.
DROP ROLE SELLERS;
См. также:

CREATE ROLE, REVOKE.