Vous êtes sur la page 1sur 23

Gestion des utilisateurs, des groupes et des rles dans SQL Server 2008

Version 1.0
Z

Grgory CASANOVA

Les utilisateurs, les groupes et les rles

Sommaire

1 2

Introduction ..................................................................................................................................... 4 Gestion des accs serveur ............................................................................................................... 5 2.1 Mode de scurit Windows .................................................................................................... 5 En gnral ........................................................................................................................ 5 En dtail ........................................................................................................................... 5

2.1.1 2.1.2 2.2

Mode de scurit Mixte .......................................................................................................... 5 En gnral ........................................................................................................................ 5 En dtail ........................................................................................................................... 5

2.2.1 2.2.2 2.3

Choisir son mode de scurit .................................................................................................. 5 Avec lassistant dinstallation .......................................................................................... 6 Avec SSMS ....................................................................................................................... 6

2.3.1 2.3.2 2.4

Gestion des connections SQL Server .................................................................................... 6 En mode scurit Windows ............................................................................................. 6 En mode de scurit mixte .............................................................................................. 7 Les certificats ................................................................................................................... 9 Les credentials ................................................................................................................. 9

2.4.1 2.4.2 2.4.3 2.4.4 3

Gestion des utilisateurs de base de donnes ................................................................................ 10 3.1 Cration dutilisateurs de base de donnes .......................................................................... 10 Avec SSMS ..................................................................................................................... 10 Avec du code T-SQL ....................................................................................................... 11

3.1.1 3.1.2 3.2

Modification dutilisateur de base de donnes..................................................................... 11 Avec SQL Server Management Studio .......................................................................... 11 Avec du code T-SQL ....................................................................................................... 11

3.2.1 3.2.2 3.3

Suppression dutilisateur de base de donnes...................................................................... 11 Avec SSMS ..................................................................................................................... 11 Avec du code T-SQL ....................................................................................................... 11

3.3.1 3.3.2 4

Gestion des schmas ..................................................................................................................... 13 4.1 Cration dun schma............................................................................................................ 13 Avec SSMS ..................................................................................................................... 13 Avec du code T-SQL ....................................................................................................... 13

4.1.1 4.1.2 4.2

Modification dun schma ..................................................................................................... 14 Dotnet France Association

Les utilisateurs, les groupes et les rles 4.2.1 4.2.2 4.3 Avec SSMS ..................................................................................................................... 14 Avec du code T-SQL ....................................................................................................... 14

Suppression dun schma ...................................................................................................... 14 Avec SSMS ..................................................................................................................... 14 Avec du code T-SQL ....................................................................................................... 14

4.3.1 4.3.2 5

Gestion des droits.......................................................................................................................... 14 5.1 Droits dinstruction................................................................................................................ 15 Avec SSMS ..................................................................................................................... 15 Avec du code T-SQL ....................................................................................................... 15

5.1.1 5.1.2 5.2

Droits dutilisation ................................................................................................................. 16 Avec SSMS ..................................................................................................................... 16 Avec du code T-SQL ....................................................................................................... 17

5.2.1 5.2.2 5.3

Droits au niveau base de donnes ........................................................................................ 17 Avec SSMS ..................................................................................................................... 17 Avec du code T-SQL ....................................................................................................... 18

5.3.1 5.3.2 5.4 6

Droit au niveau serveur ......................................................................................................... 20

Les rles ......................................................................................................................................... 20 6.1 6.2 Les rles prdfinis ................................................................................................................ 21 Les rles dfinis par lutilisateur............................................................................................ 21 Avec SQL Server Management Studio ........................................................................... 22 Avec du code T-SQL ....................................................................................................... 22

6.2.1 6.2.2 7

Conclusion ..................................................................................................................................... 23

Dotnet France Association

