Оператор REVOKE
используется для отзыва привилегий и ролей, у пользователей и других объектов базы данных.
Оператор REVOKE
используется для отзыва привилегий и ролей, у пользователей и других объектов базы данных.
Отмена привилегий или отбор ролей.
DSQL
REVOKE [GRANT OPTION FOR] <privileges> FROM <grantee_list> [{GRANTED BY | AS} [USER] grantor] <privileges> ::= См.GRANT
синтаксис <grantee_list> ::= См.GRANT
синтаксис
REVOKE [ADMIN OPTION FOR] <role_granted> FROM <role_grantee_list> [{GRANTED BY | AS} [USER] grantor] <role_granted> ::= См.GRANT
синтаксис <role_grantee_list> ::= См.GRANT
синтаксис
REVOKE ALL ON ALL FROM <grantee_list>
<grantee_list> ::=
GRANT
синтаксис
Параметр | Описание |
---|---|
grantor |
Пользователь от имени, которого отзываются привилегии. |
Оператор REVOKE
отменяет привилегии для пользователей, ролей, хранимых процедур, хранимых функций, пакетов, триггеров и представлений выданные оператором GRANT
.Подробное описание различных типов привилегий см.в GRANT.
FROM
В предложении FROM
указывается список пользователей, ролей и объектов базы данных (процедур, функций, пакетов, триггеров и представлений) у которых будут отняты перечисленные привилегии.Необязательные предложения USER
и ROLE
позволяют уточнить, у кого именно выдаётся привилегия.Если ключевое слово USER
или ROLE
не указано, то сервер проверяет, существует ли роль с данным именем, если таковой не существует, то привилегии отбираются у пользователя.
Tip
|
Рекомендация
Несмотря на то, что ключевые слова |
Существование пользователя, у которого отбираются права, не проверяются при выполнении оператора REVOKE
.Если привилегия отбирается у объекта базы данных, то необходимо обязательно указывать тип объекта.
Important
|
Если привилегии были назначены специальному пользователю |
-- отзыв привилегий SELECT, INSERT у таблицы
REVOKE SELECT, INSERT ON TABLE SALES FROM USER ALEX
-- отзыв привилегии SELECT у ролей MANAGER и ENGINEER и пользователя IVAN
REVOKE SELECT ON TABLE CUSTOMER
FROM ROLE MANAGER, ROLE ENGINEER, USER IVAN;
-- отзыв привилегий SELECT и REFERENCES у пользователя PUBLIC
REVOKE SELECT, REFERENCES (NAME) ON TABLE COUNTRY
FROM PUBLIC;
-- отзыв привилегии UPDATE для столбцов FIRST_NAME, LAST_NAME
REVOKE UPDATE (FIRST_NAME, LAST_NAME) ON TABLE EMPLOYEE
FROM USER IVAN;
-- отзыв привилегии INSERT у хранимой процедуры ADD_EMP_PROJ
REVOKE INSERT ON EMPLOYEE_PROJECT
FROM PROCEDURE ADD_EMP_PROJ;
EXECUTE
-- отзыв привилегии EXECUTE на процедуру
REVOKE EXECUTE ON PROCEDURE ADD_EMP_PROJ
FROM USER IVAN;
-- отзыв привилегии EXECUTE на пакет
REVOKE EXECUTE ON PACKAGE DATE_UTILS
FROM USER ALEX;
USAGE
-- Отзыв привилегии USAGE на последовательность выданной роли
REVOKE USAGE ON SEQUENCE GEN_AGE FROM ROLE MANAGER;
-- Отзыв привилегии USAGE на последовательность выданной триггеру
REVOKE USAGE ON SEQUENCE GEN_AGE FROM TRIGGER TR_AGE_BI;
-- Отзыв привилегии USAGE на исключение выданной пакету
REVOKE USAGE ON EXCEPTION E_ACCESS_DENIED
FROM PACKAGE PKG_BILL;
-- Отзыв у пользователя Joe привилегии на создание таблиц
REVOKE CREATE TABLE FROM Joe;
-- Отзыв у пользователя Joe привилегии на изменение любой процедуры
REVOKE ALTER ANY PROCEDURE FROM Joe;
-- Отзыв привилегии пользователю на создание базы данных
-- у пользователя Superuser
REVOKE CREATE DATABASE FROM USER Superuser;
-- Отзыв у системной привилегии USER_MANAGEMENT всех прав
-- на представление PLG$SRP_VIEW
REVOKE ALL ON PLG$SRP_VIEW FROM SYSTEM PRIVILEGE USER_MANAGEMENT;
GRANT OPTION FOR
Необязательное предложение GRANT OPTION FOR
отменяет для соответствующего пользователя или роли право предоставления другим пользователям или ролям привилегии к таблицам, представлениям, триггерам, хранимым процедурам.
GRANT OPTION FOR
GRANT OPTION FOR
-- отмена возможности передавать любую из привилегии на таблицу
-- другим пользователям или ролям у роли ADMINISTRATOR
REVOKE GRANT OPTION FOR ALL ON TABLE CUSTOMER
FROM ROLE ADMINISTRATOR;
-- отзыв привилегии EXECUTE на функцию
-- и лишение права передавать эту привилегию
-- другим пользователям и ролям
REVOKE GRANT OPTION FOR
EXECUTE ON FUNCTION GET_BEGIN_DATE
FROM ROLE MANAGER;
Другое назначение оператора REVOKE
в отзыве назначенных пользователям или ролям ролей оператором GRANT
.В этом случае после предложения REVOKE
следует список ролей, которые будут отозваны у списка пользователей или ролей, указанных после предложения FROM.
В одном операторе могут быть обработаны несколько ролей и/или грантополучателей.
ADMIN OPTION FOR
Необязательное предложение ADMIN OPTION FOR
отменяет ранее предоставленную административную опцию (право на передачу предоставленной пользователю роли другим) из грантополучателей, не отменяя прав на роль.
-- Отзыв ролей DIRECTOR, MANAGER у пользователя IVAN
REVOKE DIRECTOR, MANAGER FROM USER IVAN;
-- Отзыв умолчательной роли MANAGER у пользователя FEDOR
REVOKE DEFAULT MANAGER FROM USER FEDOR;
-- Отзыв роли MANAGER и права назначать её другим пользователям
REVOKE ADMIN OPTION FOR MANAGER FROM USER ALEX;
GRANTED BY
При предоставлении прав в базе данных в качестве лица, предоставившего эти права, обычно записывается текущий пользователь.Используя предложение GRANTED BY
можно предоставлять права от имени другого пользователя.При использовании оператора REVOKE
после GRANTED BY
права будут удалены только в том случае, если они были зарегистрированы от удаляющего пользователя.Для облегчения миграции из некоторых других реляционных СУБД нестандартное предложение AS
поддерживается как синоним оператора GRANTED BY
.
Предложение GRANTED BY
может использовать:
Владелец базы данных;
SYSDBA
;
Любой пользователь, имеющий права на роль RDB$ADMIN
и указавший её при соединении с базой данных;
При использовании флага AUTO ADMIN MAPPING
— любой администратор операционной системы Windows (при условии использования сервером доверенной авторизации — trusted authentication), даже без указания роли.
Даже владелец роли не может использовать GRANTED BY
, если он не находится в вышеупомянутом списке.
GRANTED BY
GRANTED BY
-- отзыв привилегии SELECT у пользователя IVAN,
-- которая была выдана пользователем ALEX
REVOKE SELECT ON TABLE EMPLOYEE
FROM USER IVAN GRANTED BY ALEX;
REVOKE ALL ON ALL
Если после ключевого слова REVOKE
указано предложение ALL ON ALL
, то это позволяет отменить все привилегии (включая роли) на всех объектах от одного или более пользователей и/или ролей.Это быстрый способ “очистить” (отобрать) права, когда пользователю должен быть заблокирован доступ к базе данных.
Note
|
|
REVOKE ALL ON ALL FROM IVAN;
После выполнения этой команды у пользователя IVAN
нет вообще никаких прав.