FirebirdSQL logo

L’opérateur REVOKE est utilisé pour révoquer les privilèges et les rôles, des utilisateurs et des autres objets de la base de données.

REVOKE

affectation

Abolition des privilèges ou sélection des rôles.

Disponible en

DSQL

Syntaxe (révocation des privilèges)
REVOKE [GRANT OPTION FOR] <privileges>
  FROM <grantee_list>
  [{GRANTED BY | AS} [USER] grantor]

<privileges> ::=
   Voir. GRANT syntaxe

<grantee_list> ::=
   Voir. GRANT syntaxe
Syntaxe (rappel de rôle)
REVOKE [ADMIN OPTION FOR] <role_granted>
  FROM <role_grantee_list>
  [{GRANTED BY | AS} [USER] grantor]

<role_granted> ::=
  Voir. GRANT syntaxe

<role_grantee_list> ::=
  Voir. GRANT syntaxe
Syntaxe (révoquer tous les privilèges)
REVOKE ALL ON ALL FROM <grantee_list>

<grantee_list> ::=
  GRANT syntaxe
Table 1. Paramètres de l’opérateur REVOKE.
Paramètre Description

grantor

Un utilisateur au nom duquel les privilèges sont révoqués.

L’instruction REVOKE remplace les privilèges accordés par l’instruction GRANT pour les utilisateurs, les rôles, les procédures stockées, les fonctions stockées, les packages, les déclencheurs et les vues. Pour une description détaillée des différents types de privilèges, voir GRANT.

Clause FROM

La clause FROM spécifie une liste d’utilisateurs, de rôles et d’objets de base de données (procédures, fonctions, packages, triggers et vues) auxquels les privilèges listés seront retirés. Les clauses optionnelles USER et ROLE vous permettent de spécifier qui possède le privilège. Si le mot-clé USER ou ROLE n’est pas spécifié, le serveur vérifie si le rôle portant ce nom existe, sinon les privilèges sont retirés à l’utilisateur.

Tip
Recommandation

Bien que les mots-clés USER et ROLE soient facultatifs, il est conseillé de les utiliser pour éviter toute confusion.

L’existence de l’utilisateur auquel les privilèges sont retirés n’est pas vérifiée lors de l’exécution de l’opérateur REVOKE. Si le privilège est retiré à un objet de la base de données, il est obligatoire de spécifier le type d’objet.

Important

Si des privilèges ont été attribués à un utilisateur spécial PUBLIC, alors les privilèges doivent être révoqués pour l’utilisateur PUBLIC. L’utilisateur spécial PUBLIC est utilisé lorsque tous les utilisateurs doivent se voir accorder des privilèges en même temps. Cependant, ne traitez pas l’utilisateur PUBLIC comme un groupe d’utilisateurs.

Exemples de révocation de privilèges

Example 1. Révocation des privilèges de table
-- Révocation des privilèges SELECT, INSERT d'une table
REVOKE SELECT, INSERT ON TABLE SALES FROM USER ALEX

-- révoquer le privilège SELECT des rôles MANAGER et ENGINEER et de l'utilisateur IVAN
REVOKE SELECT ON TABLE CUSTOMER
FROM ROLE MANAGER, ROLE ENGINEER, USER IVAN;

-- révocation des privilèges SELECT et REFERENCES pour l'utilisateur PUBLIC
REVOKE SELECT, REFERENCES (NAME) ON TABLE COUNTRY
FROM PUBLIC;

-- Révocation du privilège UPDATE pour les colonnes FIRST_NAME, LAST_NAME
REVOKE UPDATE (FIRST_NAME, LAST_NAME) ON TABLE EMPLOYEE
FROM USER IVAN;

-- Révocation du privilège INSERT de la procédure stockée ADD_EMP_PROJ
REVOKE INSERT ON EMPLOYEE_PROJECT
FROM PROCEDURE ADD_EMP_PROJ;
Example 2. Révocation du privilège "EXECUTER".
-- révocation du privilège EXECUTE sur la procédure
REVOKE EXECUTE ON PROCEDURE ADD_EMP_PROJ
FROM USER IVAN;

-- révocation du privilège EXECUTE par paquet
REVOKE EXECUTE ON PACKAGE DATE_UTILS
FROM USER ALEX;
Example 3. Révocation du privilège de usage.
-- Révocation du privilège USAGE sur une séquence de rôles émise
REVOKE USAGE ON SEQUENCE GEN_AGE FROM ROLE MANAGER;

-- Révocation du privilège USAGE sur une séquence délivrée à un déclencheur
REVOKE USAGE ON SEQUENCE GEN_AGE FROM TRIGGER TR_AGE_BI;

-- Révocation du privilège d'exemption USAGE accordé à un colis
REVOKE USAGE ON EXCEPTION E_ACCESS_DENIED
FROM PACKAGE PKG_BILL;
Example 4. Révocation des privilèges de modification des métadonnées
-- Retrait des privilèges de création de table à l'utilisateur Joe
REVOKE CREATE TABLE FROM Joe;

-- Retrait du privilège à l'utilisateur Joe de modifier toute procédure
REVOKE ALTER ANY PROCEDURE FROM Joe;

