Vous êtes sur la page 1sur 7

Gestion de la scurit sous SQL Server

I.

Les diffrents modes de scurit daccs de SQL Server

SQL Server dispose dun systme de scurit qui lui est propre. Nous savons dautre part que
Windows dispose galement de son systme de scurit travers les comptes utilisateurs.
SQL Server permet de fdrer (ou non) ces deux systmes et propose deux modes daccs :
Le mode de scurit intgre qui utilise la scurit de Windows. De ce fait, les utilisateurs
conservent un seul nom daccs et un seul mot de passe pour Windows et SQL Server.
Le mode de scurit mixte (scurit SQL Server ou Windows). Dans ce cas lutilisateur peut se
connecter au serveur SQL partir de son compte Windows ou de son nom daccs SQL qui peut
alors tre diffrent.
Pour choisir un mode de scurit :
Click droit sur le nom du serveurPropritsOnglet Scurit
Lutilisateur sa est un utilisateur intgr SQL server qui possde tous les pouvoirs (System Admin). Pour
changer son mot de passe, voici la procdure, trs simple :
C:\Program Files\Microsoft SQL Server\80\Tools\Binn en ligne de commande
OU cmd / sqlcmd
sp_password null, 'nouveau_mot_de_passe', 'sa'
go
exit

II.

Principe de fonctionnement de la scurit

Pour utiliser une base de donnes sur un serveur, il faut :


1. avoir la permission daccder ce serveur (chaque utilisateur doit possder un nom daccs au
serveur appel nom de connexion)
2. avoir la permission daccder la base de donnes (chaque utilisateur doit possder un nom
dutilisateur de la base de donnes)
3. Chaque utilisateur de la base de donnes se verra attribuer des autorisations lui permettant de
manipuler les diffrents objets de la base (table, vue, procdures stockes,).
Les utilisateurs disposant dun statut spcial
On distingue trois utilisateurs particuliers :
Ladministrateur de SQL Server qui a pour nom daccs sa. Il dispose de tous les droits et na donc
pas de nom dutilisateur pour les bases de donnes.
Le crateur dune base de donnes appel galement propritaire de la base ou DBO (Data Base
Owner). Il dispose de lintgralit des permissions sur cette base.
Le crateur dun objet dans une base de donne (table, vue, procdure stocke, dclencheur,)
devient le propritaire de cet objet (DBOO) et dispose de toutes les permissions sur cet objet.
Accs un serveur SQL Server par authentification Windows
Le nom de connexion un serveur SQL Server correspond au nom du compte Windows
SQL Server nest accessible qu partir de la validation douverture de session.
Il est possible dutiliser le nom dun groupe comme nom de connexion un serveur SQL Server. Dans
ce cas, tous les membres du groupe auront accs au serveur SQL sans avoir de nom de connexion
personnel.
MH MALHIERE

Scurit sous SQL Server

Page 1

Exemple :
Le nom du groupe "Etudiants825" (classe de STS IG 1re anne) est utilis comme nom de connexion au
serveur SQL Server. Chaque tudiant de cette classe accde SQL Server car son compte fait partie du
groupe " Etudiants825".
Dans la base systme "Master" sont stocks tous les noms de connexion et les mots de passe associs. chaque
compte de connexion correspond un identifiant "sid" qui est utilis par le systme pour le relier au nom
dutilisateur dans une base.

Toutes les connexions sont inscrites dans la base MASTER (table Syslogins)
Crer une connexion SQL Server
Se positionner sur le nud Scurit-connexions-Menu contextuel Nouvelle connexion
Remarque : Il faut possder une permission dadministrateur (sysadmin) ou une permission de
gestionnaire de scurit (scurityadmin) pour pouvoir raliser les diffrentes oprations relatives la
gestion des connexions.
Accs une base de donnes
Une fois laccs au serveur SQL Server obtenu, un nom dutilisateur dans la base doit correspondre un
nom de connexion.
La base de donnes "cible" contient tous les noms des utilisateurs. Un nom dutilisateur dtermine de manire
unique un nom de connexion stock dans la base "Master".

Accs aux objets dune base de donnes


Il existe deux types dautorisations.

Les autorisations dinstruction qui permettent principalement de crer des objets :


- cration dune base de donnes,
- cration de tables, de vues dans une base,
- cration de procdures stockes
Les autorisations sur les objets existants qui permettent de manipuler les objets :

Insert, Update, Delete, Select,


Par dfaut, une fois laccs la base obtenu, lutilisateur na pas encore dautorisation sur la base.
Seuls ladministrateur et le propritaire de la base peuvent donner des droits. Ils peuvent les attribuer soit
directement aux utilisateurs, soit des rles.
Un rle est lquivalent d'un groupe : son but est de regrouper les utilisateurs afin de dfinir des
autorisations des groupes d'utilisateurs ayant les mmes besoins, plutt qu' des individus.

