Предложение WITH GRANT OPTION
Необязательное предложение WITH GRANT OPTION позволяет пользователям, указанным в списке пользователей, передавать другим пользователям привилегии указанные в списке привилегий.
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, если он не находится в вышеупомянутом списке.
Для таблиц и представлений в отличие от других объектов метаданных возможно использовании сразу нескольких привилегий.
SELECTРазрешает выборку данных (SELECT) из таблицы или представления.
INSERTРазрешает добавлять записи (INSERT) в таблицу или представление.
UPDATEРазрешает изменять записи (UPDATE) в таблице или представлении.Можно указать ограничения, чтобы можно было изменять только указанные столбцы.
DELETEРазрешает удалять записи (DELETE) из таблицы или представления.
REFERENCESРазрешает ссылаться на указанные столбцы внешним ключом.Необходимо указать для столбцов, на которых построен первичный ключ таблицы, если на неё есть ссылка внешним ключом другой таблицы.
ALLОбъединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES.
GRANT <privilege> для таблиц-- Привилегии SELECT, INSERT пользователю ALEX
GRANT SELECT, INSERT ON TABLE SALES
TO USER ALEX;
-- Привилегия SELECT ролям MANAGER, ENGINEER и пользователю IVAN
GRANT SELECT ON TABLE CUSTOMER
TO ROLE MANAGER, ROLE ENGINEER, USER IVAN;
-- Все привилегии для роли ADMINISTRATOR
-- с возможностью передачи своих полномочий
GRANT ALL ON TABLE CUSTOMER
TO ROLE ADMINISTRATOR WITH GRANT OPTION;
-- Привилегии SELECT и REFRENCE для столбца NAME для всех пользователей
GRANT SELECT, REFERENCES (NAME) ON TABLE COUNTRY
TO PUBLIC;
-- Выдача привилегии SELECT для пользователя IVAN от имени пользователя ALEX
GRANT SELECT ON TABLE EMPLOYEE
TO USER IVAN GRANTED BY ALEX;
-- Привилегия UPDATE для столбцов FIRST_NAME, LAST_NAME
GRANT UPDATE (FIRST_NAME, LAST_NAME) ON TABLE EMPLOYEE
TO USER IVAN;
-- Привилегия INSERT для хранимой процедуры ADD_EMP_PROJ
GRANT INSERT ON EMPLOYEE_PROJECT
TO PROCEDURE ADD_EMP_PROJ;
EXECUTEПривилегия EXECUTE (выполнение) применима к хранимым процедурам, хранимым функциям, пакетам и унаследованным внешним функциям (UDF), определяемых как DECLARE EXTERNAL FUNCTION.
Для хранимых процедур привилегия EXECUTE позволяет не только выполнять хранимые процедуры, но и делать выборку данных из селективных процедур (с помощью оператора SELECT).
|
Note
|
Привилегия может быть назначена только для всего пакета, а не для отдельных его подпрограмм. |
EXECUTEEXECUTE-- Привилегия EXECUTE на хранимую процедуру
GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ
TO ROLE MANAGER;
-- Привилегия EXECUTE на хранимую функцию
GRANT EXECUTE ON FUNCTION GET_BEGIN_DATE TO ROLE MANAGER;
-- Привилегия EXECUTE на пакет
GRANT EXECUTE ON PACKAGE APP_VAR TO PUBLIC;
-- Привилегия EXECUTE на функцию выданная пакету
GRANT EXECUTE ON FUNCTION GET_BEGIN_DATE
TO PACKAGE APP_VAR;
USAGEДля использования объектов метаданных, отличных от таблиц, представлений, хранимых процедур и функций, триггеров и пакетов, в пользовательских запросах необходимо предоставить пользователю привилегию USAGE для этих объектов.Поскольку в Firebird хранимые процедуры и функции, триггеры и подпрограммы пакетов выполняются с привилегиями вызывающего пользователя, то при использовании таких объектов метаданных в них, может потребоваться назначить привилегию USAGE и для них.
|
Note
|
В Firebird 3 привилегия |
|
Note
|
Привилегия |
USAGEUSAGE-- Привилегия USAGE на последовательность выданная роли
GRANT USAGE ON SEQUENCE GEN_AGE TO ROLE MANAGER;
-- Привилегия USAGE на последовательность выданная триггеру
GRANT USAGE ON SEQUENCE GEN_AGE TO TRIGGER TR_AGE_BI;
-- Привилегия USAGE на исключение выданная пакету
GRANT USAGE ON EXCEPTION E_ACCESS_DENIED
TO PACKAGE PKG_BILL;
По умолчанию создавать новые объекты метаданных могут только Администраторы, а изменять и удалять — администраторы и владельцы этих объектов.Выдача привилегий на создание, изменение или удаление объектов конкретного типа позволяет расширить этот список.
CREATEРазрешает создание объекта указанного типа метаданных.
ALTER ANYРазрешает изменение любого объекта указанного типа метаданных.
DROP ANYРазрешает удаление любого объекта указанного типа метаданных.
ALLОбъединяет привилегии CREATE, ALTER и DROP на указанный тип объекта.
|
Note
|
Метаданные триггеров и индексов наследуют привилегии таблиц, которые владеют ими. |
-- Разрешение пользователю Joe создавать таблицы
GRANT CREATE TABLE TO Joe;
-- Разрешение пользователю Joe изменять любые процедуры
GRANT ALTER ANY PROCEDURE TO Joe;
Оператор назначения привилегий на создание, удаление и изменение базы данных имеет несколько отличную форму от оператора назначения DDL привилегий на другие объекты метаданных.
CREATEРазрешает создание базы данных.
ALTERРазрешает изменение текущей базы данных.
DROPРазрешает удаление текущей базы данных.
ALLОбъединяет привилегии ALTER и DROP на базу данных.
Привилегия CREATE DATABASE является особым видом привилегий, поскольку она сохраняется в базе данных безопасности.Список пользователей имеющих привилегию CREATE DATABASE можно посмотреть в виртуальной таблице SEC$DB_CREATORS.Привилегию на создание новой базы данных могут выдавать только Администраторы в базе данных безопасности.
Привилегии ALTER DATABASE и DROP DATABASE относятся только к текущей базе данных, тогда как DDL привилегии ALTER ANY и DROP ANY на другие объекты метаданных относятся ко всем объектам указанного типа внутри текущей базы данных.Привилегии на изменение и удаление текущей базы данных могут выдавать только Администраторы.