-- Révocation du privilège de l'utilisateur pour créer une base de données
-- de l'utilisateur Superuser
REVOKE CREATE DATABASE FROM USER Superuser;
Example 5. Révocation des privilèges du système
-- Révocation de tous les droits du privilège système USER_MANAGEMENT
-- pour représenter PLG$SRP_VIEW
REVOKE ALL ON PLG$SRP_VIEW FROM SYSTEM PRIVILEGE USER_MANAGEMENT;

Clause GRANT OPTION FOR

La clause facultative GRANT OPTION FOR révoque le droit pour l’utilisateur ou le rôle concerné d’accorder à d’autres utilisateurs ou rôles des privilèges sur des tables, des vues, des déclencheurs, des procédures stockées.

Révocation des privilèges à l’aide de l’option GRANT OPTION FOR.

Example 1. Révocation de privilège à l’aide de l’option GRANT OPTION FOR.
-- révoquer la possibilité de transférer n'importe lequel des privilèges par table
-- à d'autres utilisateurs ou rôles dans le rôle ADMINISTRATOR
REVOKE GRANT OPTION FOR ALL ON TABLE CUSTOMER
FROM ROLE ADMINISTRATOR;

-- révoquer le privilège EXECUTE sur une fonction
-- et la privation du droit de transférer le privilège
-- autres utilisateurs et rôles
REVOKE GRANT OPTION FOR
EXECUTE ON FUNCTION GET_BEGIN_DATE
FROM ROLE MANAGER;

Annulation des rôles attribués

Un autre objectif de l’opérateur REVOKE est de révoquer les rôles assignés aux utilisateurs ou aux rôles par l’opérateur GRANT. Dans ce cas, la phrase REVOKE est suivie d’une liste de rôles à révoquer à partir de la liste des utilisateurs ou des rôles spécifiés après la phrase FROM.

Plusieurs rôles et/ou bénéficiaires peuvent être gérés par un seul opérateur.

Clause ADMIN OPTION FOR

L’offre optionnelle ADMIN OPTION FOR annule une option administrative précédemment accordée (le droit de transférer un rôle accordé à un utilisateur à d’autres) aux bénéficiaires sans annuler les droits au rôle.

Exemples d’inversion des rôles

Example 1. Inversion des rôles
-- Retrait de DIRECTOR, MANAGER de l'utilisateur IVAN
REVOKE DIRECTOR, MANAGER FROM USER IVAN;

-- Retrait du rôle MANAGER par défaut de l'utilisateur FEDOR
REVOKE DEFAULT MANAGER FROM USER FEDOR;

-- Retrait du rôle de MANAGER et du droit de l'attribuer à d'autres utilisateurs
REVOKE ADMIN OPTION FOR MANAGER FROM USER ALEX;

Clause GRANTED BY

Lorsque l’on accorde des droits dans une base de données, l’utilisateur actuel est généralement enregistré comme la personne qui accorde les droits. En utilisant la clause GRANTED BY, il est possible d’accorder des droits au nom d’un autre utilisateur. Lorsque l’on utilise l’instruction REVOKE après GRANTED BY, les droits ne seront supprimés que s’ils ont été enregistrés par l’utilisateur qui les a supprimés. Pour faciliter la migration depuis d’autres bases de données relationnelles, l’instruction non standard AS est supportée comme synonyme de l’instruction GRANTED BY.

La phrase GRANTED BY peut être utilisée :

  • Le propriétaire de la base de données ;

  • LE SYSDBA ;

  • Tout utilisateur ayant des droits sur le rôle RDB$ADMIN et l’ayant spécifié lors de la connexion à la base de données ;

  • Lors de l’utilisation du drapeau AUTO ADMIN MAPPING — tout administrateur Windows (tant que le serveur utilise l’authentification de confiance), même sans spécifier un rôle.

Même le propriétaire du rôle ne peut pas utiliser `GRANTED BY' à moins qu’il ne soit dans la liste ci-dessus.

Révocation de privilèges à l’aide de `GRANTED BY

Example 1. Révocation de privilèges sur une table à l’aide de `GRANTED BY'.
-- révocation du privilège SELECT de l'utilisateur IVAN,
-- qui a été émis par l'utilisateur ALEX
REVOKE SELECT ON TABLE EMPLOYEE
FROM USER IVAN GRANTED BY ALEX;

REVOKE ALL ON ALL

Si le mot-clé REVOKE est suivi de la phrase ALL ON ALL, cela permet de révoquer tous les privilèges (y compris les rôles) sur tous les objets d’un ou plusieurs utilisateurs et/ou rôles. C’est un moyen rapide de clear (retirer) des droits lorsqu’un utilisateur doit être bloqué pour accéder à la base de données.

Note
  • Lorsque l’instruction REVOKE ALL ON ALL est appelée par un utilisateur privilégié (le propriétaire de la base de données, SYSDBA ou tout utilisateur avec CURRENT_ROLE — RDB$ADMIN), tous les droits sont supprimés indépendamment de celui qui les a accordés. Sinon, seuls les droits accordés par l’utilisateur actuel sont supprimés ;

  • La clause GRANTED BY n’est pas supportée ;

  • Cet opérateur ne supprime pas le drapeau d’un utilisateur qui a accordé des droits sur les procédures stockées, les triggers ou les vues (les droits sur ces objets sont bien sûr supprimés).

Example 1. Révocation de tous les privilèges et rôles des utilisateurs
REVOKE ALL ON ALL FROM IVAN;

Après avoir exécuté cette commande, l’utilisateur IVAN n’a aucun droit.

Voir aussi :

GRANT.