III.

Les rles

Les rles regroupent des ensembles dautorisations. Il est prfrable dattribuer des autorisations des
rles puis dattribuer les rles aux utilisateurs.
III.1 Rle du serveur
Ce sont des rles prdfinis
Nom
bulkadmin
dbcreator
diskadmin
processadmin

MH MALHIERE

Nom complet
Bulk Insert Administrators
Database Creators
Disk Administrators
Process Administrators

Description
Peut procder une opration d'insertion en bloc.
Possibilit de crer et de modifier les bases de donnes.
Possibilit de grer les fichiers disque.
Possibilit de grer les traitements s'excutant sous SQL Server.

Scurit sous SQL Server

Page 2

securityadmin
serveradmin
setupadmin
sysadmin

Security Administrators
Server Administrators
Setup Administrators
System Administrators

Possibilit de grer les connexions pour le serveur.


Possibilit de configurer les paramtres l'chelle du serveur.
Possibilit de grer les procdures stockes tendues.
Possibilit d'effectuer toute activit dans l'installation de SQL Server

Accorder un rle avec SQL Server Management Studio


Pour attribuer un rle serveur une connexion :
Menu contextuel Proprits de la connexionOnglet Rle du serveur
Cocher le ou les rles de serveur attribus cette connexion

MH MALHIERE

Scurit sous SQL Server

Page 3

III.2 Rles de base de donnes


III.2.1 Rles prdfinis
Il existe des rles prdfinis et il est possible de dfinir ses propres rles
Le rle public est un rle prdfini, bien particulier, car tous les utilisateurs de la base possdent ce rle.
Ainsi, lorsquune autorisation dinstruction ou dobjet est accorde, supprime ou interdite public,
instantanment tous les utilisateurs de la base bnficient des modifications. Le rle public contient
toutes les autorisations par dfaut dont bnficient les utilisateurs de la base.
A part le rle public il existe des rles prdfinis dans la base de donnes.
Rle de base de donnes fixe
Description
db_owner
Possde toutes les autorisations de la base de donnescomme le propritaire de la
base.
db_accessadmin
Peut ajouter ou supprimer des utilisateurs dans la base.
db_securityadmin
Peut grer toutes les autorisations, les proprits d'objet, les rles et les membres des
rles.
db_ddladmin
Permet dajouter (CREATE), modifier (ALTER) ou supprimer (DELETE) des objets
de la base de donnes
db_backupoperator
Permet deffectuer des sauvegardes de la base de donnes.
db_datareader
Peut slectionner toutes les donnes de toutes les tables utilisateur dans la base de
donnes.
db_datawriter
Peut modifier les donnes de toutes les tables utilisateur dans la base de donnes.
db_denydatareader
Interdit la visualisation des donnes de la base.
db_denydatawriter
Interdit la modifiaction des donnes de la base.

III.2.2 Les rles dfinis par lutilisateur


On peut dfinir ses propres rles lintrieur dune base de donnes.
Intrt : Lorsque des utilisateurs authentifis par SQL Server et des utilisateurs authentifis par Windows
doivent partager les mmes droits.
Les rles peuvent tre accords soit directement un utilisateur soit un autre rle.
Crer un rle dfini par lutilisateur
Se positionner sur Scurit-Rles-Rles de la base de donnes
Donner un nom de rle et un slectionner le propritaireDans longlet Elments scurisables
Ajouter un lment scurisable
Slectionner les types dobjets que vous souhaitez scuriss, cliquez sur parcourir et cocher les dans la
liste fournie
Cocher ensuite les autorisations
Remarque : Un rle ne peut tre supprim que sil ne contient aucun membre
III.2.3 Rles dapplication
Les rles dapplication sont des rles dfinis au niveau de la base de donnes sur laquelle ils portent.
Le but est de permettre tous les utilisateurs dune application de possder suffisamment de droits pour le
bon droulement de lapplication o les oprations sur la base de donnes sont contrles par le
programme client.
Les rles dapplication permettent dobtenir un comportement standard de lapplication quel que soit
lutilisateurs Windows qui lance lapplication.
Le principe reste le mme que pour les autres rles mais en plus, on affecte un mot de passe.
Remarque : pour modifier le mot de passe dun rle, il faut tre membre du rle db_owner ou
db_securityadmin.

MH MALHIERE

Scurit sous SQL Server

Page 4

IV.

Gestion des utilisateurs des bases de donnes

IV.1 Crer un utilisateur dune base de donnes


Se positionner sur Scurit-Utilisateur Menu contextuel Nouvel utilisateur
Donner un nom utilisateur et choisissez dans nom daccs la connexion laquelle il se rapporte
Les utilisateurs de base de donnes sont stocks dans la table systme sysusers de la base de donnes sur
laquelle lutilisateur est dfini.
IV.2 Gestion des autorisations des utilisateurs
Il faut attribuer des autorisations aux utilisateurs des bases de donnes.
Pour pouvoir dfinir ces autorisations au niveau dune base de donnes, il faut possder des droits de
propritaire (db_owner) ou de gestionnaire des accs (db_accessadmin).
Tous les utilisateurs de la base se voient attribuer le rle Public.
On peut donner des droits dutilisation dinstructions et des droits dutilisation dobjets
Les droits dutilisation dinstructions
On peut accorder des droits sur les instructions : CREATE DATABASE, CREATE PROCEDURE,
CREATE TABLE, BACKUP DATABASE, CREATE DEFAULT, CREATE RULE, CREATE VIEW,
BACKUP LOG(sauvegarde du journal des transactions)
Pour accorder des droits dinstructions :
Click droit sur le nom de la base de donnesPropritsAutorisations
Cocher les diffrentes autorisations accordes
Les droits dutilisation dobjets
Au niveau de lutilisateur :
Click droit sur le nom dutilisateurPropritsOnglet Elments scurisables
Ajouter un lment scurisable
Slectionner les types dobjets que vous souhaitez scuriss, cliquez sur parcourir et
cocher les dans la liste fournie
Cocher ensuite les autorisations
Au niveau de lobjet (Table, vue, procdure) :
Click droit sur le nom de lobjetPropritsAutorisations
Cliquer sur Ajouter dans la partie utilisateurs, puis sur parcourir pour obtenir la liste des
utilisateurs de la base de donnes.
Cocher les utilisateurs qui vous intressent
Cocher les autorisations que vous lui accordez

MH MALHIERE

Scurit sous SQL Server

Page 5

Affecter des utilisateurs un rle de base de donnes


Dvelopper le nud Scurit-Connexions Menu contextuel sur la connexion-Proprits-Onglet Rle du
serveur, cocher le ou les rles attribus
ou
Se positionner sur Scurit-Rles-Rles de la base de donnes
Slectionner un rle et ajouter les membres ce rle
On peut galement utiliser les ordres SQL, GRANT, REVOKE et DENY
Accorder des permissions avec GRANT
GRANT
{ ALL [ PRIVILEGES ] | instruction[,] }
[ ( colonne [ ,... ] ) ] ON { table | vue }
| ON { procdure }
| ON { Fonction_utilisateur }
}
TO {rle|groupe|utilisateur[,]}
[WITH GRANT OPTION ]
ALL : Toutes les permissions sont accordes, le mot PRIVILEGES est facultatif
Instruction : nom de linstruction autorise
TO : Indique la liste des utilisateurs ou des rles qui on accorde ces autorisations
WITH GRANT OPTION : Le ou les utilisateurs cits peuvent fournir leur tour ces permissions
dautres utilisateurs.
Exemples :
MH MALHIERE

Scurit sous SQL Server

Page 6

GRANT SELECT ON Commandes to PUBLIC


GRANT UPDATE ON Details_Commandes TO 825_01
GRANT UPDATE (Prix, QtEnStock) ON ARTICLES TO 825
GRANT CREATE DATABASE, CREATE TABLE TO mhm, Ada WITH GRANT OPTION
Supprimer des permissions avec REVOKE
REVOKE
{ ALL [ PRIVILEGES ] | instruction[,] }
[ ( colonne [ ,... ] ) ] ON { table | vue }
| ON { procdure }
| ON { Fonction_utilisateur }
}
FROM {rle|groupe|utilisateur[,]}
Exemples :
REVOKE SELECT ON Commandes FROM PUBLIC
REVOKE UPDATE ON Details_Commandes FROM 825_01
REVOKE UPDATE (Prix, QtEnStock) ON ARTICLES FROM 825
REVOKE CREATE DATABASE, CREATE TABLE FROM mhm, Ada
Refuser des permissions avec DENY
DENY
{ ALL [ PRIVILEGES ] | instruction[,] }
[ ( colonne [ ,... ] ) ] ON { table | vue }
| ON { procdure }
| ON { Fonction_utilisateur }
}
TO {rle|groupe|utilisateur[,]}
[CASCADE]
CASCADE : Spcifie que les autorisations sont refuse au rle ou lutilisateur ainsi qu tous les
utilisateurs auxquels celui-ci a accord des autorisations.

MH MALHIERE

Scurit sous SQL Server

Page 7