Vous êtes sur la page 1sur 10

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

Chapitre 6 : Gestion des autorisations

1. Gestion des droits Tous les utilisateurs de base de données, y compris guest, appartiennent au groupe public. Les droits sont organisés de façon hiérarchique par rapport aux éléments sécurisables du serveur.

par rapport aux éléments sécurisables du serveur. Il est possible de gérer l'attribution des droits au

Il est possible de gérer l'attribution des droits au niveau du serveur, de la base de données, du schéma ou bien directement de l'objet. Les instructions suivantes seront utilisées: GRANT, REVOKE et DENY.

1.1. Les autorisations d'utilisation des instructions et les autorisations d'utilisations des objets Il existe deux types d'autorisation:

les autorisations d'utilisation d'instructions;

les autorisations d'objet.

1.1.1. Les autorisations d'utilisation des instructions Les autorisations d'instruction donnent des droits sur les actions suivantes:

création d'une base de données;

création de tables et de vues dans une base de données;

création de règles et de valeurs par défaut dans une base de données;

création de procédures stockées ou de fonctions définies par l'utilisateur;

sauvegarde de la base de données;

sauvegarde du journal de transactions.

Les autorisations d'instruction peuvent être stipulées sur les commandes suivantes:

CREATE DATABASE

CREATE TABLE

CREATE VIEW

CREATE PROCEDURE

CREATE FUNCTION

CREATE DEFAULT

CREATE RULE

BACKUP DATABASE

BACKUP LOG

Seul un administrateur système peut transmettre le droit de créer des bases de données.

Pour donner des autorisations d'instructions aux utilisateurs d'une base de données, il faut cliquer avec le bouton droit

de la souris sur le nom de la base puis choisir l'option "Propriétés" dans le menu contextuel. "Propriétés" de la base de données, il faut activer l'onglet "Autorisations".

Dans la fenêtre

1.1.1.1. Attribuer des droits

SQL Server Management Studio

C'est via la fenêtre des propriétés de la base de données concernée que les droits seront attribués.

AM1

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Serveur Chapitre 6 : Gestion des autorisations  Transact SQL GRANT PERMISSION [,…] TO utilisateur

Transact SQL

GRANT PERMISSION [,…] TO utilisateur [ ,…] [ WITH GRANT OPTION ]

WITH GRANT OPTION: si l'autorisation est reçue avec cette option, l'utilisateur peut lui-même accorder l'autorisation à d'autres utilisateurs de la base de données.

Exemple:

GRANT CREATE TABLE To Sophie

1.1.1.2. Retirer des droits Bien évidemment, il est possible de retirer des droits attribués. Si ceux-ci n'avaient pas été préalablement accordés, aucune erreur n'est générée.

AM2

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Server Management Studio

Via la fenêtre des propriétés de la base de données:

