Contenu du cours
Techniques Avancées en SQL
Techniques Avancées en SQL
Langage de Contrôle des Données
Langage de Contrôle des Données (DCL) est un sous-ensemble de SQL utilisé pour contrôler l'accès aux données stockées dans un système de gestion de base de données relationnelle.
Les commandes DCL sont principalement concernées par l'octroi ou la révocation de privilèges sur des objets de base de données tels que les tables, les vues et les schémas.
Commandes DCL
Les deux principales commandes DCL sont :
-
GRANT
: Cette commande est utilisée pour donner des privilèges spécifiques aux utilisateurs ou aux rôles; -
REVOKE
: Cette commande est utilisée pour retirer des privilèges spécifiques aux utilisateurs ou aux rôles qui ont été précédemment accordés.
Privilèges
Objets
Mise en œuvre
Pour accorder certains privilèges pour un objet en SQL à un utilisateur particulier, nous pouvons utiliser l'instruction suivante :
GRANT privileges
ON object
TO {user | role | PUBLIC};
Il existe 3 types de rôles dans la base de données auxquels vous pouvez accorder certains privilèges :
- user : Un utilisateur individuel de la base de données ;
- role : Un rôle de base de données, un groupe nommé de privilèges qui peut être attribué aux utilisateurs (par exemple, admin, développeur, analyste) ;
- PUBLIC : Un mot-clé spécial qui accorde les privilèges spécifiés à tous les utilisateurs.
Nous pouvons accorder un rôle à un utilisateur en utilisant l'instruction suivante :
GRANT role TO user;
Enfin, nous pouvons révoquer les privilèges précédemment accordés en utilisant l'instruction suivante :
REVOKE privileges
ON object
FROM {user | role | PUBLIC};
Exemple
Voici quelques exemples d'utilisation de la commande GRANT
pour attribuer différents privilèges sur les tables bankaccounts et userlogs à différents rôles et utilisateurs.
-- Create role
CREATE ROLE bank_manager;
-- Grant privileges to bank_manager role
GRANT SELECT, INSERT, UPDATE, DELETE ON BankAccounts TO bank_manager;
GRANT SELECT, INSERT ON UserLogs TO bank_manager;
-- Create users
CREATE USER john WITH PASSWORD 'password123';
CREATE USER jane WITH PASSWORD 'password456';
-- Assign roles to users
GRANT bank_manager TO john;
GRANT bank_manager TO jane;
Nous pouvons maintenant révoquer certains des privilèges accordés :
-- Revoke privileges from bank_manager role
REVOKE UPDATE, DELETE ON BankAccounts FROM bank_manager;
REVOKE INSERT ON UserLogs FROM bank_manager;
-- Revoke bank_manager role from john
REVOKE bank_manager FROM john;
Merci pour vos commentaires !