Créer une connexion
Syntaxe SQL Server
CREATE LOGIN <login> WITH PASSWORD = ’<Mot de passe>’;
Exemple avec SQL Server
Création de la connexion SQL au serveur à partir de la base ’master’ qui est une base système :
USE master;
GO
CREATE LOGIN ASMITH
WITH PASSWORD = ’Infogestion’;
Créer un utilisateur
Les utilisateurs sont souvent créés par l’administrateur de la base selon des règles de sécurité propres à chaque
entreprise. La commande de création d’un user est assez simple. Avec SQL Server, l’utilisateur est créé à partir
de la connexion.
Syntaxe SQL Server
CREATE ’<user>’ FROM LOGIN <login>
Exemple avec SQL Server
USE RESAHOTEL;
GO
CREATE USER ASMITH FROM LOGIN ASMITH;
La création d’un utilisateur ne lui permet pas d’accéder aux tables et de faire des sélections. Il faut ensuite lui
attribuer des droits spécifiques en fonction de son profil.
Changer le mot de passe d’un utilisateur
Pour des raisons de sécurité, il peut être nécessaire de modifier le mot de passe d’un utilisateur. Dans la plupart
des systèmes, c’est le DBA qui peut utiliser cette commande.
Syntaxe SQL Server
ALTER LOGIN <user> WITH PASSWORD=’mypass’;
Exemple SQL Server
USE [master];
GO
ALTER LOGIN ASMITH WITH PASSWORD=’@Smith.50’;
1
Attribuer des droits (GRANT)
1. Attribuer des droits sur la manipulation d’une table
À partir de ces quelques tables d’exemples, nous allons pouvoir attribuer les droits aux utilisateurs avec les
ordres GRANT et REVOKE.
L’attribution des droits est réservée aux créateurs de la table, néanmoins l’administrateur de la base peut donner
l’autorisation à un autre user la possibilité de gérer les droits sur les tables.
La commande GRANT permet d’attribuer par utilisateur de la base de données des accès sur une ou plusieurs
tables.
Les droits les plus couramment utilisés sont :
SELECT : autorise la sélection de données.
UPDATE : autorise la modification de données.
DELETE : autorise la suppression de données.
INSERT : autorise l’insertion de données.
La syntaxe est la suivante
GRANT <droit1>, <droit2>, ...
ON TABLE <nom table>
TO <user1>, <user2> ...
[ WITH GRANT OPTION]
Pour attribuer tous les droits, il faut utiliser la syntaxe suivante :
Exemple SQL Server
ALTER AUTHORIZATION ON SCHEMA::[db_owner] TO [ASMITH]
Interdire l’accès (DENY)
1. Interdire l’accès à certains objets de la base
Avec SQL Server, il est possible d’interdire l’accès à certains objets de la base avec l’ordre DENY.
Exemple SQL Server
Interdit à M. Peroc de modifier la table ATTRIB_DROITS :
DENY ALTER ON ATTRIB_DROITS TO GPEROC
Interdit tout à M. Peroc sur la table ATTRIB_DROITS :
DENY VIEW DEFINITION ON ATTRIB_DROITS TO GPEROC
DENY VIEW CHANGE TRACKING ON ATTRIB_DROITS TO GPEROC
DENY CONTROL ON ATTRIB_DROITS TO GPEROC
DENY INSERT ON ATTRIB_DROITS TO GPEROC
DENY UPDATE ON ATTRIB_DROITS TO GPEROC
2
DENY ALTER ON ATTRIB_DROITS TO GPEROC
DENY TAKE OWNERSHIP ON ATTRIB_DROITS TO GPEROC
DENY REFERENCES ON ATTRIB_DROITS TO GPEROC
DENY SELECT ON ATTRIB_DROITS TO GPEROC
DENY DELETE ON ATTRIB_DROITS TO GPEROC
Supprimer des droits (REVOKE)
1. Supprimer des droits sur la manipulation d’une table
Une fois les droits attribués, il faut pouvoir les enlever si l’utilisateur quitte l’entreprise par exemple ou change de
service. Pour ceci, nous utiliserons l’ordre REVOKE.
Pour enlever les droits de lecture de la table UTILISATEURS à Mr SMITH par exemple :
REVOKE SELECT ON UTILISATEURS FROM ASMITH;
Pour enlever tous les droits à Mr Smith :
REVOKE ALL PRIVILEGES ON UTILISATEURS FROM ASMITH;
De la même façon que le GRANT, si on ajoute le mot PUBLIC, on supprime les droits sur cette table pour tous les
utilisateurs de la base de données.
REVOKE ALL PRIVILEGES ON UTILISATEURS FROM PUBLIC;
Exemple Oracle
REVOKE CREATE TABLE, ALTER ANY TABLE, DROP ANY TABLE FROM ...
Utilisation des rôles
Un rôle est un groupe auquel on va attribuer les mêmes droits. Au lieu d’attribuer les droits individuellement à
chaque utilisateur, on peut créer des groupes qui auront des droits et ensuite affecter les utilisateurs dans un
groupe.
Pour SQL Server
GRANT UPDATE ON FOURNISSEUR TO CONTROLE_GESTION
Il faut ensuite attribuer ce rôle aux utilisateurs :
GRANT CONTROLE_GESTION TO ASMITH;
GRANT CONTROLE_GESTION TO BMARTIN;
etc ...
exec sp_addrolemember [CONTROLE_GESTION], ASMITH;
La notion de rôle est assez intéressante dans les sites avec beaucoup d’utilisateurs, elle permet de simplifier la
gestion des différents profils.
Il faut bien définir en amont les différents rôles dans l’utilisation de la base de données et dans les applications
existantes et ensuite classer les utilisateurs par rôle. À chaque nouvel arrivant, il suffit de créer son user et de lui
attribuer un rôle.
3
Il existe également ...