Clause WITH GRANT OPTION
La clause facultative WITH GRANT OPTION
permet aux utilisateurs spécifiés dans la liste des utilisateurs d’accorder à d’autres utilisateurs les privilèges spécifiés dans la liste des privilèges.
Opérateurs pour l'octroi de privilèges et l'attribution de rôles
WITH GRANT OPTION
La clause facultative WITH GRANT OPTION
permet aux utilisateurs spécifiés dans la liste des utilisateurs d’accorder à d’autres utilisateurs les privilèges spécifiés dans la liste des privilèges.
GRANTED BY
Lorsqu’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. L’utilisation de l’instruction REVOKE
après GRANTED BY
ne supprimera les droits que s’ils ont été enregistrés par l’utilisateur qui les a supprimés. Pour faciliter la migration depuis d’autres SGBD relationnels, l’instruction non standard AS est prise en charge comme synonyme de l’instruction GRANTED BY
.
La clause "accordé par" peut être utilisée :
Le propriétaire de la base de données ;
`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.
Contrairement aux autres objets de métadonnées, les tables et les vues peuvent utiliser plusieurs privilèges.
SELECT
Permet de sélectionner des données (SELECT
) dans une table ou une vue.
INSERT
Permet d’ajouter une entrée (INSERT
) dans une table ou une vue.
UPDATE
Permet de modifier les entrées (UPDATE
) dans une table ou une vue. Vous pouvez spécifier des restrictions afin que seules les colonnes spécifiées puissent être modifiées.
DELETE
Permet de supprimer des enregistrements (DELETE
) d’une table ou d’une vue.
REFERENCES
Doit être spécifié pour les colonnes sur lesquelles la clé primaire d’une table est construite si elle est référencée par la clé externe d’une autre table.
ALL
Combine les privilèges SELECT
, INSERT
, UPDATE
, DELETE
et REFERENCES
.
-- privilèges SELECT, INSERT à l'utilisateur ALEX
GRANT SELECT, INSERT ON TABLE SALES
TO USER ALEX;
-- Privilège SELECT pour les utilisateurs MANAGER, ENGINEER et IVAN
GRANT SELECT ON TABLE CUSTOMER
TO ROLE MANAGER, ROLE ENGINEER, USER IVAN;
-- Tous les privilèges du rôle d'ADMINISTRATEUR
-- avec la possibilité de déléguer leurs pouvoirs
GRANT ALL ON TABLE CUSTOMER
TO ROLE ADMINISTRATOR WITH GRANT OPTION;
-- privilèges SELECT et REFRENCE pour la colonne NOM pour tous les utilisateurs
GRANT SELECT, REFERENCES (NAME) ON TABLE COUNTRY
TO PUBLIC;
-- Accorder le privilège SELECT à l'utilisateur IVAN au nom de l'utilisateur ALEX
GRANT SELECT ON TABLE EMPLOYEE
TO USER IVAN GRANTED BY ALEX;
-- Privilège UPDATE pour les colonnes FIRST_NAME, LAST_NAME
GRANT UPDATE (FIRST_NAME, LAST_NAME) ON TABLE EMPLOYEE
TO USER IVAN;
-- Privilège INSERT pour la procédure stockée ADD_EMP_PROJ
GRANT INSERT ON EMPLOYEE_PROJECT
TO PROCEDURE ADD_EMP_PROJ;
Le privilège EXECUTE
(exécuter) s’applique aux procédures stockées, aux fonctions stockées, aux packages et aux fonctions externes héritées (UDF) définies comme DECLARE EXTERNAL FUNCTION
.
Pour les procédures stockées, le privilège EXECUTE
permet non seulement d’exécuter des procédures stockées mais aussi de sélectionner des données dans des procédures sélectives (à l’aide de l’opérateur SELECT
).
Note
|
Ce privilège ne peut être attribué qu’à l’ensemble du paquet, et non à des sous-programmes individuels. |
-- Privilège EXECUTE sur une procédure stockée
GRANT EXECUTE ON PROCEDURE ADD_EMP_PROJ
TO ROLE MANAGER;
-- Privilège EXECUTE sur une fonction stockée
GRANT EXECUTE ON FUNCTION GET_BEGIN_DATE TO ROLE MANAGER;
-- privilège EXECUTE par paquet
GRANT EXECUTE ON PACKAGE APP_VAR TO PUBLIC;
-- privilège EXECUTE sur une fonction donnée à un package
GRANT EXECUTE ON FUNCTION GET_BEGIN_DATE
TO PACKAGE APP_VAR;
Pour utiliser des objets de métadonnées autres que des tables, des vues, des procédures et fonctions stockées, des déclencheurs et des paquets dans des requêtes utilisateur, l’utilisateur doit se voir attribuer le privilège USAGE
pour ces objets. Étant donné que les procédures et fonctions stockées, les déclencheurs et les routines de paquets dans Firebird sont exécutés avec des privilèges d’utilisateur appelant, il peut être nécessaire d’attribuer le privilège USAGE
à ceux-ci également lors de l’utilisation de tels objets de métadonnées dans ceux-ci.
Note
|
Dans Firebird 3, le privilège |
Note
|
Le privilège |
-- privilège USAGE sur la cohérence du rôle délivré
GRANT USAGE ON SEQUENCE GEN_AGE TO ROLE MANAGER;
-- privilège USAGE sur la séquence émise au déclencheur
GRANT USAGE ON SEQUENCE GEN_AGE TO TRIGGER TR_AGE_BI;
-- privilège d'exemption USAGE accordé à un paquet
GRANT USAGE ON EXCEPTION E_ACCESS_DENIED
TO PACKAGE PKG_BILL;
Par défaut, seuls les Administrateurs peuvent créer de nouveaux objets de métadonnées, et les administrateurs et propriétaires de ces objets peuvent les modifier et les supprimer. L’octroi de privilèges pour créer, modifier ou supprimer des objets d’un type particulier permet d’étendre cette liste.
CREATE
Permet la création d’un objet du type de métadonnées spécifié.
ALTER ANY
Permet de modifier tout objet du type de métadonnées spécifié.
DROP ANY
Permet de supprimer tout objet du type de métadonnées spécifié.
ALL
Combine les privilèges CREATE
, ALTER
et DROP
sur le type d’objet spécifié.
Note
|
Les métadonnées des déclencheurs et des index héritent des privilèges des tables qui les possèdent. |
-- Autoriser l'utilisateur Joe à créer des tables
GRANT CREATE TABLE TO Joe;
-- Permettre à l'utilisateur Joe de modifier toutes les procédures
GRANT ALTER ANY PROCEDURE TO Joe;
L’instruction d’attribution de privilèges pour la création, la suppression et la modification d’une base de données a une forme légèrement différente de l’instruction d’attribution de privilèges DDL pour les autres objets de métadonnées.
CREATE
Permet la création d’une base de données.
ALTER
Permet de modifier la base de données actuelle.
DROP
Permet de supprimer la base de données actuelle.
ALL
Combine les privilèges ALTER
et DROP
par base de données.
Le privilège CREATE DATABASE
est un type de privilège spécial car il est stocké dans la base de données de sécurité. La liste des utilisateurs disposant du privilège CREATE DATABASE
peut être consultée dans la table virtuelle SEC$DB_CREATORS
. Seuls les Administrateurs de la base de données de sécurité peuvent accorder le privilège de créer une nouvelle base de données.
Les privilèges ALTER DATABASE
et DROP DATABASE
s’appliquent uniquement à la base de données actuelle, tandis que les privilèges DDL ALTER ANY
et DROP ANY
sur d’autres objets de métadonnées s’appliquent à tous les objets du type spécifié dans la base de données actuelle. Seuls les Administrateurs peuvent accorder des privilèges pour modifier et supprimer la base de données actuelle.