You are on page 1of 16

Planification

1. Dimensionner les fichiers


Afin dvaluer la taille des fichiers ncessaires au stockage des informations contenues dans la base il faut prendre en compte de nombreux critres. Pour les fichiers de donnes distinguer les tables systme et utilisateur, prendre en compte le nombre de lignes dans les tables, recenser les valeur indexes (cl, nombre de ligne, facteur de remplissage). Cest aprs une fine valuation de la quantit despace occupe quil est possible de fixer la taille initiale des fichiers de donnes. La mthode la plus simple est dvaluer la longueur moyenne dune ligne, de calculer combien de lignes peuvent tre stockes dans un bloc de 8 Ko, et enfin de trouver le nombre de blocs ncessaires pour stocker toutes les lignes de la table. partir de ce nombre de blocs utiliss par la table, il convient de prendre le multiple de 8 immdiatement suprieur puis de diviser par 8 pour obtenir le nombre dextensions. Pour les fichiers journaux lactivit, la frquence, la taille des transactions, les sauvegardes. Cest la prise en compte de ces critres, ainsi que la consultation des options de la base, qui vont permettre de fixer une taille optimale pour le fichier journal. Au dpart il peut tre utile de fixer la taille du journal entre 10 % et 25 % de la taille des donnes dans la base. Ce pourcentage est diminuer si la base supporte principalement des requtes de slection SELECT, qui nutilisent pas le journal.

2. Nommer la base et les fichiers de faon explicite


Il est important de prvoir le nom de la base, les noms logiques, physiques et la taille des fichiers ainsi que la gestion dynamique ou non de laccroissement.

3. Emplacement des fichiers


Lemplacement des fichiers donnes et journaux doit tre spcifi avec prcision afin de rduire au maximum les conflits daccs au disque, et de faire travailler tous les disques de la machine de faon quitable.

4. Utilisation des groupes de fichiers


Il peut tre intressant, afin de limiter les conflits daccs disque, de crer plusieurs groupes de fichiers sur le serveur et de spcialiser chacun deux. Un bon exemple consiste laisser sur le groupe de fichiers PRIMARY, lensemble des tables systme de la base et de crer un deuxime groupe pour les tables utilisateur. Une telle mthode permet de sparer les donnes et les tables systme. Il est parfois envisageable de crer un troisime groupe pour les index.

ENI Editions - All rigths reserved - Kaiss Tag

- 1-

87

Introduction
Le contrle daccs reprsente une opration importante au niveau de la gestion de la scurit sur un serveur de bases de donnes. La scurisation des donnes ncessite une organisation des objets de faon indpendante des utilisateurs, ce qui est possible par les schmas. La scurit passe galement par un meilleur contrle des autorisations et la possibilit daccorder juste les privilges ncessaires chaque utilisateur pour quil puisse travailler de faon autonome. Pour lorganisation de cette politique de scurit, il faut prendre en compte lorganisation hirarchique des lments de scurit, de faon rendre la gestion des droits daccs simple et efficace. SQL Server sappuie sur trois lments cls qui sont : les entits de scurit ; les scurisables ; les autorisations. Les entits de scurit sont des comptes de scurit qui disposent dun accs au serveur SQL. Les scurisables reprsentent les objets grs par le serveur. Ici, un objet peut tre une table, un schma ou une base de donnes par exemple. Les autorisations sont accordes aux entits de scurit afin quelles puissent travailler avec les scurisables. Lorganisation hirarchique permet daccorder une autorisation (par exemple SELECT) sur un scurisable de niveau lev (par exemple le schma) pour permettre lentit de scurit qui reoit lautorisation dexcuter linstruction SELECT sur toutes les tables contenues dans le schma. Les vues du catalogue systme permettent dobtenir un rapport complet et dtaill sur les connexions existantes, les utilisateurs de base de donnes dfinis et les privilges accords. Quelques-unes de ces vues sont prsentes cidessous : sys.server_permissions : liste des permissions de niveau serveur et de leurs bnficiaires. sys.sql_logins : liste des connexions sys.server_principals : entit de scurit dfinie au niveau serveur sys.server_role_members : liste des bnficiaires dun rle de serveur. sys.database_permissions : liste des permissions et de leur bnficiaire au niveau base de donnes. sys.database_princpals : entit de scurit de niveau base de donnes. sys.database_role_members : liste des bnficiaires dun rle de base de donnes. Pour simplifier la gestion des droits daccs, il est possible dutiliser trois types de rles. Les rles de serveur qui regroupent des autorisations au niveau du serveur, ces autorisations sont valables pour toutes les bases installes. Les rles de base de donnes, regroupent quant eux des droits au niveau de la base de donnes sur laquelle ils sont dfinis. Et enfin les rles dapplications, dfinis sur les bases de donnes utilisateur, permettent de regrouper les droits ncessaires la bonne excution dune application cliente.

