Académique Documents
Professionnel Documents
Culture Documents
Grgory CASANOVA
Sommaire
Introduction ..................................................................................................................................... 4
2.1.1
En gnral ........................................................................................................................ 5
2.1.2
En dtail ........................................................................................................................... 5
2.2
En gnral ........................................................................................................................ 5
2.2.2
En dtail ........................................................................................................................... 5
2.3.1
2.3.2
2.4
2.4.1
2.4.2
2.4.3
2.4.4
3.1.1
3.1.2
3.2
3.2.1
3.2.2
3.3
2.2.1
2.3
3.3.1
3.3.2
4.1.1
4.1.2
4.2
4.2.2
4.3
4.3.1
4.3.2
5.1.2
5.2.1
5.2.2
5.3
5.3.1
5.3.2
5.4
Droits dinstruction................................................................................................................ 15
5.1.1
5.2
6.2
6.2.1
6.2.2
Conclusion ..................................................................................................................................... 23
1 Introduction
La scurit est un domaine important dans les bases de donnes. Sans scurit, nos donnes
sont exposes des risques daltration de tous types, le plus souvent cause des utilisateurs finaux,
ou dune mauvaise politique de gestion des bases. Il existe dans SQL Server 2008, trois types dobjets
qui vont nous permettre de scuriser nos bases et donc garantir une plus grande chance dintgrits
pour nos donnes. Ces trois types sont :
-
Les entits de scurit : compte de scurit qui dispose dun accs au serveur de donnes
SQL.
Les scurisables : objets grs par le serveur. Nous avons vu prcdemment ce qutait un
objet dans une base de donnes ou dans un serveur.
Les autorisations : celles-ci sont accordes aux entits de scurit afin de pouvoir travailler
avec les scurisables.
Ces lments de scurit ont une organisation de type hirarchique. Cette hirarchie va nous
permettre de mettre en place une politique sure, afin de maintenir lintgrit de nos donnes, en
faisant en sorte que cette gestion des droits daccs soit simple, mais efficace. Par exemple, de faon
hirarchique, on pourra accorder lautorisation SELECT , un scurisable, par exemple un schma,
pour permettre lentit de scurit qui reoit cette autorisation deffectuer lopration SELECT sur
tous les objets contenus dans le schma dfinit. Parlons rapidement des schmas. Il en existe trois
types dfinis. Les schmas de niveau serveur, qui vont sappliquer toutes les bases de donnes
implants sur le serveur. Les schmas de niveau base de donnes, actifs seulement sur la base de
donnes ou il est dfinit. Et enfin les rles dapplication, dfinis sur la base de donnes utilisateur et
qui vont permettre le bon fonctionnement dune application cliente. Nous parlerons plus amplement
des schmas dans la suite de ce chapitre. Dautres scurisables existent, par exemple les utilisateurs
simples, les groupes Leur organisation vis--vis des autres lments de scurit ce fait aussi de
manire hirarchique, comme pour les schmas.
Il est possible dobtenir un catalogue complet des utilisateurs et de leurs privilges, grce aux vues
systme. Voici quelques une de ces vues :
-
Apprenons maintenant toutes les manires de prserver lintgrit des donnes de nos bases, en
mettant en place une politique de scurit efficace.
En gnral
Dans ce mode de scurit, SQL Server sappui sur les fonctionnalits de Windows. En effet, il
se sert de la scurit de Windows (login et mot de passe) pour crer des connexions aux instances et
donc aux bases de donnes. Puisque le mode de scurit Windows se sert de la scurit du systme
sur lequel SQL Server est install, la gestion des groupes est aussi possible. Il est donc plus facile
dadministrer des connexions aux bases de donnes, de manire plus souple quutilisateur par
utilisateur.
2.1.2
En dtail
En ralit, seuls les login sont sauvegards dans linstance, de faon permettre laccs aux
bases par la suite. Le mot de passe de chaque utilisateur est dtenu par Windows. Vous comprendrez
aisment quil est bien plus scuris de ne pas stocker le mot de passe dun utilisateur directement
dans une base systme. De plus, la politique dadministration et de scurit qui nonce la rgle
suivante : un mot de passe par utilisateur, est bien plus simple mettre en place.
En gnral
Le mode de scurit mixte repose sur une double authentification : lauthentification
Windows puis lauthentification SQL Server. Cest le mode le plus connu pour la scurit des bases de
donnes. Dans le principe, cest SQL Server qui ce charge de vrifier que lutilisateur existe et quil
possde le bon mot de passe. Cela signifie que les utilisateurs sont entirement grs par SQL Server,
autant les login que les mots de passe. Ce type didentification est bien adapt pour une gestion des
utilisateurs qui ne passent pas par une authentification Windows la base.
2.2.2
En dtail
Il est faux de penser que toute la scurit du serveur est gre par le serveur de base de
donnes. Le fonctionnement mixte est bas sur un principe de vrification simple. Le systme
Windows vrifie si lutilisateur existe et possde les droits de se connecter au serveur. Si cest le cas,
lutilisateur sera connect. Si ce nest pas le cas, une erreur est leve, nonant que lutilisateur
nexiste pas sur le systme. Le serveur de base de donnes est alors charg de demander le login et
le mot de passe de la connexion.
Avec SSMS
Avec SSMS, il va falloir vous rendre directement dans les proprits de votre instance afin de
modifier le mode de scurit. Voici la fentre sur laquelle vous devez vous rendre afin doprer aux
modifications :
Linterface graphique SSMS permet tout aussi bien de modifier les proprits dune
connexion ou bien de la supprimer simplement.
2.4.1.2 Avec du code T-SQL
Avec du code T-SQL, la syntaxe de cration dune connexion SQL Server est la suivante :
CREATE LOGIN nom_connexion
FROM WINDOWS
WITH DEFAULT_DATABASE=Master
DEFAULT_LANGUAGE=langue
Linstruction CREATE LOGIN permet dannoncer SQL Server que nous allons crer une
connexion. Il est ncessaire de donner le nom de la connexion Windows associe. La clause FROM
WINDOWS, permet de dire que le login existe dans le systme dexploitation Windows. Les deux
options suivantes permettent quand elles de choisir, et la base par dfaut de la connexion, et la
langue par dfaut de cette mme connexion.
Note : Il est important de noter que les instructions UPDATE et DELETE peuvent tre appliques dans le cas dun
changement de proprit de connexion ou dune suppression de connexion.
2.4.2
Dans le menu Gnral, nous choisirons Authentification SQL Server. Il ne vous restera donc
plus qu donner un nom la connexion et un mot de passe dans le champs prvu cet effet.
Comme prcdemment, linterface graphique permet de modifier ou bien supprimer une connexion.
2.4.2.2 Avec du code T-SQL
CREATE LOGIN nom_connexion
FROM PASSWORD='monmotdepasse'
Motdepasse HASHED MUST_CHANGED,
DEFAULT_DATABASE=Master,
DEFAULT_LANGUAGE=langue,
CHECK_EXPIRATION=ON,
CHECK_POLICY=ON,
CREDENTIAL=Nom
Linstruction CREATE LOGIN annonce SQL Server quune nouvelle connexion va tre cre. On
donne imprativement un nom cette connexion. La clause FROM permet de donner plusieurs
proprits cette connexion, qui sont les suivantes :
-
2.4.3
Les certificats
SQL Server donne la possibilit de mettre en place des connexions au travers de certificats,
qui sont un moyen sur de connexion. Il est possible dutiliser des certificats dj contenus dans un
fichier, ou bien demander SQL Server de gnrer ce dit certificat.
2.4.4
Les credentials
Ces objets permettent des connexions en mode de scurit SQL Server daccder des
ressources externes au serveur de base de donnes. Les credentials vont donc contenir un login et
un mot de passe Windows qui sera ventuellement rattach une connexion de type mixte. Voyons
maintenant comment crer un credential :
CREATE CREDENTIAL nomducredential
WITH IDENTITY = 'nom', SECRET = 'secret'
Linstruction CREATE CREDENTIAL permet dannoncer SQL Server que nous allons crer un
credential. Par la suite, il est impratif de prciser un nom unique qui va nous permettre de
reconnatre ce credential parmi les autres credentials prsents sur le serveur de base de donnes.
Loption WITH IDENTITY permet de prciser le compte Windows utiliser dans le credential et
SECRET permet de prciser le mot de passe. Les credentials peuvent tre crs avec linterface
graphique dans lexplorateur dobjets en slectionnant Nouvelle information didentification dans
le menu contextuel du nud Information didentification.
10
Ceux qui permettent ou non dutiliser les objets de telle ou telle base.
Ceux qui permettent dutiliser telle ou telle instruction.
Comme nous lavons dit plus tt, ces droits sont accords ou refuss aux utilisateurs de bases de
donnes et non aux connexions serveur.
Note : Les utilisateurs de bases de donnes sont stocks dans la table systme sysuser. De plus, sa cration, un
utilisateur ne dispose daucun droit particulier si ce nest de celui de guest.
Avec SSMS
Pour crer un utilisateur dans SSMS, ouvrez lexplorateur dobjets, et placez-vous sur la base
de donnes concerne. Dveloppez alors le nud Scurit et placez vous sur le nud Utilisateurs.
Dans le menu contextuel du nud Utilisateurs, choisissez Nouvel utilisateur. Une nouvelle fentre
souvre.
11
Note : Il existe des procdures stockes pour crer des utilisateurs et leurs donner des droits sur les bases de donnes qui
sont sp_grantdbaccess et sp_adduser. Celles-ci sont maintenues pour des raisons de compatibilit ascendante,
cependant, il est conseill de ne plus les utiliser car elles sont voues disparaitre dans les prochaines versions de SQL
Server.
Avec SSMS
La procdure est la mme que pour la modification. Simplement, au lieu dafficher le menu
contextuel et de slectionner proprit, nous allons slectionner supprimer.
3.3.2 Avec du code T-SQL
Pour supprimer un utilisateur, nous allons utiliser linstruction DROP USER. Voici la syntaxe de
cette instruction :
Dotnet France Association
12
13
4.1.2
Pour crer un schma de base de donnes, nous nous servons de linstruction CREATE
SCHEMA. Comme tout objet dans une base de donnes, un schma doit avoir un nom unique dans la
Dotnet France Association
14
Avec SSMS
Avec linterface graphique, la manipulation est la mme que pour la cration dun schma.
Cependant, il faudra veiller ne pas crer un nouveau schma, mais se rendre dans les proprits
du schma que nous voulons modifier. Il faut en revanche prendre en compte que lon ne peut pas
changer le nom du schma, seulement les tables, vue qui y sont contenues, les autorisations et le
propritaire du schma.
4.2.2
Pour modifier un schma, nous allons utiliser linstruction ALTER SCHEMA suivie du nom du
schma modifier. Aprs la clause TRANSFERT, on peut spcifier les divers objets dplacer dans le
schma. Il faut savoir que le nom de ces objets doit tre au format suivant :
AncienSchema.NomObjet.
Avec SSMS
Pour supprimer un schma de base de donnes avec SSMS, rendez vous sur le nud schma
de la base de donnes ou est mapp le schma. Dployez ce nud pour laisser apparaitre les
schmas existants. Faites un clic droit sur le schma supprimer et slectionnez Supprimer.
4.3.2
15
Pour ajouter des droits un utilisateur, slectionnez lutilisateur dans le premier champ, o
nous avons notre utilisateur Guest, et octroyez-lui, enlevez-lui ou refusez-lui des permissions en
cochant ou dcochant les checkbox en consquence.
5.1.2
16
--Ajout :
GRANT CREATE TABLE TO Guest
--Suppression :
REVOKE CREATE TABLE FROM Guest
--Interdiction :
DENY CREATE TABLE
TO Guest
Avec SSMS
Les droits dutilisation peuvent tre grs deux niveaux dans SQL Server, au niveau
utilisateur et au niveau objet. Dans SSMS, pour les deux niveaux cits, la gestion de ces droits ce fait
grce la fentre de proprit. Voici les deux cas de fentre dans lesquelles vous pouvez changer les
droits dutilisation.
-
Au niveau objet :
Au niveau utilisateur :
17
5.2.2
TO Guest
Avec SSMS
Pour accorder des droits, vous procderez de la faon suivante. Droulez la totalit des
nuds qui mnent votre base de donnes, affichez le menu contextuel de cette base de donnes
en effectuant un clic droit et slectionnez proprit. Vous aboutissez sur la fentre suivante (Pensez
vous rendre dans la partie Autorisations) :
18
Il vous suffit dajouter des utilisateurs dans la premire partie nomme Utilisateurs ou rles
et de leur donner des droits dans la seconde partie nomme Autorisations. Cliquez enfin sur OK pour
valider vos choix.
5.3.2
GRANT permissiondebasededonnes
TO utilisateur
AS groupeourole
Note : Il est vident que nous pouvons utiliser linstruction GRANT, aussi bien que les instructions DENY et REVOKE, pour
interdire et supprimer des droits aux utilisateurs.
Nous avons not plus haut que nous prcisons le nom des permissions de bases de donnes
aprs linstruction principale GRANT. Nous allons lister la quasi-totalit de ces permissions ci-aprs :
-
ALTER
ALTER ANY APPLICATION ROLE
ALTER ANY ASSEMBLY
ALTER ANY ASYMMETRIC KEY
ALTER ANY CERTIFICATE
ALTER ANY CONTRACT
ALTER ANY DATABASE DDL TRIGGER
Dotnet France Association
19
20
SELECT
SHOWPLAN
SUBSCRIBE QUERY NOTIFICATIONS
TAKE OWNERSHIP
UPDATE
VIEW DATABASE STATE
VIEW DEFINITION
6 Les rles
On peut dire que les rles sont des sortes de groupements de droits. Il existe trois niveaux
dactions pour les rles : Server, Base de donnes et Application. Lutilit des rles rside dans le fait
Dotnet France Association
21
22
Il vous suffit alors de prciser le nom et le propritaire du rle. En revanche, vous ntes pas
oblig de prciser les autres informations de suite. Vous pouvez les modifier ultrieurement en vous
rendant dans les proprits du rle voulu.
6.2.2 Avec du code T-SQL
Voici la syntaxe de cration dun rle personnalis :
CREATE ROLE nomdurole
AUTHORIZATION propritaire
Nous allons bien entendu crer un rle grce linstruction CREATE ROLE. Il est alors
ncessaire de prciser le nom du schma aprs cette instruction pour assurer son unicit au sein de
la base de donnes sur le serveur. On peut enfin prciser un propritaire grce la clause
AUTHORIZATION.
23
7 Conclusion
Dans ce chapitre, vous avez appris mettre en place la scurit de vos bases de donnes au
travers des droits. Dautres formes de scurits sont possible, entre autres, lencryptions
transparente des donnes. Ce chapitre est dsormais termin. Si toutefois vous avez besoin de
prcisions sur le cours, ou bien sur les objets de bases nhsitez pas consulter les cours de
dveloppement de base de donnes, ou bien poster sur le forum de ce mme site
(http://forums.dotnet-france.com/forums/).