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 :
Pour utiliser une base de données sur un serveur, il faut :
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.
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
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
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.
Ces droits permettront à des utilisateurs de créer leurs propres BD, tables, vues, procédures, fonctions
Accorder :
GRANT {ALL l permission [,. . . ]}
TO utilisateur [,. . . ]
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 :
(ALL I permission [, . . .])
FROM utilisateur [, . . .]
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
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
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.
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.
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
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'
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.