ENI Editions - All rigths reserved - Kaiss Tag

- 1-

88

Gestion des accs Serveur


Avant de pouvoir travailler avec les donnes gres par les bases, il faut dans un premier temps se connecter au serveur SQL. Cette tape permet de se faire identifier par le serveur SQL et dutiliser par la suite tous les droits qui sont accords notre connexion. Il existe dans SQL Server deux modes de gestion des accs au serveur de base de donnes. Attention, dans cette section, seule la partie connexion au serveur est aborde. Il est important de bien distinguer la connexion au serveur et lutilisation de bases de donnes. La connexion au serveur permet de se faire identifier par le serveur SQL comme un utilisateur valide, pour utiliser, par la suite, une base de donnes : les donnes et les objets. Lensemble de ces droits seront dfinis ultrieurement. Ces droits sont associs un utilisateur de base de donnes, pour lequel correspond une connexion. On parlera de connexion au serveur ou de logins.

1. Mode de scurit Windows


Ce type de gestion de la scurit permet de sappuyer sur les utilisateurs et les groupes Windows pour le domaine et le poste local. SQL Server utilise la gestion des utilisateurs de Windows (gestion des mots de passe...) et rcupre uniquement les noms pour crer des connexions au serveur. Une fonctionnalit trs importante de SQL Server est de pouvoir autoriser des groupes Windows venir se connecter. La gestion des groupes permet de raliser une administration plus souple que celle des utilisateurs. La mthode la plus simple pour grer les connexions est de passer par la cration dun groupe local. Ce groupe local est autoris se connecter au serveur SQL et est utilis par des utilisateurs ou des groupes globaux. Avec une telle mthode de fonctionnement, comme un utilisateur Windows peut appartenir plusieurs groupes, il peut possder plusieurs droits de connexion SQL Server.

Authentification Windows En mode scurit Windows, seuls les noms dutilisateurs sont stocks. La gestion des mots de passe et de lappartenance aux diffrents groupes est laisse Windows. Ce mode de fonctionnement permet de bien discerner les tches de chacun et de spcialiser SQL Server sur la gestion des donnes en laissant Windows grer les utilisateurs, ce quil sait bien faire. De plus avec un tel schma de fonctionnement, il est possible dappliquer la politique suivante : un utilisateur = un mot de passe. Laccs au serveur SQL est transparent pour les utilisateurs approuvs par Windows. SQL Server sappuie sur les groupes auxquels appartient lutilisateur lors de la connexion au serveur. Si des modifications dappartenance aux groupes sont effectues depuis Windows, ces modifications ne seront prises en compte que lors de la prochaine connexion de lutilisateur au serveur SQL.

SQL Server sappuie sur le SID de Windows pour identifier le groupe. Si un groupe est supprim puis recr dans Windows, il est important de raliser la mme opration en ce qui concerne la connexion du groupe dans SQL Server.

2. Mode de scurit Mixte


Le mode de scurit Mixte repose sur une authentification Windows puis sur une authentification SQL Server. Cest ce mode dauthentification qui va tre dtaill ici.

ENI Editions - All rigths reserved - Kaiss Tag

- 1-

89

a. Dfinition
Il sagit du fonctionnement le plus connu pour la scurit des serveurs de bases de donnes. Dans un tel mode de fonctionnement, cest SQL Server qui se charge de vrifier que lutilisateur qui demande se connecter est bien dfini puis il se charge galement de vrifier le mot de passe.

Mode de scurit mixte Tous les utilisateurs sont entirement grs par SQL Server (nom et mot de passe). Ce type de gestion des connexions est bien adapt pour des clients qui ne sidentifient pas auprs de Windows.

b. Principe de fonctionnement
Il est trompeur de croire quen mode de fonctionnement Mixte seul le serveur se charge de la vrification des noms dutilisateur et des mots de passe. Dans un premier temps, lorsquun utilisateur du rseau tente de se connecter au serveur SQL, un test est fait en utilisant la scurit Windows. Si lutilisateur du rseau est approuv dans SQL Server, ou sil appartient un groupe qui est approuv dans SQL Server, alors lutilisateur sera connect au serveur SQL. Dans le cas contraire (chec de la connexion en utilisant la scurit Windows), SQL Server se charge de demander un nom de connexion et un mot de passe.

