Оператор 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 FORGRANT 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 BYGRANTED 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 нет вообще никаких прав.