Les utilisateurs, les groupes et les rles

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 : Sys.server_permissions : Liste des permissions au niveau serveur et de leurs bnficiaires. Sys.server_principals : Entits de scurit dfinis au niveau serveur. Sys.sql_logins : Liste des connexions au niveau serveur. Sys.Server_role_members : Liste des bnficiaires dun rle au niveau serveur. Sys.database_permissions : Liste des permissions et de leurs bnficiaires au niveau base de donnes. Sys.database_principals : Entits de scurit au niveau base de donnes. Sys.database_role_members : Liste des bnficiaires dun rle de base de donnes.

Apprenons maintenant toutes les manires de prserver lintgrit des donnes de nos bases, en mettant en place une politique de scurit efficace.

Dotnet France Association

Les utilisateurs, les groupes et les rles

2 Gestion des accs serveur


Avant de pouvoir commencer travailler avec les donnes de nos bases, il est impratif de se logger sur le serveur SQL. Cette tape permet de sidentifier au niveau du serveur SQL, afin de pouvoir exploiter les droits qui ont ts attribus notre connexion. Dans SQL Server, il existe plusieurs modes dauthentification que nous allons dfinir dans cette partie.

2.1 Mode de scurit Windows


2.1.1 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.

2.2 Mode de scurit Mixte


2.2.1 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.

2.3 Choisir son mode de scurit


On peut directement choisir le mode de scurit de SQL Server de deux manires diffrentes : lors de linstallation de linstance SQL Server, ou bien directement dans SSMS, sans passer par lassistant dinstallation de SQL Server. Dcouvrons les diffrentes manires de changer de mode de scurit.

Dotnet France Association

Les utilisateurs, les groupes et les rles 2.3.1 Avec lassistant dinstallation Lors de linstallation dune instance de SQL Server, il vous sera demand de prciser quel mode de scurit vous dsirez mettre en place. Choisissez bien entendue le mode qui vous convient. 2.3.2 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 :

Dans le menu Scurit, dans la partie Authentification du Server, choisissez simplement le mode de scurit mettre en place. Cliquez sur OK pour valider votre choix.

2.4 Gestion des connections SQL Server


2.4.1 En mode scurit Windows Les noms de groupes ou les utilisateurs doivent tre les mmes que sous Windows. Il existe plusieurs faons de crer des connexions au serveur de base de donnes. Nous allons les dtailler. 2.4.1.1 Avec SQL Server Management Studio Pour crer une connexion en mode graphique, par lintermdiaire de SSMS, il vous suffit de vous rendre dans lexplorateur dobjet, de dployer les nuds jusqu Scurit-Connexion. Dans le menu contextuel de ce nud, choisir nouvelle connexion. La fentre suivante apparait :

Dotnet France Association

Les utilisateurs, les groupes et les rles

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

En mode de scurit mixte Comme pour toute cration dobjet dans SQL Server, et donc comme pour le mode de scurit Windows, il est possible de crer une connexion par deux moyens. La mise en place de ce mode de scurit est en tous points semblables la mise en place du mode de scurit Windows, une chose prs : il faut mettre en place les rgles de gestion des mots de passe. 2.4.2.1 Avec SQL Server Management Studio La procdure est la mme que pour le mode de scurit Windows. Nous ne la dtaillerons pas une deuxime fois. Dotnet France Association

Les utilisateurs, les groupes et les rles

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 : PASSWORD : Permet de prciser un mot de passe. Loption HASHED, permet de hacher le mot de passe lors de son stockage en fonction de la chaine de caractres prcise avant de mot cl. DEFAULT_DATABASE : Permet de prciser le nom de la base de donnes par default. DEFAULT_LANGUAGE : Permet de prciser un langage par dfaut. CHECK_EXPIRATION : A OFF par dfaut. Il nest possible dactiver cette option que si CHECK_POLICY est aussi activ. Elle permet dappliquer la politique de changement des mots de passe dfini sur le serveur. CHECK_POLICY : A ON par dfaut, cette option permet de rcuprer au niveau serveur, les options dfinies pour la politique de scurit. Dotnet France Association

Les utilisateurs, les groupes et les rles CREDENTIAL : Permet de relier la connexion un credential cr auparavant. Nous verrons par la suite ce quest un credential.

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.

Dotnet France Association

10

Les utilisateurs, les groupes et les rles

