23
Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008 Version 1.0 Z Grégory CASANOVA

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

Embed Size (px)

Citation preview

  • Gestion des utilisateurs,

    des groupes et des rles

    dans SQL Server 2008 Version 1.0

    Z

    Grgory CASANOVA

  • Dotnet France Association

    2 Les utilisateurs, les groupes et les rles

    Sommaire

    1 Introduction ..................................................................................................................................... 4

    2 Gestion des accs serveur ............................................................................................................... 5

    2.1 Mode de scurit Windows .................................................................................................... 5

    2.1.1 En gnral ........................................................................................................................ 5

    2.1.2 En dtail ........................................................................................................................... 5

    2.2 Mode de scurit Mixte .......................................................................................................... 5

    2.2.1 En gnral ........................................................................................................................ 5

    2.2.2 En dtail ........................................................................................................................... 5

    2.3 Choisir son mode de scurit .................................................................................................. 5

    2.3.1 Avec lassistant dinstallation .......................................................................................... 6

    2.3.2 Avec SSMS ....................................................................................................................... 6

    2.4 Gestion des connections SQL Server .................................................................................... 6

    2.4.1 En mode scurit Windows ............................................................................................. 6

    2.4.2 En mode de scurit mixte .............................................................................................. 7

    2.4.3 Les certificats ................................................................................................................... 9

    2.4.4 Les credentials ................................................................................................................. 9

    3 Gestion des utilisateurs de base de donnes ................................................................................ 10

    3.1 Cration dutilisateurs de base de donnes .......................................................................... 10

    3.1.1 Avec SSMS ..................................................................................................................... 10

    3.1.2 Avec du code T-SQL ....................................................................................................... 11

    3.2 Modification dutilisateur de base de donnes ..................................................................... 11

    3.2.1 Avec SQL Server Management Studio .......................................................................... 11

    3.2.2 Avec du code T-SQL ....................................................................................................... 11

    3.3 Suppression dutilisateur de base de donnes ...................................................................... 11

    3.3.1 Avec SSMS ..................................................................................................................... 11

    3.3.2 Avec du code T-SQL ....................................................................................................... 11

    4 Gestion des schmas ..................................................................................................................... 13

    4.1 Cration dun schma ............................................................................................................ 13

    4.1.1 Avec SSMS ..................................................................................................................... 13

    4.1.2 Avec du code T-SQL ....................................................................................................... 13

    4.2 Modification dun schma ..................................................................................................... 14

  • Dotnet France Association

    3 Les utilisateurs, les groupes et les rles

    4.2.1 Avec SSMS ..................................................................................................................... 14

    4.2.2 Avec du code T-SQL ....................................................................................................... 14

    4.3 Suppression dun schma ...................................................................................................... 14

    4.3.1 Avec SSMS ..................................................................................................................... 14

    4.3.2 Avec du code T-SQL ....................................................................................................... 14

    5 Gestion des droits .......................................................................................................................... 14

    5.1 Droits dinstruction ................................................................................................................ 15

    5.1.1 Avec SSMS ..................................................................................................................... 15

    5.1.2 Avec du code T-SQL ....................................................................................................... 15

    5.2 Droits dutilisation ................................................................................................................. 16

    5.2.1 Avec SSMS ..................................................................................................................... 16

    5.2.2 Avec du code T-SQL ....................................................................................................... 17

    5.3 Droits au niveau base de donnes ........................................................................................ 17

    5.3.1 Avec SSMS ..................................................................................................................... 17

    5.3.2 Avec du code T-SQL ....................................................................................................... 18

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

    6 Les rles ......................................................................................................................................... 20

    6.1 Les rles prdfinis ................................................................................................................ 21

    6.2 Les rles dfinis par lutilisateur ............................................................................................ 21

    6.2.1 Avec SQL Server Management Studio ........................................................................... 22

    6.2.2 Avec du code T-SQL ....................................................................................................... 22

    7 Conclusion ..................................................................................................................................... 23

  • Dotnet France Association

    4 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

    5 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

    6 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

    7 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 :

    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.

    CREATE LOGIN nom_connexion

    FROM WINDOWS

    WITH DEFAULT_DATABASE=Master

    DEFAULT_LANGUAGE=langue

  • Dotnet France Association

    8 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

    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.

    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

  • Dotnet France Association

    9 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 :

    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.

    CREATE CREDENTIAL nomducredential

    WITH IDENTITY = 'nom', SECRET = 'secret'

  • 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 :

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

    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 :

    ALTER USER nomutilisateur

    WITH NAME=nouveaunom,

    DEFAULT_SCHEMA=nouveauschema

    CREATE USER nom

    FOR LOGIN connexion

    CERTIFICATE nomcertificat

    ASYMETRIC KEY nomcle

    WITH DEFAULT_SCHEMA = nomschema

  • 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 :

    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

    CREATE SCHEMA nomschema

    AUTHORIZATION nomproprietaire

    options

  • 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 :

    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 :

    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.

    DROP SCHEMA nomschema

    ALTER SCHEMA nomschema

    TRANSFERT nomobjet

  • 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

    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 :

    --Ajout :

    GRANT CREATE TABLE TO Guest

    --Suppression :

    REVOKE CREATE TABLE FROM Guest

    --Interdiction :

    DENY CREATE TABLE TO Guest

  • 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 :

    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) :

    --Ajout :

    GRANT CREATE TABLE TO Guest

    --Suppression :

    REVOKE CREATE TABLE FROM Guest

    --Interdiction :

    DENY CREATE TABLE TO Guest

  • 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 :

    - 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

    GRANT permissiondebasededonnes

    TO utilisateur

    AS groupeourole

  • 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 :

    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.

    CREATE ROLE nomdurole

    AUTHORIZATION propritaire

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