Exemples d’octroi de privilèges DDL sur une base de données
GRANT CREATE DATABASE TO USER Superuser;
ALTER DATABASE
pour la base de données courante.GRANT ALTER DATABASE TO USER Joe;
GRANT DROP DATABASE TO USER Fedor;
Opérateurs pour l'octroi de privilèges et l'attribution de rôles
GRANT CREATE DATABASE TO USER Superuser;
ALTER DATABASE
pour la base de données courante.GRANT ALTER DATABASE TO USER Joe;
GRANT DROP DATABASE TO USER Fedor;
La prise en charge des privilèges système dans le noyau rend très pratique l’octroi de privilèges supplémentaires aux utilisateurs qui disposent déjà de certains privilèges système. À cette fin, il est possible d’utiliser un ou plusieurs privilèges système en tant que bénéficiaire.
L’instruction suivante attribue tous les privilèges de la vue PLG$SRP_VIEW
utilisée dans le plugin de gestion des utilisateurs SRP
au privilège système USER_MANAGEMENT
.
GRANT ALL ON PLG$SRP_VIEW TO SYSTEM PRIVILEGE USER_MANAGEMENT
Une description des privilèges du système est disponible à l’adresse suivante CREATE ROLE
GRANT <role_granted> TO <role_grantee_list> [WITH ADMIN OPTION] [{GRANTED BY | AS} [USER] grantor] <role_granted> ::= [DEFAULT] role_name [, [DEFAULT] role_name ...] <role_grantee_list> ::= <role_grantee> [, <role_grantee> ...] <role_grantee> ::= [USER] username | [ROLE] grantee_role_name
L’opérateur GRANT
peut être utilisé pour attribuer des rôles à une liste d’utilisateurs ou de rôles, dans ce cas la clause GRANT est suivie d’une liste de rôles à attribuer à la liste d’utilisateurs ou de rôles spécifiée après la clause TO.
DEFAULT
Si le mot-clé DEFAULT
est utilisé, le(s) rôle(s) sera(ont) utilisé(s) par l’utilisateur ou le rôle à chaque fois, même s’il n’a pas été spécifié explicitement. Lors de la connexion, l’utilisateur recevra les privilèges de tous les rôles qui lui ont été attribués en utilisant le mot-clé DEFAULT
. Si l’utilisateur spécifie son rôle lors de la connexion, il recevra les privilèges de ce rôle (s’il lui a été attribué) et les privilèges de tous les rôles qui lui ont été attribués en utilisant le mot-clé DEFAULT
.
WITH ADMIN OPTION
La clause facultative WITH ADMIN OPTION
permet aux utilisateurs spécifiés dans la liste des utilisateurs de transférer leurs rôles à un autre utilisateur ou à un autre rôle. L’autorité du rôle ne peut être transférée de manière cumulative que si chaque rôle de la séquence de rôles est attribué en utilisant WITH ADMIN OPTION
.
-- Attribution des rôles de DIRECTEUR et de MANAGER à l'utilisateur IVAN
GRANT DIRECTOR, MANAGER TO USER IVAN;
-- Attribution du rôle ADMIN à l'utilisateur ALEX
-- avec la possibilité d'assigner celui-ci à d'autres utilisateurs
GRANT MANAGER TO USER ALEX WITH ADMIN OPTION;
DEFAULT
.-- Attribution du rôle de MANAGER à l'utilisateur JOHN
-- Les privilèges du rôle seront automatiquement attribués à l'utilisateur
-- à chaque fois qu'il s'identifiera. Dans ce cas, le rôle agit comme un groupe.
GRANT DEFAULT MANAGER TO USER JOHN;
-- L'utilisateur JOHN se verra désormais accorder automatiquement des privilèges lors de la connexion.
-- MANAGER (voir opérateur précédent) et DIRECTEUR
GRANT DEFAULT DIRECTOR TO USER JOHN;
-- Affectation du rôle de MANAGER au rôle de DIRECTEUR
-- avec la possibilité de transférer le rôle de MANAGER à d'autres utilisateurs ou rôles
GRANT MANAGER TO ROLE DIRECTOR WITH ADMIN OPTION;
-- Affectation du rôle de COMPTABLE au rôle de DIRECTEUR
-- lorsque vous vous connectez avec le rôle de DIRECTEUR, l'autorité du rôle de COMPTABLE
-- sera également accordé
GRANT DEFAULT ACCOUNTANT TO ROLE DIRECTOR;
-- L'utilisateur PETROV reçoit automatiquement l'autorité du rôle de DIRECTEUR.
-- Ces pouvoirs comprendront également l'autorité du rôle de l'ACCOUNTANT.
-- Pour obtenir l'autorité pour le rôle de MANAGER
-- vous devez spécifier ce rôle lors de la connexion ou plus tard avec l'opérateur SET ROLE
GRANT DEFAULT ROLE DIRECTOR TO USER PETROV;
PUBLIC
En SQL, il existe un utilisateur spécial PUBLIC
qui représente tous les utilisateurs. Si une opération est autorisée à l’utilisateur PUBLIC
, alors tout utilisateur authentifié peut effectuer cette opération sur l’objet spécifié.
Important
|
Si les privilèges sont attribués à l’utilisateur |
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.