3 Gestion des utilisateurs de base de donnes


Maintenant que nous avons dfinis les connexions (objets de niveau serveur), nous allons montrer comment dfinir les objets de niveau base de donnes que sont les utilisateurs. En effet, les droits daccs, dcriture, de lecture sur les bases de donnes ne sont pas attribus aux connexions, mais aux utilisateurs de bases de donnes. Il faut alors savoir que chaque utilisateur de base de donnes est affili une connexion de niveau serveur. Cependant, il existe des utilisateurs, qui eux ne sont pas associs une connexion particulire (guest, sys). Il est donc bon de savoir que si un utilisateur dispose dune connexion de base de donnes et que celle-ci nappartient aucun utilisateur de base de donnes capable dintervenir sur la base, les actions que celui-ci peut effectuer sont trs limites. Il existe alors deux types de droits : 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.

3.1 Cration dutilisateurs de base de donnes


Il existe deux manires de crer des utilisateurs dans SQL Serveur, comme pour crer la plupart des objets prsents dans une base de donnes. La cration dun utilisateur de base de donnes va permettre de lier lutilisateur la connexion, et donc autoriser lutilisation de cette base. 3.1.1 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.

Dotnet France Association

11

Les utilisateurs, les groupes et les rles Prcisez dans un premier temps le nom de lutilisateur de base de donnes et dans un second temps, la connexion serveur lui associer. A partir de cette fentre, il est, entre autres, possible dattacher des schmas cet utilisateur ainsi que des rles de base de donnes. Cliquez alors sur OK. Votre utilisateur est cr et mapp sur une connexion existante. 3.1.2 Avec du code T-SQL En Transact SQL, linstruction permettant de crer des utilisateurs et de les mapper aux diffrentes connexions est CREATE USER. Voici la syntaxe dtaille de cette instruction :
CREATE USER nom FOR LOGIN connexion CERTIFICATE nomcertificat ASYMETRIC KEY nomcle WITH DEFAULT_SCHEMA = nomschema

FOR LOGIN : Dfinit la connexion o sera mapp lutilisateur. CERTIFICATE : Dfinit le certificat utiliser. Ne peut pas sutiliser si une connexion est utilise dans la clause FOR LOGIN. ASYMETRIC KEY : Dfinit la cl asymtrique utiliser utiliser. WITH DEFAULT SCHEMA : Nom du schma de base de donnes donner lutilisateur.

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.

3.2 Modification dutilisateur de base de donnes


3.2.1 Avec SQL Server Management Studio Pour modifier un utilisateur de base de donnes via linterface graphique, il vous suffit de dployer lensemble des nuds qui mne cet utilisateur dans lexplorateur dobjets, afficher le menu contextuel et slectionner proprits. Vous arriverez alors directement sur la fentre de cration dun utilisateur, ou certain champs seront remplis. Il vous suffira de changer les informations que vous dsirer modifier. 3.2.2 Avec du code T-SQL Pour modifier un utilisateur avec du code, nous allons utiliser linstruction ALTER USER. Voici la syntaxe de modification des proprits dun utilisateur.
ALTER USER nomutilisateur WITH NAME=nouveaunom, DEFAULT_SCHEMA=nouveauschema

3.3 Suppression dutilisateur de base de donnes


3.3.1 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

Les utilisateurs, les groupes et les rles

DROP USER nomutilisateur

Dotnet France Association

13

Les utilisateurs, les groupes et les rles

4 Gestion des schmas


Un schma est un ensemble logique dobjets lintrieur des bases de donnes sur le serveur. Leur but est de faciliter, entre autre, lchange de donnes entre les utilisateurs, sans pour autant affecter la scurit. Concrtement, les schmas permettent une gestion plus aise des privilges dutilisation des objets. Comme nous lavons vu prcdemment, un utilisateur est mapp sur un schma ds sa cration, obligatoirement. Si toute fois, aucun nom de schma nest prcis, alors lutilisateur sera mapp sur dbo par dfaut. Pour expliquer simplement le fonctionnement des schmas prenons un exemple. Un utilisateur est mapp sur un schma nomm RU. Pour requter sur les objets de la base, il pourra crire directement le nom seul de cet objet si celui-ci est compris dans le schma sur lequel il est mapp. Dans le cas contraire, lutilisateur devra prciser le schma de lobjet, le nom de lobjet et ce moment l, SQL Server cherchera si le dit utilisateur possde les droit dutiliser lobjet auquel il tente daccder. On peut retenir que les schmas servent essentiellement faciliter le partage dinformation entre les utilisateurs mapps sur ce schma.

