top of page

Sécurité et gestion des accès

  • Photo du rédacteur: MYPE SAS
    MYPE SAS
  • 6 mars
  • 3 min de lecture

Dernière mise à jour : 24 juil.

Afin de sécuriser une base de données, nous allons suivre la démarche suivante. Tout d’abord, nous allons attribuer à chaque utilisateur une fonction, ou rôle, tels que db_dataowner ou admin. Ensuite, nous conditionnerons l’accès aux tables de notre base de données aux fonctions des utilisateurs. Dans cet article, nous allons apprendre deux méthodes pour mettre en place ce contrôle des accès : à l’aide de l’explorateur d’objets (pannneau de gauche) de SQL Server, et à l’aide de code DCL (Data Control Language) à taper en requête.


Méthode 1 : à l’aide de l’explorateur d’objets de SQL Server


Tout d’abord, ouvrons la boîte de dialogue de création d'une nouvelle connexion, depuis l’onglet Sécurité de SQL Server.

L'onglet Sécurité dans l'explorateur d'objets
L'onglet Sécurité dans l'explorateur d'objets

On crée un nouvel utilisateur.

Boîte de dialogue de création d'une nouvelle connexion : création de user1
Boîte de dialogue de création d'une nouvelle connexion : création de user1

Après avoir créé l’utilisateur user1, on lui attribue la base de données, et les rôles db_owner et public.

Boîte de dialogue des propriétés de la connexion user1
Boîte de dialogue des propriétés de la connexion user1

On voit maintenant apparaître dans l’explorateur d’objets la connexion de user1.

User1 est visible dans l'explorateur d'objets
User1 est visible dans l'explorateur d'objets

Méthode 2 : à l’aide d’un script DCL à taper en requête


DCL est une extension du langage SQL, qui permet entre autres de gérer l’accès aux bases de données.


Avec le script ci-dessous, on crée l’utilisateur user1 et, comme dans la méthode 1, on lui attribue la base de données unilib et le rôle de db_owner.

Script DCL créant user1 et lui attribuant des rôles
Script DCL créant user1 et lui attribuant des rôles

Propriétés de sécurité du serveur


Jusqu’ici, nous nous sommes concentrés sur le contrôle des accès au niveau des bases de données. Pour que nos choix soient appliqués, il faut indiquer nos préférences de connexion au niveau du serveur (localhost) dans son ensemble.


Dans l’explorateur d’objets de SQL Server, on accède aux propriétés de notre serveur.

Onglet Propriétés du serveur localhost
Onglet Propriétés du serveur localhost

Dans les propriétés de sécurité, on sélectionne les paramètres ci-dessous.

Boîte de dialogue des propriétés du serveur
Boîte de dialogue des propriétés du serveur

Pour se connecter la prochaine fois


Maintenant, on a paramétré SQL Server pour avoir une connexion sécurisée à nos bases de données. A la prochaine connexion, on pourra utiliser le user1 créé plus tôt pour se connecter.

Connexion à SQL Server
Connexion à SQL Server

Après connexion en tant que user1, on voit bien la base de données unilib, à laquelle nous avons accès, dans notre explorateur d’objets.

Base de données unilib, visible dans l'explorateur d'objets
Base de données unilib, visible dans l'explorateur d'objets

Création d’un utilisateur admin


Cet utilisateur est protégé par un mot-de-passe, et a accès à toutes les bases de données. Voici comment créer ce profil.


A l’instar de la méthode 1, on part de l’explorateur d’objets.

Ouverture de la boîte de dialogues de création d'une nouvelle connexion depuis l'explorateur d'objets
Ouverture de la boîte de dialogues de création d'une nouvelle connexion depuis l'explorateur d'objets

A la page de création d’une nouvelle connexion, on rentre le mot-de-passe choisi pour l’admin, et on décoche l’option ‘appliquer la stratégie de mot de passe’.

Boîte de dialogue de création d'une nouvelle connexion
Boîte de dialogue de création d'une nouvelle connexion

Ensuite, on attribue à admin l’accès à toutes les bases de données (en cochant ‘public’) et le rôle de sysadmin.

Attribution de rôles à notre utilisateur administrateur
Attribution de rôles à notre utilisateur administrateur

On voit maintenant bien apparaître dans l’explorateur d’objets, la connexion de user1 mais aussi celle de l’admin.

Explorateur d'objets, dans lequel apparaissent les connexions
Explorateur d'objets, dans lequel apparaissent les connexions

Annexe : commandes DCL pratiques


Pour attribuer des droits :


GRANT … ON … TO … 

Exemple : GRANT SELECT, INSERT, UPDATE ON table1 TO user1


Pour attribuer des droits sur l’utilisation d’une table à un autre utilisateur :


ALTER AUTHORIZATION ON SCHEMA ::… TO …

Exemple : ALTER AUTHORIZATION ON SCHEMA::schema1 TO user2


Pour changer le mot de passe d’un utilisateur :


ALTER LOGIN nom_utilisateur WITH PASSWORD=‘nouveau_mot_de_passe’


Pour interdire un accès ou supprimer des droits :


REVOKE … ON … FROM …

supprime le droit accordé précédemment

DENY … ON … TO …

interdit explicitement quelque chose, quelques soient les permission accordées auparavant


 
 
 

Commentaires


bottom of page