Via la fenêtre des propriétés de la base de données:  Transact SQL REVOKE [GRANT OPTION

Transact SQL

REVOKE [GRANT OPTION FOR]

permission FROM utilisateur [ ,…] [CASCADE]

GRANT OPTION FOR : Si la permission a été accordée avec le privilège d'administration GRANT OPTION, il est possible de retirer simplement le paramètre d'administration via cette option. Permission : Liste des permissions à retirer. Utilisateur : Liste des utilisateurs concernés par cette suppression. CASCADE : Si la permission retirée a été accordée avec le privilège WITH GRANT OPTION, l'option CASCADE permet de retirer le privilège aux utilisateurs qui l'ont reçu par l'intermédiaire de l'utilisateur qui est concerné par la suppression initiale de privilège.

Exemple:

REVOKE CREATE TABLE FROM Sophie

1.1.1.3. Interdire L'instruction DENY permet d'interdire à un utilisateur l'utilisation d'un privilège, même s'il en reçoit la permission soit directement, soit par son appartenance à un groupe.

AM3

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Server Management Studio

Via la fenêtre des propriétés de la base de données:

Via la fenêtre des propriétés de la base de données:  Transact SQL DENY permission [,…]

Transact SQL

DENY permission [,…]

TO utilisateur [ ,…] [CASCADE]

Exemple:

DENY CREATE TABLE TO Sophie

1.1.2. Les droits d'utilisation des objets Ces droits permettent de fixer quelles opérations (lecture, modification, ajout ou suppression) l'utilisateur peut réaliser sur des données contenues dans une table, ou bien donner le droit d'exécution d'une procédure stockée. Ces droits sont en général gérés par le propriétaire de l'objet. En ce qui concerne le droit de lecture et de mise à jour des données contenues dans une table (utilisation des instructions SELECT et UPDATE), il est possible de préciser quelles colonnes

l'utilisateur peut visualiser. Par défaut, il s'agit de toutes les colonnes. Les principaux droits d'utilisation des objets concernant les tables, vues, procédures stockées correspondent aux ordres:

- INSERT

- UPDATE

- DELETE

- EXECUTE: qui ne s'utilise que pour les procédures stockées.

Les instructions SELECT et UPDATE peuvent être limitées à certaines colonnes de la table ou de la vue. Il est cependant préférable de ne pas trop explorer cette possibilité car il en résulte un plus grand travail administratif au niveau de la gestion des droits. Il est préférable de passer par une vue ou bien une procédure stockée pour limiter l'usage de la table.

1.1.2.1. Autoriser

SQL Server Management Studio

Les privilèges d'utilisation des objets peuvent être gés à deux niveaux dans SQL Server

Management Studio:

au niveau utilisateur, ce qui permet de connaître les possibilités de travail que possède chaque utilisateur;

au niveau des objets, afin de connaître quels sont les utilisateurs qui peuvent utiliser l'objet en question et comment ils peuvent l'utiliser.

Dans chacun des deux cas, les autorisations sont gérées par l'intermédiaire de la fenêtre des propriétés.

AM4

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Serveur Chapitre 6 : Gestion des autorisations  Transact SQL GRANT {ALL [PRIVILEGES] | permission

Transact SQL

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

ON objet [,…] TO utilisateur [,…] [WITH GRANT OPTION]

ALL : Permet d'accorder tous les privilèges d'utilisation de l'objet. Les privilèges accordés sont toujours fonction du type de l'objet concerné par cet accord de privilège. PRIVILEGES : Le mot clé a été ajouté pour le respect de la norme ANSI-92. Il n'apporte aucune modification quant à l'utilisation du mot clé ALL. Permission : Permet de spécifier la ou les opérations qui seront accordées aux utilisateurs. Objet : Correspond au nom complet de l'objet ou des objets sur lesquels porte l'accord de privilège d'utilisation. Utilisateur : Correspond à l'utilisateur, ou plus exactement à l'entité de sécurité qui va pouvoir bénéficier du ou des privilèges. WITH GRANT OPTION : Le privilège est accordé avec une option d'administration qui autorise le bénéficiaire du privilège à accorder ce même privilège à d'autres utilisateurs de la base de données.

Exemple:

GRANT SELECT, INSERT ON DBO.TABLE_CLIENT TO Sophie

1.1.2.2. Retirer

SQL Server Management Studio

Pour retirer un privilège accordé via SQL Server Management Studio, il suffit de passer par la fenêtre des propriétés

soit de l'utilisateur concerné soit de l'objet concerné. Il est alors possible de décocher les cases voulues.

AM5

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Serveur Chapitre 6 : Gestion des autorisations  Transact SQL R E VOK E [GRANT

Transact SQL

REVOKE [GRANT OPTION FOR]

{ALL [PRIVILEGES] | permission [ (colonne, [,

{FROM | TO} utilisateur [, [CASCADE]

]

] )

] [,

]} ON objet [(colonne [,

] )

]

GRANT OPTION FOR : Avec cette option, il est possible de retirer simplement le privilège d'administration du privilège. Permission : Permet de préciser la ou les permissions concernées par le retrait. Comme pour l'accord, il est possible de préciser les colonnes concernées par le retrait, mais la gestion d'un tel niveau de droit est lourde. Objet : Il faut préciser le nom complet de l'objet au sein de la base de données, c'est-à-dire nomSchema.nomObjet FROM, TO : Ces deux termes sont synonymes. L'usage habituel consiste à utiliser TO lors de l'accord d'un privilège et FROM lors du retrait d'un privilège. Utilisateur : Il s'agit très exactement de l'entité de sécurité à qui le privilège est reti. Cette entité de sécurité est le plus souvent un utilisateur, mais il peut s'agir d'un rôle par exemple. CASCADE : Lors du retrait d'une permission accordée avec le privilège d'administration, cette option permet de cascader le retrait, c'est-à-dire d'effectuer le retrait de la permission à toutes les entités de sécurité qui l'ont reçue de la part de celle qui est concernée initialement par le retrait.

Exemple:

REVOKE INSERT ON DBO.TABLE_CLIENT FROM Sophie;

1.1.2.3. Interdire Le fait d'interdire d'utiliser une permission d'un objet est une action plus forte que la suppression car elle peut être appliquée avant même que l'utilisateur n'ait reçu cette autorisation.

AM6

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Server Management Studio

Gestion des autorisations  SQL Server Management Studio  Transact SQL DENY {ALL [PRIVILEGES] | permission

Transact SQL

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

ON objet [(colonne [,…] ) ] TO utilisateur [,…] [CASCADE]

Exemple:

DENY DELETE ON DBO.TABLE_CLIENT TO Sophie

1.2. Droits au niveau base de données Les privilèges accordés au niveau base de données donnent la possibilité à l'utilisateur qui reçoit ce privilège de réaliser des actions qui ont une portée sur l'ensemble de la base de données. Par exemple, le privilège ALTER ANY USER permet à un utilisateur de créer, supprimer et modifier n'importe quel compte de la base de données. Au niveau base de données, il est possible d'accorder des privilèges à un utilisateur mais également à un schéma ou à un assembly. La gestion de ces privilèges utilise soit les instructions Transact SQL: GRANT, REVOKE et DENY, soit peut être effectuée de façon graphique à partir des propriétés de la base de données. N.B.: ci-après figurent les procédures pour attribuer ce type de privilèges. Pour supprimer ou interdire les techniques sont analogues à ce qui a été vu précédemment.

AM7

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

SQL Server Management Studio

Fenêtre des propriétés de la base de données concernée:

Fenêtre des propriétés de la base de données concernée:  Transact SQL La même opération peut

Transact SQL

La même opération peut être réalisée en Transact SQL à l'aide de l'instruction GRANT.

GRANT permissionBaseDeDonnées [,…] TO utilisateur [,…n] [WITH GRANT OPTION] [AS {group | role } ]

permissionBaseDeDonnées : La ou les permissions de base de données accordée(s). Utilisateur : Compte d'utilisateur de base de données qui reçoit le privilège. AS {group | role} : Contexte de sécurité utilisé pour pouvoir accorder le privilège.

Exemple:

GRANT ALTER ANY USER TO Sophie

AM8

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

Voici la liste des privilèges qui correspondant à ce niveau:

la liste des privilèges qui correspondant à ce niveau: 1.3. Droits au niveau du serveur SQL

1.3. Droits au niveau du serveur SQL Server 2005 permet d'attribuer des privilèges au niveau du serveur. Ces privilèges ne sont pas accordés à un utilisateur de base de données mais à une connexion. Comme pour les droits d'utilisation des objets et des instructions, il est possible d'accorder ces privilèges avec une option d'administration. Ainsi, la connexion qui possède ce droit peut accorder ce même droit à une ou plusieurs autres connexions.

Les différents droits qu'il est possible d'accorder au niveau serveur sont:

AM9

Administration SQL Serveur

Chapitre 6 : Gestion des autorisations

Toutes les informations relatives aux privilèges accordés au niveau du serveur sont visibles au travers de la vue sys.server_permissions

au x pr i vilèges accordés au niveau du serveur sont visib l es au travers

AM10