3. Base de donnes par dfaut


Aprs la dfinition des connexions (logins) au serveur, il est important de dfinir dans les diffrentes bases de donnes utilisateur, des utilisateurs qui correspondent ces connexions. Les droits dutilisation lintrieur de la base seront attribus aux utilisateurs de la base. Il est important galement de dfinir pour chaque connexion ou login, une base de donnes par dfaut. Cest sur cette base que sera positionn tout utilisateur qui utilise cette connexion. Attention bien prendre en compte le fait que dfinir une base de donnes par dfaut ne donne pas de droits dutilisation sur cette base.

- 2-

ENI Editions - All rigths reserved - Kaiss Tag

90

4. Comment choisir un mode de scurit ?


Il est possible de modifier le mode de scurit utilis par le serveur SQL directement depuis SQL Server Management Studio en allant modifier les proprits de linstance comme ci-aprs.

ENI Editions - All rigths reserved - Kaiss Tag

- 3-

91

Lors de linstallation du serveur SQL, deux connexions sont prdfinies, en mode Windows, le groupe local des Administrateurs est autoris se connecter, et en mode de scurit SQL Server, lutilisateur sa peut se connecter au serveur. Ces deux utilisateurs possdent des privilges dadministrateur du serveur SQL. Il est recommand dutiliser la scurit Windows qui offre une plus grande souplesse au niveau de la gestion des utilisateurs.

5. Grer une connexion SQL Server


tant donn quun utilisateur Windows peut appartenir plusieurs groupes, il peut se voir accorder plusieurs fois le droit de connexion au serveur SQL. Ceci peut poser un problme lorsquun utilisateur ou un groupe dutilisateurs ne doit jamais pouvoir se connecter au serveur SQL. Afin de remdier ce souci, Microsoft fournit, parmi les ordres Transact SQL pour la gestion des connexions, lordre DENY qui permet de refuser explicitement un utilisateur ou un groupe Windows. Le DENY constitue un refus explicite et est prioritaire par rapport aux diffrentes autorisations de connexion.

- 4-

ENI Editions - All rigths reserved - Kaiss Tag

92

Cration dune connexion Dans le schma ci-dessus, il y a trois utilisateurs Windows et deux groupes. Une connexion a t mise en place pour le groupe Acces2, le groupe Acces1 ne possde pas de connexion et lutilisateur Jean est interdit de connexion. Il faut possder une permission dadministrateur (sysadmin) ou une permission de gestionnaire de scurit (securityadmin) pour pouvoir raliser les diffrentes oprations relatives la gestion des connexions. Les connexions, quelles soient de type SQL Server ou bien Windows, doivent tre dfinies au niveau de linstance SQL Server pour permettre aux utilisateurs de se connecter. La gestion des connexions peut tre ralise de faon graphique par lintermdiaire de lexplorateur dobjets depuis SQL Server Management Studio ou bien sous forme de script Transact SQL. Toutes les oprations de gestion des connexions sont ralisables en Transact SQL avec laide des instructions CREATE LOGIN, ALTER LOGIN et DROP LOGIN. Chaque solution possde ses avantages et ses inconvnients. Les procdures sp_addlogin et sp_grantlogin ne doivent plus tre utilises. Elles sont encore prsentes dans SQL Server 2008 pour assurer la compatibilit des scripts. Les comptes de connexion sont ncessaires pour permettre laccs au serveur de base de donnes. Toutefois, ils sont insuffisants pour permettre de travailler sur une base de donnes. Il faut en effet leur associer une base de donnes par dfaut, cest--dire la base de travail par dfaut sur laquelle ils seront positionns aprs ouverture de la connexion. Pour accder cette base de donnes, un compte dutilisateur de base de donnes doit tre dfini pour la connexion sur la base de donnes.

a. En mode de scurit Windows


Les noms des groupes ou des utilisateurs devront correspondre ceux dfinis dans Windows. SQL Server Management Studio Il est possible de crer les connexions depuis linterface graphique de SQL Server Management Studio, en procdant de la sorte : Depuis lexplorateur dobjets, se placer sur le n ud Scurit-Connexion.

ENI Editions - All rigths reserved - Kaiss Tag

- 5-

93

