FirebirdSQL logo

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.