Le langage de contrôle des données est un sous-ensemble du langage d’interrogation structuré. Les administrateurs de bases de données utilisent le DCL pour configurer l’accès sécurisé aux bases de données relationnelles. Il complète le Data Definition Language, qui permet d’ajouter et de supprimer des objets de base de données, et le Data Manipulation Language, qui permet de récupérer, d’insérer et de modifier le contenu d’une base de données.

Le DCL est le plus simple des sous-ensembles SQL, puisqu’il ne comprend que trois commandes : GRANT, REVOKE et DENY. Combinées, ces trois commandes offrent aux administrateurs la possibilité de définir et de supprimer des autorisations de base de données de manière granulaire.

COMMENT OUVRIR L’INVITE DE COMMANDE DANS UN DOSSIER ?

Ajout d’autorisations avec la commande GRANT

La commande GRANT permet d’ajouter de nouvelles autorisations à un utilisateur de la base de données. Elle possède une syntaxe très simple, définie comme suit :

GRANT [privilège]
SUR [objet]
À [utilisateur]
[AVEC L’OPTION GRANT]

Voici le détail de chacun des paramètres que vous pouvez fournir avec cette commande :

Privilège - peut être soit le mot clé ALL (pour accorder une grande variété d'autorisations), soit une autorisation spécifique à une base de données ou un ensemble d'autorisations. Les exemples incluent CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE et CREATE VIEW.
Objet : peut être n'importe quel objet de base de données. Les options de privilège valides varient en fonction du type d'objet de base de données que vous incluez dans cette clause. En général, l'objet est une base de données, une fonction, une procédure stockée, une table ou une vue.
Utilisateur - peut être n'importe quel utilisateur de la base de données. Vous pouvez également substituer un rôle à l'utilisateur dans cette clause si vous souhaitez utiliser la sécurité de la base de données basée sur les rôles.
Si vous incluez la clause facultative WITH GRANT OPTION à la fin de la commande GRANT, vous accordez non seulement à l'utilisateur spécifié les autorisations définies dans l'instruction SQL, mais vous lui donnez également la permission d'accorder ces mêmes autorisations à d'autres utilisateurs de la base de données. Pour cette raison, utilisez cette clause avec précaution.

Par exemple, supposons que vous souhaitiez accorder à l’utilisateur Joe la possibilité d’extraire des informations de la table des employés dans une base de données appelée HR. Utilisez la commande SQL suivante :

GRANT SELECT
ON HR.employees
TO Joe

Joe peut récupérer des informations de la table des employés. Il ne pourra cependant pas accorder à d’autres utilisateurs l’autorisation d’extraire des informations de cette table car le script DCL n’a pas inclus la clause WITH GRANT OPTION.

Révocation de l’accès à une base de données

La commande REVOKE supprime l’accès à la base de données d’un utilisateur à qui cet accès a été précédemment accordé. La syntaxe de cette commande est définie comme suit :

REVOKE [GRANT OPTION FOR] [permission] ON [object].
ON [objet]
à partir de [utilisateur].
[CASCADE]

COMMENT CHANGER DE RÉPERTOIRE DANS L’INVITE DE COMMANDE

Voici le détail des paramètres de la commande REVOKE :

Permission - spécifie les autorisations de la base de données à retirer à l'utilisateur identifié. La commande révoque les assertions GRANT et DENY faites précédemment pour l'autorisation identifiée.
Objet - peut être n'importe quel objet de la base de données. Les options de privilège valides varient en fonction du type d'objet de base de données que vous incluez dans cette clause. En général, l'objet est une base de données, une fonction, une procédure stockée, une table ou une vue.
Utilisateur - peut être n'importe quel utilisateur de la base de données. Vous pouvez également substituer un rôle à l'utilisateur dans cette clause si vous souhaitez utiliser la sécurité de la base de données basée sur les rôles.
La clause GRANT OPTION FOR supprime la capacité de l'utilisateur spécifié à accorder l'autorisation spécifiée à d'autres utilisateurs. Si vous incluez la clause GRANT OPTION FOR dans une instruction REVOKE, l'autorisation principale n'est pas révoquée. Cette clause ne révoque que la capacité d'octroi.
L'option CASCADE révoque également l'autorisation spécifiée pour tous les utilisateurs auxquels l'utilisateur spécifié a accordé l'autorisation.

La commande suivante révoque l’autorisation accordée à Joe dans l’exemple précédent :

REVOKE SELECT
ON HR.employees
FROM Joe

Refuser explicitement l’accès à une base de données

La commande DENY empêche explicitement un utilisateur de recevoir une autorisation particulière. Cette fonction est utile lorsqu’un utilisateur est membre d’un rôle ou d’un groupe qui se voit accorder une autorisation, et que vous voulez empêcher cet utilisateur individuel d’hériter de cette autorisation en créant une exception. La syntaxe de cette commande est la suivante :

DENY [permission]
ON [objet]
À [utilisateur]

Les paramètres de la commande DENY sont identiques à ceux utilisés pour la commande GRANT. Par exemple, si vous souhaitez vous assurer que Matthieu ne recevra jamais la possibilité de supprimer des informations de la table des employés, lancez la commande suivante :

DENY DELETE
ON HR.employees
À Matthieu