Professional Documents
Culture Documents
- 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.
- 1-
88
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.
- 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.
- 2-
90
- 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.
- 4-
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.
- 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-
94
- 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-
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 ;
- 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 -
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
- 11 -
99
- 12 -
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.
- 13 -
101
- 14 -
102