4.1 Cration dun schma


4.1.1 Avec SSMS Pour crer un schma grce SSMS, il vous suffit de dployer tous les nuds jusqu scurit, dafficher le menu contextuel (clic droit) du nud schma et de slectionner Nouveau schma. Une nouvelle fentre apparait.

4.1.2

Avec du code T-SQL Voici la syntaxe de cration dun schma de base de donnes :

CREATE SCHEMA nomschema AUTHORIZATION nomproprietaire options

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

Les utilisateurs, les groupes et les rles famille des schmas. Il est donc ncessaire de prciser un nom derrire cette instruction. La clause instruction va nous permettre en revanche de prciser lutilisateur de base de donnes qui sera propritaire du schma. Pour finir, ce que nous avons reprsent par option reprsente lespace dans lequel nous pouvons directement faire la dfinition de nos tables, vues et privilges rattachs nos tables.

4.2 Modification dun schma


4.2.1 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 Avec du code T-SQL Pour modifier un schma avec du code, nous allons utiliser cette syntaxe :

ALTER SCHEMA nomschema TRANSFERT nomobjet

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.

4.3 Suppression dun schma


4.3.1 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 Avec du code T-SQL Pour supprimer un schma, nous allons utiliser linstruction DROP SCHEMA, avec la syntaxe suivante :
DROP SCHEMA nomschema

5 Gestion des droits


Les droits sont les autorisations qui vont nous permettre de travailler avec notre base de donnes. Ils sont organiss de faon hirarchique par rapport aux lments scurisables du serveur. Dotnet France Association

15

Les utilisateurs, les groupes et les rles Lattribution des droits peut tre faite tous les niveaux, que se soit au niveau serveur, au niveau base de donnes ou encore directement sur les schmas ou les objets. Par consquent, ils peuvent tre accords soit un utilisateur, soit une connexion. Il est possible de grer ces permissions grce 3 instructions simples dans SQL Server : GRANT, DENY, REVOKE. GRANT permet de donner un privilge, REVOKE permet de le retirer si celui-ci a t donn auparavant et DENY permet de linterdire mme si il a t donn au travers dun rle.

5.1 Droits dinstruction


Ces droits correspondent aux droits qui permettent de crer (mettre jour, supprimer) de nouveau objets dans la base. Les utilisateurs qui possdent de tels droits sont donc capable de crer leurs propres tables Voici les principaux droits disponibles : CREATE DATABASE, CREATE TABLE, CREATE FUNCTION, CREATE PROCEDURE, CREATE VIEW, BACKUP DATABASE, BACKUP LOG Nous allons maintenant apprendre donner, retirer ou interdire des droits. 5.1.1 Avec SSMS Avec SSMS, on peut administrer ces droits via la fentre proprit de la base de donnes concerne. Pour cela, rendez-vous sur le menu Autorisations de cette mme page.

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 Avec du code T-SQL Pour ajouter, supprimer ou interdire un droit un utilisateur de base de donnes, nous allons utiliser les instructions GRANT, DENY et REVOKE comme nonc prcdemment. Voici la syntaxe de don, suppression ou interdiction de droits : Dotnet France Association

16

Les utilisateurs, les groupes et les rles

--Ajout : GRANT CREATE TABLE TO Guest --Suppression : REVOKE CREATE TABLE FROM Guest --Interdiction : DENY CREATE TABLE TO Guest

5.2 Droits dutilisation


