mardi 13 mai 2008

V. GESTION DE SECURITE

Ce module explique comment gérer des entités de sécurité,des éléments sécurisables et des autorisations et comment implémenter le chiffrement dans une base de données SQL Server
SQL Server 2005 fait appel à 3 mécanisme pour la sécurité:

-le mécanisme d'authentification

-le mécanisme d'autorisation

-le mécanisme de validation

Trois composants interviennent dans la sécurité:
-les entités de sécurité

-les sécurisables

-les autorisations

1)Les entités de sécurité

Ce sont des composants logiques ou les entités logiques qui doivent accéder aux ressouces de SQL Server 2005.On les localise à 3 niveaux:
-niveau OS Windows

-niveau serveur

-niveau base de données

*Entités au niveau de OS Windows:

Ce sont les comptes d'utilisateurs locales,comptes d'utilisateurs de domaines et les groupes Windows.
*Entités au niveau SQL Server 2005:

A ce niveau on a les identifiants d'accès SQL Server, c'est un ensemble d'identité d'utilisateurs enregistrés et authentifié par SQL Server (les rôles SQL Server constituent un ensemble de connexions d'accès ayant des authorisations similaires).
*Entités au niveau de la base de données

Nous avons:
-les utilisateurs de base de données: ce sont les comptes d'accès ayant l'autorisation d'accès à une base de données

- le rôle de base de données ayant des droits d'accès similaires

-le rôle d'application :c'est un rôle utilisé pour accéder à une base de données.
2)Les sécurisables

Se sont des objets auxquels accèdent les entités de sécurité telles qu'une base ou encore un service de base de données.
*Au niveau de Windows il va s'agir de fichiers et de clés de régistre utilisées par SQL serveur.

*Au niveau SQL serveur:Se sont des hiérarchies imbriquées appelées Portées.
On a une:
-Portée serveur:inclut des connexions d'accés d'une base de données et des points de terminaison créés au niveau du serveur.

-Portée de base de données: inclut des objets tels que les utilisateurs des rôles
d'applications ,assemblages , des catalogues de texte intégral, des chemins et des événements .

-Portée schéma: inclut les objets de base de données tels que des tables, des vues, des procédures, des fonctions et des types de contenu dans un chemin.

3)Les autorisations

L'accès aux sécurisables par les entités de sécurité peut être activé ou désactivé en configurant les autorisations.Celles-ci conditionnent le niveau auquel les entités ont accés aux sécurisables.

4)Création de connexion d'accés et d'utilisateurs

Pour pouvoir créer une connexion d'accés on utilise l'instruction CREATE LOGIN

Etude de cas
Vous êtes l'administrateur de base de données de la société "yelinyan", le développeur Boubacar Zemekis vient d'être engagé par l'entreprise.un nom de connexion doit être crée pour lui donner l'accés au serveur SQL. Le compte d'accés de Bouba doit comporter les paramètres suivants.
-nom de connexion:boubacar
-nom d'utilisateur:boubacarz
-mode d'authentification:SQL serveur -mot de passe:esp
-stratégie de mot de passe:activé
-Base de données par défaut:Adventureworks
Langue:Par défaut
Boubacar doit être autorisé à visualiser toutes les tâches du schéma production.

Tâche 1: Création de connexion d'accésTâche 2:Création de compte utilisateur
Tâche 3: Assignation d'autorisation
Ceci permettra à boubacar de visualiser toutes les tables "production" et d'en faire le propriétaire de ce schéma.

5)Affectation de rôle

Un rôle est un objet de base de données auquel un ensemble d'autorisations sont octroyées. Les types de rôle:
*rôles de base de données fixe
*rôles de base de données définie par l'utilisateur
*rôles d'application

-rôles de base de données fixe:

Ils sont définis au niveau de la base de données et existent dans chaque base de données

db_accessadmin
Ajouter, supprimer les utilisateurs des groupes et des rôles de base de données

db_backupoperator
Effectue les opérations de sauvegarde de la base de données.

db_datawriter
Ajoute, modifie ou supprime les données d’une table quelconque.

db_ddladmin
Ajoute, modifie et supprime les objets de la base de données.

db_denidedatareader
Restreint la lecture des données d’une table quelconque.

db_denidedatawriter
Restreint la modification des données d’une table quelconque.

db_owner
Réalise une activité quelconque de rôle de base de données.

db_securityadmin
Crée des schémas, change les rôles de base de données et les rôles d’application.
db_Public
Maintien les autorisations par défaut.

- Rôles de base de données définie par l'utilisateur

Il est possible de créer ses propres rôles de base de données ou grouper plusieurs utilisateurs et leur assigner un ensemble commun d'autorisations.Ceci permet de configurer un ensemble d'autorisations à assigner à des utilisateurs d'une base de données. L'instruction Transact-SQL qui permet la création de rôle est CREATE ROLE.

