Il s’agit d’une présentation succinte de la sécurité d’une base de données sql server 2005. Elle vous sera utile pour comprendre comment remplir le connexionstring de C#. Cette présentation vous permettra également d’affiner la sécurité coté serveur SQL, à l’aide d’un script, si vous souhaitez sécuriser plus fortement qu’avec SA ou l’administrateur windows en fonction de votre mode de connexion.
Choix du mode d’authentification de sql serveur (Trés Important).
authentification windows : seuls les utilisateurs windows authentifiés peuvent accéder à sql serveur. Ce mode est hautement recommandé dans le cas d’un domaine car il permet de mettre en place toute une politique de sécurité à l’aide d’active directory ( audit…).
authentification mixte : Ce mode d’authentification permet la connexion à sql serveur à des utilisateurs non windows.
Le mode d’authentification du serveur, choisi lors de l’installation, peut être modifié à l’aide de sql server management studio.
Les connexions ( sécurité externe ).
Les connexions, appelé aussi identifiant par microsoft, ou login par les utilisateurs peuvent être crée par sql server management studio ou par T-SQL.
Pour créer une connexion windows : CREATE LOGIN [DomaineUtilisateur] FROM WINDOWS
Pour créer une connexion windows à un groupe : CREATE LOGIN[DomaineGroupe] FROM WINDOWS
Le groupe administrateur de windows possède une connexion de ce type.
Pour créer une connexion sql server : CREATE LOGIN nom_utilisateur WITH PASSWORD=’password’
L’utilisateur SA possède une connexion de ce type.
Pour supprimer une connexion windows : DROP LOGIN [DomaineUtilisateur]
Pour supprimer une connexion windows à un groupe : DROP LOGIN [DomaineGroupe]
Pour supprimer une connexion sql serveur : DROP LOGIN nom_utilisateur
La propriété WITH DEFAULT_DATABASE=nom base_données permet de définir une base par défaut au login mais n’accorde aucunement le droit d’y accéder. Pour les droits d’utilisation d’une base de données, lisez le chapitre ci dessous relatif aux utilisateurs de bases de données et le compte GUEST.
Rôle serveur de la connexion.
SYSADMIN : toute activité est possible sur le serveur.
DBCREATOR : les membres peuvent créer, modifier, supprimer et restaurer toute base de données.
DISKADMIN : Ce rôle est utilisé pour gérer les disques physiques.
PROCESSADMIN : Les membres peuvent interrompre les processus en cours dans une instance SQL Serveur.
SECURITYADMIN : Les membres peuvent gérer les connexions et leurs propriétés. Ils peuvent accorder ( GRANT ), refuser ( DENY ) et révoquer ( REVOKE ) les autorisations au niveau serveur, au niveau base de donnée. ils peuvent réinitialiser les mots de passes. Ce rôle n’a aucune permission pour affecter des autorisations de bases de données.
BULKADMIN : les membres peuvent executer l’instruction BULK INSERT.
SERVERADMIN : les membres peuvent changer les options de configuration coté serveur et arrêter le serveur.
SETUPADMIN : les membres peuvent ajouter ou supprimer des serveurs liés et executer certaines procédures systèmes.
PUBLIC : Toutes les connexions valides sont membre de ce groupe.
Il est possible d’affecter à une connexion un rôle serveur par la commande suivante :
EXECUTE sp_addsrvrolemember nom_login, role_serveur
Par défaut, le groupe des administrateurs windows a le rôle SYSADMIN.
Par défaut, l’utilisateur SA a le rôle SYSADMIN.
Par conséquent, les utilisateurs qui se connectent sous ces identités peuvent tout faire sur le serveur ( configuration, création/destruction objets ).
En général, si l’on souhaite mettre en place d’une sécurité spécifique, un compte possède simplement le rôle par défaut PUBLIC et ne possède par conséquent aucun droit sur son environnement. Pour permettre à un rôle PUBLIC d’agir, il va falloir relié le login/la connexion à un utilisateur SQL Serveur auquel on affectera des droits.
Un cas particulier permet à un utilisateur ayant le rôle PUBLIC d’agir sur une base de données, lorsque l’utilisateur de bases de données GUEST possède des droits, comme le droit de se connecter à une base de données, ou le droit de lire les données d’une base.
Les utilisateurs. Niveau interne de sécurité
Pour créer un utilisateur en T-SQL , on utilise la commande :
CREATE USER nom_utilisateur FOR LOGIN nom_login WITH DEFAULT_SCHEMA = schema_par_defaut
si vous n’utilisez pas la commande optionnel WITH DEFAULT_SCHEMA, alors le schéma par défaut sera dbo, le schéma de la base de données. Le ou les schémas d’un utilisateur sont utilisés par sql serveur pour résoudre les noms d’objet référencés sans leur nom complet.
Une fois l’utilisateur créé et relié à une connexion, vous pouvez lui accorder un rôle de bases de données.
les rôle de bases de données de l’utilisateur.
Afin de limiter le travail de l’administrateur de bases de données dans le cas d’une base de plusieurs dizaines d’utilisateurs, au lieu d’affecter des droits sur chaque objet, on peut affecter des droits globaux. Il est aussi possible de créer ses propres rôle de bases de données.
PUBLIC : par defaut.
DB_ACCESSADMIN : l’utilisateur qui possède ce droit pour modifier un USER ou créer un schéma.
DB_BACKUPOPERATOR : Les membres peuvent sauvegarder la base de données.
DB_DATAREADER : les membres peuvent lire les données dans l’ensemble des tables.
DB_DATAWRITER : les membres peuvent ajouter, supprimer, ou modifier des données dans les tables utilisateurs.
DB_DDLADMIN : les membres peuvent executer toute commande DDL dans une base de données.
DB_DENYDATAREADER : les membres ne peuvent lire les tables utilisateurs.
DB_DENYDATAWRITER : les membres ne peuvent écrire dans les tables utilisateurs.
DB_OWNER : les membres peuvent effectuer toute les opérations de maintenance et de configuration y compris la suppression.
DB_SECURITYADMIN : les membres peuvent modifier l’appartenance à un rôle et gérer les autorisations.
On affecte un rôle à un utilisateur avec la procédure stockée :
EXECUTE sp_addrolemember nom_role,nom_utilisateur
Création d’un rôle de base de données spécifique et affectation de droits à ce rôle.
USE mabase
GO
CREATE ROLE Rolemabase;
GRANT CREATE TABLE,CREATE VIEW,CREATE PROCEDURE TO Rolemabase;
On autorise la création d’objet de bases de données pour les utilisateurs possédant le rôle RolemaBase.
Les schémas.
Un schéma est un ensemble d’objets de bases de données appartenant à un utilisateur interne. Marcel dans notre cas. La différence entre sql serveur 2000 et sql serveur 2005. c’est qu’avec sql serveur 2005, le schéma est indépendant de l’utilisateur. Ainsi, lors qu’un créateur de schéma quitte l’entreprise, on peut réaffecter son schéma à un autre utilisateur trés simplement. On utilise les schémas pour créer des espaces de noms, l’équivalent d’une librairie C#, avec les objets de bases de données.
Autorisations d’instruction à un user sur une base de données.
L’authorisation de création d’objet de bases de données est gérée par l’autorisation d’instruction
GRANT/REVOKE ALLInstructions TO user
GRANT : affecte
REVOKE : supprime
Instructions : BACKUP DATABASE, BACKUP LOG, CREATE DATABASE ,CREATE PROCEDURE, CREATE TABLE, CREATE VIEW
Affectation de droit d’accès à un user sur un objet.
GRANT ALLAutorisations ON Table(colonne)Vue(colonne)Procedure_stockee TO User WITH GRANT OPTION AS User
ALL Accorder tous les droits.
Autorisations : CREATE, ALTER, DROP, CONTROL, CONNECT, SELECT, EXECUTE, UPDATE, DELETE , INSERT, TAKE OWNERSHIP, VIEW DEFINITION, BACKUP
WITH GRANT OPTION : Permet à l’utilisateur bénéficiaire de transmettre ces droits à un autre.
AS User : User est un compte possédant les droits nécessaires pour accorder des autorisations.
lien : http://www.sqlfr.com/tutoriaux/SECURITE-SQL-SERVER_720.aspx
lien : http://pcaboche.developpez.com/article/sql-server/gestion-droits/
lien : http://sql.developpez.com/sqlserver/securisation/