Depuis le menu contextuel associ au n ud connexion, faire le choix nouvelle connexion. Lcran suivant apparat alors. Il ne reste plus qu slectionner le compte dutilisateur Windows ou bien le groupe qui est autoris se connecter.

Linterface graphique de SQL Server Management Studio permet galement de modifier simplement un compte de connexion partir de la fentre des proprits ou bien de supprimer une connexion. Transact SQL CREATE LOGIN nom_connexion FROM WINDOWS [WITH DEFAULT_DATABASE=baseDeDonnes|DEFAULT_LANGUAGE=langue] nom_connexion Nom de lutilisateur ou du groupe Windows ajouter. Il doit tre donn sous la forme domaine\utilisateur. baseDeDonnes Prcise la base de donnes qui sera utilise par dfaut. Si aucune base de donnes nest prcise, alors la base de donnes par dfaut est la base Master. langue Langue de travail par dfaut pour cette connexion. Cette option nest prciser que si la langue relative cette connexion est distincte de celle dfinie par dfaut sur le serveur SQL. Exemple :

- 6-

ENI Editions - All rigths reserved - Kaiss Tag

94

b. En mode de scurit Mixte


Comme pour la scurit en mode Windows, il existe deux moyens pour grer les connexions. Mis part lensemble des rgles de gestion des mots de passe, la gestion dune connexion en mode de scurit SQL Server est en tout point semblable celui dune connexion en mode de scurit Windows. Une fois crs, les deux types de connexion sont en tout point identiques. Il ny a pas une solution qui prsente plus de fonctionnalits que lautre. Pour les connexions utilisant une scurit SQL Server, il est possible de dfinir des rgles de gestion des mots de passe. Pour les connexions utilisant une scurit Windows, cest le systme dexploitation qui gre les rgles de scurit relatives au mot de passe. SQL Server Management Studio Il est possible de crer les connexions depuis linterface graphique de SQL Server Management Studio, en procdant de la sorte : Depuis lexplorateur dobjets, se placer sur le n ud Scurit-Connexion. Depuis le menu contextuel associ au n ud de connexion, faire le choix nouvelle connexion. Lcran suivant apparat alors. Il ne reste plus qu dfinir le nom de la nouvelle connexion ainsi que le mot de passe associ. Cest galement ce niveau que peut tre prcise la politique de gestion des passes mettre en place. Les rgles de gestion des mots de passe sont hrites de celles mise en place sur Windows.

ENI Editions - All rigths reserved - Kaiss Tag

- 7-

95

Linterface graphique de SQL Server Management Studio permet galement de modifier simplement un compte de connexion partir de la fentre des proprits ou bien de supprimer une connexion. Transact SQL CREATE LOGIN nom_connexion WITH {PASSWORD=motDePasse |motDePasseHach HASHED}[MUST_CHANGED] [,SID=sid | ,DEFAULT_DATABASE=baseDeDonnes | ,DEFAULT_LANGUAGE=langue | ,CHECK_EXPIRATION={ON | OFF} | ,CHECK_POLICY={ON | OFF} ,[CREDENTIAL=nom_credit]] nom_connexion Nom de la connexion qui sera dfinie dans SQL Server. motDepasse Mot de passe associ la connexion. Ce mot de passe est stock de faon crypte dans la base Master et il est vrifi lors de chaque nouvelle connexion au serveur. Il est obligatoire de dfinir un mot de passe pour chaque connexion. motDePasseHach Il sagit ici de prciser que la chane fournie correspond la version hache du mot de passe. Ce nest donc pas le mot de passe tel que lutilisateur le saisit, mais le mot de passe tel que SQL le stocke qui est fourni. MUST_CHANGED

- 8-

ENI Editions - All rigths reserved - Kaiss Tag

96

Avec cette option SQL Server demande lutilisateur de saisir un nouveau mot de passe lors de sa premire connexion au serveur. Cette option nest possible que si CHECK_ESPIRATION et CHECK_POLICY sont actives (positionnes ON). baseDeDonnes Prcise la base de donnes qui sera utilise par dfaut. Si aucune base de donnes nest prcise alors la base de donnes par dfaut est la base Master. langue Langue de travail par dfaut pour cette connexion. Cette option nest prciser que si la langue relative cette connexion est distincte de celle dfinie par dfaut sur le serveur SQL. CHECK_EXPIRATION Si cette option est positionne ON (OFF par dfaut), elle indique que le compte de connexion va suivre la rgle relative lexpiration des mots de passe dfinie sur le serveur SQL. Lactivation de cette option nest possible que si CHECK_POLICY est galement active. CHECK_POLICY Active par dfaut, cette option permet de rpercuter au niveau de SQL Server les rgles de gestion des mots de passe dfinies au niveau de Windows sur le poste qui hberge linstance SQL Server. CREDENTIAL Permet de relier la connexion un credential cr prcdemment par lintermdiaire de linstruction CREATE CREDENTIAL. Exemple Dans lexemple suivant, la connexion PIERRE est cre avec le mot de passe secret. Lutilisateur ne devra pas changer son mot de passe et sa base de donnes par dfaut est configure.

