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.
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.
Abolition des privilèges ou sélection des rôles.
DSQL
REVOKE [GRANT OPTION FOR] <privileges> FROM <grantee_list> [{GRANTED BY | AS} [USER] grantor] <privileges> ::= Voir.GRANT
syntaxe <grantee_list> ::= Voir.GRANT
syntaxe
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
REVOKE ALL ON ALL FROM <grantee_list>
<grantee_list> ::=
GRANT
syntaxe
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.
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 |
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 |
-- 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;
-- 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;
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;
-- 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;
-- 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;
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.
GRANT OPTION FOR
.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;
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.
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.
-- 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;
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 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
|
|
REVOKE ALL ON ALL FROM IVAN;
Après avoir exécuté cette commande, l’utilisateur IVAN
n’a aucun droit.