- Rôles d'application
Un rôle d'application est une entité de sécurité de base de données qui permet à une application de fonctionner avec ses propres privilèges.L'instruction permettant de le créer est CREATE APPLICATION ROLE.

6) Assignation de rôle aux utilisateurs de base de données

Chaque rôle se voit assigner un ensemble d'autorisations. Pour assigner des autorisations à un utilisateur un rôle peut être assigné à un utilisateur, ou celui-ci peut être autorisé à devenir un membre du rôle.

-Affectation d'autorisation

Après avoir créé des entités de sécurité pour les securisables, les autorisations doivent être assignées aux entités de sécurité pour définir les niveaux d'accés aux éléments sécurisables qu'elles détiennent.

- Octroi d'autorisations au niveau du serveur

Au niveau du serveur de base de données des autorisations peuvent être octroyées aux connexions d'accés.Elles peuvent être autorisées à accéder à certaines objets de serveur ou accomplir des activités au niveau du serveur tels que la modification ou la création de base de données.Les autorisations communément utilisées pouvant être octroyées au niveau du serveur sont:
CREATE ANY DATABASE
ALTER ANY ENDPOINT
ALTER ANY LOGIN
CREATE ANY DATABASE
CREATE ANY ENDPOINT
SHUTDOWN
VIEW ANY DATABASE
VIEW ANY DEFINITION
VIEW SERVER STATE
- Octroi d'autorisations au niveau de la base de données

Au niveau de la base de données, les utilisateurs doivent pouvoir créer des activités telles que:
1-la création d'un schéma: CREATE SCHEMA
2-les autorisations octroyées aux éléments sécurisables tels que les utilisateurs,les schémas,les assemblages et les objets service broker.
CREATE SERVICES;CREATE ASYMETRIC KEY;CREATE SYMMETIC KEY; CREATE CERTIFICATE ;CREATE CONTACT ;CREATE QUEUE; CREATE ROLE ;CREATE MESSAGE TYPE
Exemple:USE Adventureworks GRANT SELECT ON schema :: Production to Boubacar.

-Octroi d'autorisation au niveau des schémas

Au niveau des schémas, les autorisations peuvent être octroyées pour les éléments sécurisables tels que: les tables, les vues, les procédures stockées, et les types.Les autorisations sont les suivantes:
CREATE TABLES, CREATE FUNCTION, CREATE VIEW, CREATE PROCEDURE, DELETE, EXECUTE, INSERT, ALTER ANY USER.
*Révocation d'autorisations Exemple: REVOKE ALTER ON schema::sales from Boubacarz
*Chiffrement des données
En plus de restreindre l'accés à la base de données et aux objets de la base de données.Il est possible d'ajouter une couche de sécurité supplémentaire en chiffrant les données. Si les données sont chiffrées, elles restent sécurisées même si un utilisateur non autorisé accéde à la base de données.Les données et objets de base de données entiers tels que les procédures ou les fonctions peuvent être chiffrées à l'aide de clé de certificat.
7) Création de clé

Une clé est une valeur qui peut être appliquée à une fonction cryptographique pour chiffrer et déchiffrer une valeur de données sécurisées.Il faut distinguer les clés symétrique et asymétriques.

1-une clé symétrique est une valeur utilisée aussi bien pour le chiffrement que pour le déchiffrement de données.Pour créer une clé symetrique on utilise l'instruction
create symmetric key symkey with algorithm=TRIPLE_DES encryption by password='mot de passe'.

2-clé asymétrique: ceate asymetric asymkey with algorithm="mot de passe"

8) Création de certificat

Un certificat peut être utilisé dans une base de données SQL serveur pour ajouter une signature digitale à un objet de base de données tel qu'une procédure stockée ou une fonction.
Exemple: USE Adventureworks CREATE CERTIFICATE Aw CustCert encryption by password='mot de passe' with subject='text for Adventureworks customers' start_date='01/04/2008' expiry- date='09/04/2008'

Etude de cas
Vous êtes administrateur système de la société KPAMIN.Le nouvel employé Mayoro Ndiaye a été engagé par l'entreprise, une connexion d'accés doit être créée pour lui permettre d'accéder au serveur SQL.Le compte d'accés du nouvel employé requiert les paramètres suivants:

Nom d'accés: Mayoro
Mot de passe:espdb
Stratégie de mot de passe:Activé
stratégie d'expiration de mot de passe:Activé
L'utilisateur doit changer de mot de passe à la prochaine connexion:Désactivé
Base de données: Adventureworks
Langue par défaut:Français

Mayoro doit être capable d'assurer les tâches suivantes dans la base de données AdventureWorks:

1-creer des tables, des vues et des procédures;

2-doit modifier les données dans les tables;

3-doit travailler sur le schéma production de la base de données Adventureworks .

Pour se faire, on doit lui permettre de créer des objets de base de données et des procédures stockées.

Aucun commentaire: