Cours en Devlopement Informatique

  • SQL SEVER

Gestion de sécurité sous SQL Server



 I. Les différents modes de sécurité d'accès de SQL SERVER

SQL Server dispose d`un système de sécurité qui lui est propre.

Windows dispose également de son système de sécurité à travers les comptes utilisateurs.

SQL Server permet de fédérer (ou non) ces deux systèmes et propose deux modes d'accès :

  • Le mode de sécurité intégrée qui utilise la Sécurité de Windows. De ce fait, les utilisateurs conservent un seul nom d'accès et un. Seul mot de passe pour Windows et SQL Server.
  • Le mode de sécurité mixte (sécurité SQL Server ou Windows). Dans ce cas l'utilisateur peut se connecter au serveur SQL à partir de son compte Windows ou de son nom d`accès SQL qui peut alors être différent.

II.         Principe de fonctionnement de la sécurité

Pour utiliser une base de données sur un serveur, il faut :

  1. Avoir la permission d'accéder à ce serveur, (chaque utilisateur doit posséder un nom d'accès au serveur appelé nom de connexion)
  2. Avoir la permission d'accéder à la base de données (chaque utilisateur doit posséder un nom d'utilisateur de la base de données)
  3. Chaque utilisateur de la base de données se verra attribuer des autorisations lui permettant de manipuler les différents objets de la base (table, vue, Procédures stockées...).  

Les utilisateurs disposant d'un statut spécial On distingue trois utilisateurs particuliers :

L'administrateur de SQL Server qui a pour nom d'accès sa. ll dispose de tous les droits et n'a donc pas de nom d'utilisateur pour les bases de données.

Le créateur d'une base de données appelé également propriétaire de la base ou DBO (Data Base Owner). Il dispose de l'intégralité des permissions sur cette base.

Le créateur d'un objet dans une base de données (table, vue, procédure stockée, déclencheur ....) devient le propriétaire de cet objet (DBOO) et dispose de toutes les permissions sur cet objet.

Accès à un serveur SQL Server par authentification Windows

Le nom de connexion à un serveur SQL Server correspond au nom du compte Windows SQL Server n'est accessible qu'à partir de la validation d'ouverture de session.

Dans la base système "Master" sont stockés tous les noms de connexion et les mots de passe associés.

Créer une connexion à SQL Server

En mode sécurité Windows :

CREATE LOGIN nom_connexion

FROM WINDOWS

nom_connexion doit être un nom d'utilisateur ou de groupe Windows

En mode sécurité Mixte :

CREATE LOGIN nom_connexion 
WITH PASSWORD = mon_mot_de_passe 

Création d'un utilisateur de BD

CREATE USER nomUtilisateur [FOR LOGIN maConnexion]

Exemple :

create login con1  
with password ='123' 
 
create user Util1  for login con1 

Gestion des droits

Il est possible de gérer l'attribution de privilèges au niveau du serveur, de la BD entière, au niveau d`un schéma particulier ou au niveau d'un objet particulier.

Les privilèges peuvent être accordés à un utilisateur ou un rôle de BD ou à une connexion serveur.

Un privilège peut être accordé (GRANT), retiré (REVOKE) quand il a été accordé, ou explicitement interdit (DENY) propre à SQL Server.

a. Droits d`utilisation de DDL

Ces droits permettront à des utilisateurs de créer leurs propres BD, tables, vues, procédures, fonctions

Accorder :

GRANT {ALL l permission [,. . .  ]}

TO utilisateur [,. . .  ]

WITH GRANT OPTION

 Permission : nom de la (ou des) permission(s) de DDL explicitement accordée(s) ou toutes (ALL)

WITH GRANT OPTION : paramètre d`administration, indique que le détenteur de l'autorisation a également la possibilité d'accorder l'autorisation spécifiée à d'autres utilisateurs.

Exemple : 

GRANT create database to Util1, Util2 
 	GRANT create view To User3 

Retirer :

REVOKE [GRANT OPTION FOR]

(ALL I permission [, . . .])

FROM utilisateur [, . . .]

[CASCADE]

GRANT OPTION FOR : pour retirer simplement le paramètre d'administration

CASCADE : si la permission retirée a été accordée WITH GRANT OPTION, CASCADE retirera également le privilège aux utilisateurs qui l`ont reçus ainsi de l`utilisateur concerné par la suppression initiale du privilège. SQL Server oblige d'ailleurs à mentionner CASCADE quand un droit a été accordé WITH GRANT OPTION

Exemple : 

REVOKE create database FROM Util1 

Interdire :

Permet d'interdire à un utilisateur l'utilisation d'un privilège même s'il en reçoit la permission soit directement, soit par appartenance à un groupe 

DENY permission [, . . . ]

TO utlilsateur [, . . . ]

[CASCADE]

Exemple :

DENY create database TO Util1 

b. Droits d'utilisation de DML

Ces droits permettront de fixer les autorisations sur les opérations de SELECT, INSERT, UPDATE, DELETE, EXECUTE portant sur des objets particuliers, accordées à des utilisateurs. Ces droits sont en général gérés par des propriétaires de l'objet.

Accorder :

GRANT {ALL | permission [(colonne [,. . ])] [,. . . ]}

ON Objet [(colonne, [, . . .]

TO utilisateur [, . . .]

WITH GRANT OPTION

Objet : correspond au nom complet (nomSchema.nomObjet)

Exemple : 

GRANT ALL ON Client TO Util1  
 	GRANT SELECT ON Compte TO Util2 
 	GRANT INSERT,UPDATE,DELETE ON Mouvement TO Util1,Util2 

Retirer :

REVOKE [GRANT OPTION FOR]

{ALL | permission[(colonne, [,. . . ])] [,. . ]}

ON Objet [(colonne, [,. . . ])] 

{FROM|TO] utilisateur [,. . . ]

[CASCADE]

FROM, TO : synonymes : L'usage habituel consiste à utiliser To lors de l'accord et FROM lors du retrait d'un privilège.

Exemple : 

 	REVOKE DELETE ON Client FROM Util1 

Interdire :

DENY {ALL | permission[(colonne, [,. . . ])] [,. . ]}

 ON Objet [(colonne, [,. . . ])] 

TO utilisateur [,. . . ]

[CASCADE]

Exemple : 

 	DENY DELETE ON Client TO Util1 

III. Les rôles

Les rôles sont des ensembles "nommés" de droits, des sortes de profils-types. Ils permettent de gérer

Plus facilement l'octroi de privilèges en accordant ceux-ci aux rôles et en accordant ensuite un ou plusieurs rôles aux différents utilisateurs.

L'utilisateur peut ainsi disposer des droits qui lui ont été accordés directement ET de ceux accordés aux différents rôles auxquels il appartient.

a. SQL Server prévoit différents rôles prédéfinis

Le rôle" public" tous les utilisateurs le reçoivent et ne peuvent pas s'y soustraire. On peut bien sûr "configurer" le rôle public en accordant, retirant, ou interdisant telle ou telle permission.

b. Rôles définis par l'utilisateur

Il est possible de définir ses propres rôles. En particulier, ceux-ci seront utiles par exemple quand plusieurs utilisateurs Windows veulent effectuer les mêmes opérations mais qu'il n'existe pas de groupe Windows correspondant et bien sûr lorsque les utilisateurs ne sont pas authentifiés par Windows.

Pour pouvoir définir un rôle. Il faut être membre du rôle db_owner ou db_securityadmin (ou bien du rôle de serveur sysadmin.

On peut accorder un rôle à un autre rôle mais une imbrication répétée peut avoir comme conséquence des pertes de performance.

Créer le rôle

     CREATE ROLE nom_role

c. Gestion des membres du rôle

Pour ajouter un utilisateur dans un rôle (càd accorder ce rôle à cet utilisateur)

               sp_addrolemember. 'nom_rôle' , 'nom_utilisateur'

Exemple : 

CREATE ROLE roleClient  
 	GO  
 	Exec sp_addrolemember 'roleClient', 'Util2' 
 	GO 

La procédure stockée système sp_droprolemember permet de sortir un utilisateur des membres du rôle :

sp_droproleinember 'nom rôle' , 'nom_utilisateur'

Exemple : 

  	Exec  sp_droprolemember 'roleClient', 'Util2' 

d. Gestion des droits du rôle

Exemple : 

GRANT ALL ON Client TO roleClient  
 	GRANT SELECT ON Compte TO roleClient 
 	GRANT INSERT,UPDATE,DELETE ON Mouvement TO roleClient,Util13U 
 
 	REVOKE ALL ON Client TO roleClient  
 	REVOKE SELECT ON Compte TO roleClient 
 	REVOKE INSERT,UPDATE,DELETE ON Mouvement TO roleClient,Util13U 

  

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.