En utilisant un certificat SQL Server donne la possibilit de crer des connexions au serveur bases sur des certificats (CERTIFICATE). Ces certificats permettent didentifier de faon sre un utilisateur en se basant sur diffrentes informations telles que : une cl publique ;

ENI Editions - All rigths reserved - Kaiss Tag

- 9-

97

une identification telle que le nom et ladresse e-mail ; une priode de validit. Pour tre tout fait prcis, les certificats de SQL Server sont conformes au standard X.509. La cration dun certificat dans SQL Server peut sappuyer sur un certificat dfini dans un fichier ou un assembly ou bien demander SQL Server de gnrer les cls publiques et prives. Les certificats de scurit vont permettre des applications et/ou des services, douvrir une session scurise sur le serveur. Ce type douverture de session par un service est utilis par le service Service Broker qui utilise un certificat pour poster un message sur une base distante.

6. Informations didentification
Ces objets permettent des connexions en mode de scurit SQL Server daccder des ressources externes au serveur de base de donnes. Les informations didentification (credentials) vont donc contenir un nom de compte Windows et un mot de passe. Les connexions SQL Server sont relies un credential par lintermdiaire de linstruction CREATE LOGIN ou bien ALTER LOGIN. La modification et la suppression sont possibles par lintermdiaire des instructions ALTER CREDENTIAL et DROP CREDENTIAL. Syntaxe CREATE CREDENTIAL nomDuCredit WITH IDENTITY = identit [, SECRET = secret]; nomDuCredit Permet didentifier le credential de faon unique au niveau du serveur. Cet identifiant ne peut pas commencer par le caractre #. Les credentials systmes commencent toujours par les caractres ##. identit Nom du compte Windows qui sera associ au credential et permettra laccs des ressources en dehors de SQL Server. secret Optionnel, ce paramtre permet de spcifier un mot de passe pour pouvoir accder des ressources externes. Exemple Un credential est cr et il correspond au compte dutilisateur Antoine dfini au niveau de Windows.

- 10 -

ENI Editions - All rigths reserved - Kaiss Tag

98

Il est possible davoir toutes les informations relatives aux credentials dj dfinis sur le serveur en interrogeant la vue sys.credential.

SQL Server Management Studio La gestion dun credential de faon graphique est possible en procdant de la faon suivante : Depuis lexplorateur dobjets, se positionner sur le n ud Securit - Informations didentification. Depuis le menu contextuel associ au n ud Informations didentification, demander la cration dun credential en choisissant loption Nouvelles informations didentification... Exemple Fentre de cration dun nouveau credential

ENI Editions - All rigths reserved - Kaiss Tag

- 11 -

99

7. Activer et dsactiver une connexion


Sur une connexion dfinie, il est possible de la dsactiver afin de dsactiver temporairement son utilisation. Si toutes les informations et proprits de la connexion sont conserves, il nest pas possible dutiliser la connexion dsactive pour se connecter SQL Server. La dsactivation de connexion est utile pour renforcer la scurit sur des comptes de connexion qui, bien que dfinis, ne sont pas utiliss ou bien lorsque ladministrateur dfinit au pralable des connexions. Il ne lui restera plus qu activer la ou les connexions lorsque le besoin sera prsent. SQL Server Management Studio Depuis la fentre des proprits de la connexion sur la page tat, il est possible dactiver, de dsactiver la connexion.

- 12 -

ENI Editions - All rigths reserved - Kaiss Tag

100

Transact SQL Lactivation et la dsactivation dune connexion seffectuent par lintermdiaire de linstruction ALTER LOGIN. Syntaxe ALTER LOGIN nomConnexion {ENABLE|DISABLE}[;] Exemple La connexion Pierre est dsactive.

ENI Editions - All rigths reserved - Kaiss Tag

- 13 -

101

- 14 -

ENI Editions - All rigths reserved - Kaiss Tag

102

You might also like