Les droits dutilisation permettent de dterminer si un utilisateur possde les droits pour travailler sur les objets, par exemple lire les informations, insrer des donnes Dans le cas gnral, cest le propritaire de lobjet qui dfinit les droits dutilisation. En ce qui concerne les droits de lecture et de mise jour des donnes, le propritaire possde la facult de choisir quelles colonnes lutilisateur peut lire ou mettre jour. Voici la liste des principaux droits dutilisation : INSERT, UPDATE, SELECT, DELETE, EXECUTE. 5.2.1 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 :

Dotnet France Association

17

Les utilisateurs, les groupes et les rles

5.2.2

Avec du code T-SQL Pour donner des droits dutilisation ou les retirer avec du code T-SQL, nous allons retrouver les trois mots cls GRANT, DENY et REVOKE. La syntaxe en revanche sera changeante. La voici :
--Ajout : GRANT CREATE TABLE TO Guest --Suppression : REVOKE CREATE TABLE FROM Guest --Interdiction : DENY CREATE TABLE TO Guest

5.3 Droits au niveau base de donnes


Les droits au niveau des bases de donnes vont donner des droits aux utilisateurs qui ne seront valables que sur une base de donnes prcise. Au niveau base de donnes, il est possible de donner des droits un utilisateur, un schma, une assembly ou encore un objet service broker. Ces droits peuvent tre attribus de plusieurs manires, soit par du code Transact SQL, soit par les proprits de la base de donnes. 5.3.1 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) :

Dotnet France Association

18

Les utilisateurs, les groupes et les rles

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 Avec du code T-SQL Avec du code T-SQL, nous utiliserons la syntaxe suivante :

GRANT permissiondebasededonnes TO utilisateur AS groupeourole

Permissiondebasededonnes : La ou les permissions de base de donnes accorder lutilisateur de base de donnes. Utilisateur : Lutilisateur qui va recevoir les permissions de base de donnes prcises aprs linstruction GRANT. Groupeourole : Constitue le contexte de scurit qui va nous permettre daccorder les privilges.

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

Les utilisateurs, les groupes et les rles ALTER ANY DATABASE EVENT NOTIFICATION ALTER ANY DATASPACE ALTER ANY FULLTEXT CATALOG ALTER ANY MESSAGE TYPE ALTER ANY REMOTE SERVICE BINDING ALTER ANY ROLE ALTER ANY ROUTE ALTER ANY SCHEMA ALTER ANY SERVICE ALTER ANY SYMMETRIC KEY ALTER ANY USER AUTHENTICATE BACKUP DATABASE BACKUP LOG CHECKPOINT CONNECT CONNECT REPLICATION CONTROL CREATE AGGREGATE CREATE ASSEMBLY CREATE ASYMMETRIC KEY CREATE CERTIFICATE CREATE CONTRACT CREATE DATABASE CREATE DATABASE DDL EVENT NOTIFICATION CREATE DEFAULT CREATE FULLTEXT CATALOG CREATE FUNCTION CREATE MESSAGE TYPE CREATE PROCEDURE CREATE QUEUE CREATE REMOTE SERVICE BINDING CREATE ROLE CREATE ROUTE CREATE RULE CREATE SCHEMA CREATE SERVICE CREATE SYMMETRIC KEY CREATE SYNONYM CREATE TABLE CREATE TYPE CREATE VIEW CREATE XML SCHEMA COLLECTION DELETE EXECUTE INSERT REFERENCES Dotnet France Association

20

Les utilisateurs, les groupes et les rles SELECT SHOWPLAN SUBSCRIBE QUERY NOTIFICATIONS TAKE OWNERSHIP UPDATE VIEW DATABASE STATE VIEW DEFINITION

5.4 Droit au niveau serveur


