FirebirdSQL logo

Примеры назначения ролей

Example 1. Назначение ролей для пользователей
-- Назначение ролей DIRECTOR и MANAGER пользователю IVAN
GRANT DIRECTOR, MANAGER TO USER IVAN;

-- Назначение роли ADMIN пользователю ALEX
-- с возможностью назначить эту другим пользователям
GRANT MANAGER TO USER ALEX WITH ADMIN OPTION;
Example 2. Назначение ролей для пользователей с ключевым словом DEFAULT
-- Назначение роли MANAGER пользователю JOHN
-- Привилегии роли будут автоматически назначаться пользователю
-- каждый раз при входе. В этом случае роль выступает в качестве группы.
GRANT DEFAULT MANAGER TO USER JOHN;

-- Теперь при входе пользователь JOHN автоматически получит привилегии
-- ролей MANAGER (см. предыдущий оператор) и DIRECTOR
GRANT DEFAULT DIRECTOR TO USER JOHN;
Example 3. Назначение ролей другим ролям
-- Назначение роли MANAGER для роли DIRECTOR
-- с возможностью передачи роли MANAGER другим пользователям или ролям
GRANT MANAGER TO ROLE DIRECTOR WITH ADMIN OPTION;

-- Назначение роли ACCOUNTANT роли DIRECTOR
-- при входе в систему с ролью DIRECTOR полномочия роли ACCOUNTANT
-- будут также получены
GRANT DEFAULT ACCOUNTANT TO ROLE DIRECTOR;

-- Пользователь PETROV при входе автоматически получает
-- полномочия роли DIRECTOR. Эти полномочия будут включать также
-- полномочия роли ACCOUNTANT. Для получения полномочий роли MANAGER
-- необходимо указать эту роль при входе в систему или позже с
-- помощью оператора SET ROLE
GRANT DEFAULT ROLE DIRECTOR TO USER PETROV;
См. также:

REVOKE.

Пользователь PUBLIC

В SQL существует специальный пользователь PUBLIC, представляющий всех пользователей.Если какая-то операция разрешена пользователю PUBLIC, значит, любой аутентифицированный пользователь может выполнить эту операцию над указанным объектом.

Important

Если привилегии назначены пользователю PUBLIC, то и отозваны они должны быть у пользователя PUBLIC.

Предложение WITH GRANT OPTION

Необязательное предложение WITH GRANT OPTION позволяет пользователям, указанным в списке пользователей, передавать другим пользователям привилегии указанные в списке привилегий.

Предложение GRANTED BY

При предоставлении прав в базе данных в качестве лица, предоставившего эти права, обычно записывается текущий пользователь.Используя предложение GRANTED BY можно предоставлять права от имени другого пользователя.При использовании оператора REVOKE после GRANTED BY права будут удалены только в том случае, если они были зарегистрированы от удаляющего пользователя.Для облегчения миграции из некоторых других реляционных СУБД нестандартное предложение AS поддерживается как синоним оператора GRANTED BY.

Предложение GRANTED BY может использовать:

  • Владелец базы данных;

  • SYSDBA;

  • Любой пользователь, имеющий права на роль RDB$ADMIN и указавший её при соединении с базой данных;

  • При использовании флага AUTO ADMIN MAPPING — любой администратор операционной системы Windows (при условии использования сервером доверенной авторизации — trusted authentication), даже без указания роли.

Даже владелец роли не может использовать GRANTED BY, если он не находится в вышеупомянутом списке.