Les privilges au niveau serveur sattribuent de la mme manire que ceux de niveau base de donnes, simplement, ils ne sont pas les mmes. En revanche, ces privilges ne sont pas attribus un utilisateur, mais une connexion. Nous ne prsenterons donc pas les faons dattribuer ces droits puisque elles sont les mmes que pour le niveau base de donnes, mais nous allons les citer : ADMINISTER BULK OPERATIONS ALTER ANY CONNECTION ALTER ANY CREDENTIAL ALTER ANY DATABASE ALTER ANY ENDPOINT ALTER ANY EVENT NOTIFICATION ALTER ANY LINKED SERVER ALTER ANY LOGIN ALTER RESOURCES ALTER SERVER STATE ALTER SETTINGS ALTER TRACE AUTHENTICATE SERVER CONNECT SQL CONTROL SERVER CREATE ANY DATABASE CREATE DDL EVENT NOTIFICATION CREATE ENDPOINT CREATE TRACE EVENT NOTIFICATION EXTERNAL ACCESS ASSEMBLY SHUTDOWN UNSAFE ASSEMBLY VIEW ANY DATABASE VIEW ANY DEFINITION VIEW SERVER STATE

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

Les utilisateurs, les groupes et les rles quil est plus simple dattribuer des droits des rles puis dattribuer des rles des utilisateurs ou des connexions plutt que dattribuer directement des droits ces derniers. Il faut donc retenir que les rles sont des ensembles de droits qui portent un nom et quon peut les attribuer aux utilisateurs. Pour faciliter la gestion des droits, SQL Server propose des droits dits fixes. En effet, ils sont prdfinis et donc non modifiables. Ils sont dfinis deux niveaux : Server et Base de donnes. En revanche, les rles dfinis par lutilisateur de SQL Server atteignent deux niveaux diffrents : Base de donnes et Application. Au final, un utilisateur de base de donnes peut avoir accs des droits de quatre manires diffrentes : grce aux droits de la connexion quil utilise, grce aux rles fixes, grce aux rles crs par lutilisateur et enfin grce aux droits qui lui ont t directement affects.
Note : Il existe un rle qui est public et qui est attribu tous les utilisateurs de base de donnes et toutes les connexions. Ce rle ne peut pas tre enlev aucun des utilisateurs. En revanche, il peut tre modifi. Il faut simplement prendre en compte que TOUS les utilisateurs auront les droits ajouts public.

6.1 Les rles prdfinis


Rles serveur : Sysadmin : Administrateur du serveur. Serveradmin : Permet de configurer les paramtres niveau serveur. Setupadmin : Permet dexcuter certaines procdures stockes et dajouter des serveurs lis. Securityadmin : Permet de grer les connexions serveur. Processadmin : Permet de grer les traitements au sein de SQL Server. Dbcreator : Permet de crer ou modifier des bases de donnes. Diskadmin : Permet de grer les fichiers sur le disque. Bulkadmin : Permet dexcuter linstruction BULK INSERT.

Rles base de donnes : Db_owner : Equivalent propritaire base de donnes. Db_accessadmin : Permet dajouter et supprimer des utilisateurs de base de donnes. Db_datareader : Permet dutiliser linstruction SELECT. Db_datawriter : Permet les instructions INSERT, UPDATE et DELETE. Db_ddladmin : Permet les oprations sur les objets de base de donnes. Db_securityadmin : Permet de grer les lments de scurit sur la base de donnes. Db_backupoperator : Permet lutilisation des backups. Db_denydatareader : Interdit linstruction SELECT. Db_denydatawriter : Interdit lcriture sur la base de donnes.

6.2 Les rles dfinis par lutilisateur


Il est possible de dfinir ses propres rles afin de faciliter ladministration des droits dans SQL Server. Logiquement, on crera un rle dit personnalis lorsque plusieurs utilisateurs doivent avoir les mmes droits et que ces droits nexistent pas dans les rles prdfinis. Les rles peuvent tre accords soit directement un utilisateur, soit un autre rle.

Dotnet France Association

22

Les utilisateurs, les groupes et les rles 6.2.1 Avec SQL Server Management Studio Pour crer un nouveau rle, procdez de la manire suivante. Dployez successivement le nud de votre base de donnes puis le nud scurit. Affichez alors le menu contextuel du nud rles et slectionnez Nouveau rle. Vous obtenez cette nouvelle fentre :

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.

Dotnet France Association

23

Les utilisateurs, les groupes et les rles

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/).

Dotnet France Association