aaddmmiinniissttrraattiioonn dd’’uunnee bbaassee ddee
TRANSCRIPT
Année universitaire : 2005 - 2006
UNIVERSITE D’ANTANANARIVO
ECOLE SUPERIEURE POLYTECHNIQUE D’ANTANANARIVO
__________________________________
DEPARTEMENT ELECTRONIQUE
_______________________________________________
MEMOIRE DE FIN D’ETUDES EN VUE DE L’OBTENTION
DU DIPLOME D’INGENIEUR
Spécialité : ELECTRONIQUE Option : Informatique Industrielle
AAAdddmmmiiinnniiisssttt rrraaattt iiiooonnn ddd’’’uuunnneee BBBaaassseee dddeee DDDooonnnnnnéééeeesss OOOrrraaacccllleee ::: GGGeeesssttt iiiooonnn dddeeesss uuuttt iii lll iii sssaaattteeeuuurrrsss
EEEttt SSSééécccuuurrr iii sssaaattt iiiooonnn dddeeesss dddooonnnnnnéééeeesss
Présenté par : RASOLOARISON Ilalaina Francis Olivier Devant le jury :
- Monsieur RASTEFANO Elisée : Président
- Monsieur ANDRIAMANANTSOA Guy Danielson : Examinateur
- Monsieur RABESANDRATANA ANDRIAMIHAJA Mamisoa: Examinateur
- Monsieur RAKOTOMIRAHO Soloniaina : Examinateur
Rapporteur : Monsieur RAKOTONDRASOA Justin
Date de soutenance : 03 Mars 2007
i
REMERCIEMENTS
A l'issue de mon mémoire et de mes études, qui constituent pour moi un
tremplin vers la vie professionnelle, je ne saurai taire mes sentiments dans la mesure
où cette réussite est le fruit d'une synergie de plusieurs personnes de bonne volonté.
J’adresse mes vifs remerciements à Monsieur RAKOTONDRASOA Justin, mon
encadreur, pour sa disponibilité, son soutien moral, pédagogique, et matériel durant
l’élaboration de ce mémoire.
Ma reconnaissance va également à l'endroit de Monsieur RASTEFANO Elisée,
Chef du Département Electronique, qui a bien voulu présider cette soutenance.
Je remercie les membres du jury qui ont pris de leur temps pour ce mémoire:
• Monsieur RAKOTOMIRAHO Soloniaina
• Monsieur RABESANDRATANA Andriamihaja Mamisoa
• Monsieur ANDRIAMANANTSOA Guy Danielson
Je ne saurai oublier tous les enseignants à l'ESPA, qui nous ont instruit tout au
long de ces cinq années d'études, mes collègues de l’EN 5, promotion 2006.
Enfin, j’ai une pensée noble et pleine de gratitude à l'endroit de ma mère,
RASOARISON Bakolinirina, mon Oncle Ranaivoson François, et tous les membres de
ma famille pour leurs dévouements.
Que tous ceux qui m’ont aidé de près ou de loin, trouvent ici l’expression de ma gratitude.
ii
RESUME
Le concept de Base de données répond au besoin de stocker, manipuler, et de
mettre les informations à la disposition des utilisateurs et programmes. Il existe
plusieurs Systèmes de Gestion de Bases de Données sur le marché. Oracle est parmi
ceux qui satisfont le plus aux critères de performance, de fiabilité, et de sécurité.
Cet ouvrage a été conçu dans le but de détailler ce choix compte tenu des
caractéristiques suscitées. Ceci se fera à travers une étude méthodique allant des
fonctionnalités de base d'Oracle aux principes de sécurisation qu'il propose.
Oracle 9i est le logiciel à utiliser, la version stable la plus récente à l’heure
actuelle.
Une réalisation pratique servira de conclusion afin d'illustrer les arguments
théoriques avancés.
iii
TABLES DES MATIERES
Chapitre I. GENERALITES ........................... ........................................................................ 2
I.1. Généralités sur les bases de données ...................................................................... 2 aa )) Base de données (Définition) ............................................................................... 2 bb )) Base de données relationnelle (Définition) ......................................................... 2
cc )) Système de gestion de bases de données relationnelles ....................................... 2
I.2. Généralités sur le logiciel Oracle ........................................................................... 2 aa )) Description ........................................................................................................... 2 bb )) Historique ............................................................................................................ 3 cc )) Les langages utilisés par Oracle .......................................................................... 3
I.3. Structure générale d'une base de données Oracle ................................................... 8
aa )) Structures logiques ............................................................................................... 8 bb )) Structures physiques .......................................................................................... 12
I.4. Gestion de la mémoire par oracle ......................................................................... 14 aa )) L’instance Oracle ............................................................................................... 14 bb )) Architecture en mémoire ................................................................................... 14 cc )) Fonctionnement de la mémoire ......................................................................... 15
Chapitre II. GESTION DES UTILISATEURS ............. .......................................................... 19
II.1. Création des utilisateurs ...................................................................................... 19 aa )) Choix du nom de l'utilisateur ............................................................................. 19 bb )) Choix de la méthode d'authentification de l'utilisateur ..................................... 19
cc )) Choix des tablespaces que l'utilisateur pourra utiliser ....................................... 20
dd )) Définition des quotas de l'utilisateur ................................................................. 20 ee )) Syntaxe complète de l'ordre CREATE USER ................................................... 21
II.2. Modifications d'un utilisateur .............................................................................. 22 aa )) Modification du mot de passe ............................................................................ 22 bb )) Modification des quotas .................................................................................... 23 cc )) Modification des TABLESPACES par défaut .................................................. 23
dd )) Modification du statut d'un utilisateur ............................................................... 23
ee )) Syntaxe complète de l'ordre ALTER USER : ................................................... 24
II.3. Suppression d'un utilisateur................................................................................. 25 II.4. Gestion des Profils, Privilèges, et Rôles ............................................................. 26
aa )) Les Profils .......................................................................................................... 26 bb )) Les Privilèges et les Rôles [Voir Annexe II] ..................................................... 28
Chapitre III. FONCTIONNEMENT DU RESEAU ORACLE ..... ............................................. 36
III.1. Fonctionnement général ..................................................................................... 36 aa )) Présentation ........................................................................................................ 36 bb )) Configuration du réseau .................................................................................... 37
III.2. Sécurisation du réseau ....................................................................................... 43 aa )) Sécurisation du protocole Oracle Net ................................................................ 43
bb )) Sécurisation du module d’écoute TNSListener ................................................. 43
cc )) Contrôle des accès des machines clientes aux serveurs ..................................... 44
Chapitre IV. SECURISATION DES DONNEES ............. ...................................................... 46
IV.1. Vue d'ensemble de la Sécurité des données....................................................... 46
aa )) De fausses idées sur la sécurité .......................................................................... 46 bb )) Portée de la sécurisation des données ................................................................ 47
cc )) Les piliers de la sécurité des données ................................................................ 47
dd )) Les risques qui pèsent sur les données .............................................................. 48
IV.2. Les solutions techniques aux problèmes de sécurité ......................................... 48
iv
aa )) La sécurisation des données dans la base de données ....................................... 48
bb )) La sécurisation des données sur le réseau ......................................................... 50
cc )) Authentification des utilisateurs de la base de données ..................................... 54
dd )) Audit des opérations sur la base [Voir Annexe IX] ........................................... 58
IV.3. Les mesures à prendre ....................................................................................... 59 Chapitre V. REALISATION PRATIQUE .................. ............................................................ 61
V.1. Présentation de l’environnement de travail ......................................................... 61
V.2. Manipulations sur le serveur ............................................................................... 62 aa )) Création d’une base de données ........................................................................ 62
bb )) Configuration de la connectivité réseau ............................................................ 62
cc )) Sécurisation du protocole Oracle Net ................................................................ 63
dd )) Sécurisation du module d’écoute TNSListener ................................................. 64
V.3. Création de tables et insertion des valeurs .......................................................... 65 V.4. Créations et gestions des utilisateurs .................................................................. 66
aa )) CAS de figure 1 (Les Privilèges système) ......................................................... 67
bb )) Cas de figure 2 (Les Privilèges objets) .............................................................. 68
cc )) Cas de figure 3 (Limitation de l’accès aux colonnes) ........................................ 68
V.5. Sécurisation des données : .................................................................................. 69 aa )) Complexité du mot de passe: ............................................................................. 69
V.6. Mise en réseau ..................................................................................................... 72 aa )) Connexion de la machine B vers le Serveur ...................................................... 72
bb )) Connexion de la machine C vers le serveur ...................................................... 72
v
LISTE DES ABREVIATIONS
BD
:
Bases de données
CMAN : Connection Manager
CPU : Control Processor Unit
DBA : DataBase Administrator
DCE : Distributed Computing Environment
DDL : Data Definition Language
DES : Data Encription Standard
DML : Data Manipulation Language
HTTP : Hyper Text Transfert Protocol
HTTPS : Hyper Text Transfert Protocol Secured
ID : Identificator
LRU : Least Recently Used
ODBC : Oracle Database Connector
OSF : Open System Fundation
PGA : Program General Area
PKI : Public Key Infrastrusture
PL/SQL : Procedural Language/Structured Query Language
RADIUS : Remote Authentification Dual_In User Service
RMAN : Recovery Manager
SE : Source Externe
SGA : System Global Area
SGBD : Systèmes de Gestion de Base de Données
SGBDR : Systèmes de Gestion de Base de Données Relationnels
SID : System Identificator
SQL : Structured Query Language
SSL : Secure Socket Layer
SSO : Single Sign_On
TCP : Transmission Control Protocol
TCP/IP : Transmission Control Protocol/Internet Protocol
TCPS : Transmission Control Protocol
TNS : Transparent Network Substrate
VPD : Virtual Private Database
vi
LISTE DES TABLEAUX
Tableau 01 : Les différents fichiers configurés avec Oracle Net Configuration
Assistant
Tableau 02 : Les algorithmes d'intégrité utilisés par Oracle
Tableau 03 : Accès aux tables
Tableau A.1 : Rôles des différents segments d'une base de données Oracle
Tableau A.2 : Les différents ports logiques pour le TNSListener
Tableau A.3 : Liste des types d'administrateurs
Tableau A.4 : Matrice des problèmes et des sécurités
Tableau A 5 : Description des processus d’arrière plan dans Oracle
vii
LISTE DES FIGURES
Figure 1.1 : Schéma traduisant l’intervention des différents langages
Figure 1.2 : Schéma montrant le mode de traitement d’un bloc PL/SQL par
Oracle
Figure 1.3 : Une table stockant des informations concernant les étudiants
Figure 1.4 : Relation entre tablespace, segment, extents et blocs
Figure 1.5 : Relation entre toutes les structures physiques de la base de
données Oracle
Figure 1.6 : Relation et fonctionnements des unités logiques et physiques
Figure 1.7 : Architecture du système Oracle
Figure 2.1 : Syntaxe complète de l'ordre CREATE USER
Figure 2.2 : Syntaxe complète de l'ordre ALTER USER
Figure 2.3 : Syntaxe complète de l'ordre DROP USER
Figure 2.4 : Syntaxe complète pour l'assignation de privilèges systèmes
Figure 2.5 : Syntaxe complète pour l'assignation de privilèges objets
Figure 2.6 : Syntaxe complète pour le retrait de privilèges systèmes
Figure 2.7 : Syntaxe complète pour le retrait de privilèges objets
Figure 2.8 : Création des rôles
Figure 2.9 : Exemple sur la gestion des rôles
Figure 2.10 : Activation et désactivation des rôles
Figure 3.1 : Schéma simplifié du réseau Oracle [6]
Figure 3.2 : Présentation de l’outil Oracle Net Manager
viii
Figure 3.3 : Présentation de l’outil Oracle Net Manager
Figure 4 1 : Portée de la sécurisation des données [8]
Figure 4.2 : Virtual Private Database
Figure 4.3 : Procédure de génération des clés pour le cryptage simple
Figure 4.4 : Oracle9i Application Server Support for SSL
Figure 5.1 : Présentation du réseau utilisé pour la pratique
Figure 5. 2 : Sécurisation du module d’écoute TNSListener (1)
Figure5. 3 : Sécurisation du module d’écoute TNSListener (2)
Figure 5.4 : Types de tables utilisées
Figure 5.5 : Présentation des données dans la table DEPT
Figure 5.6 : Vérification de la connexion de l'utilisateur andry (1)
Figure 5.7 : Vérification de la connexion de l'utilisateur andry (2)
Figure 5.8 : Vérification du mot de passe
Figure 5.9 : Communication Client-serveur (1)
Figure 5.10 : Communication Client-serveur (2)
Figure A.1 : Syntaxe de l'ordre ALTER ROLE
:
1
INTRODUCTION
Dans le temps, il n’existait aucun moyen de gérer informatiquement les données
stockées dans les systèmes d’informations au sein d’une entreprise. Ce handicap
tendait à ralentir les tâches et les prises de décision engageant par la suite un manque
à gagner conséquent.
Afin de pallier à ce problème, et grâce à l'évolution de l’outil informatique, les
systèmes de gestion des bases de données ont été créés. Ces derniers, initialement,
étaient disponibles uniquement sur des « mainframes »; mais actuellement, du fait des
avancées technologiques, ils peuvent désormais être installés sur tous types
d'ordinateurs, y compris les ordinateurs personnels.
Vinrent aussi les mises en réseau des différents ordinateurs, avec l’arrivée de
l’Intranet, qui est un système de réseau local, ou encore de l’Internet, un réseau
étendu. Ceux-ci ont ainsi permis une plus grande accessibilité des données pour de
nombreux utilisateurs.
Lors des premières utilisations, les Systèmes de Gestions de Bases de
Données comportaient plusieurs failles, dont la capacité de stockage souvent limitée.
Mais il y a également un souci au niveau de la gestion des utilisateurs, puisque
certaines informations stockées se doivent d'être sécurisées et accessibles
uniquement à un nombre restreint de clients.
Ces problèmes sont en majorité pris en compte par le logiciel Oracle, qui, par
rapport aux autres systèmes, a un avantage notable.
Il présente toutes les qualités requises pour la sécurisation des transactions, la
distribution de l’accessibilité des données ainsi que la gestion des utilisateurs sans
cesse en augmentation. Le présent manuscrit se penche sur ces thèmes, en portant
l’intitulé: « Administration d'une Base de Données Oracle : Ges tion des
Utilisateurs, et Sécurisation des données » .
De manière à mieux comprendre le SGBD Oracle, il nous faudra d’abord voir les
généralités sur les bases de données, avant de passer aux fonctionnalités et principes
dudit système. Il nous sera alors possible d’aborder les concepts de gestion des
utilisateurs de la base de données sur le réseau, qui nous permettront au final
d'analyser les exigences de la sécurisation des données sur Oracle, à travers les
produits et technologiques mis-en œuvre. A l’issue de ces différentes parties nous
pourrons procéder à une démonstration du fonctionnement du système, de la gestion
des utilisateurs tout en tenant compte de la sécurisation.
2
Chapitre I. GENERALITES
I.1. Généralités sur les bases de données
aa )) Base de données (Définition)
Une base de données est un ensemble de données organisées, centralisées ou
non, interrogeables, modifiables, et utilisables par un certain nombre d'utilisateurs
humains, ou un certain nombre d’applications, travaillant en parallèle.
bb )) Base de données relationnelle (Définition)
Une base de données est dite relationnelle lorsque sa structure de stockage
d'informations est organisée en table sans préjuger de la façon dont les informations
sont stockées dans la machine. Une table étant constituée de lignes et de colonnes.
Les données de deux tables peuvent être mises en relation. La notion de relation
permet alors des recherches complexes sur les données qui constituent la base.
Le modèle relationnel a été formalisé par CODD en 1970. Quelques exemples de
réalisation en sont : DB2 (IBM), INFORMIX, INGRES, ORACLE, SQL Server, MySQL,
PostgreSQL, Sybase, ... Le succès du modèle relationnel auprès des chercheurs,
concepteurs et utilisateurs est dû à la puissance et à la simplicité de ses concepts.
cc )) Système de gestion de bases de données relationnel les
Un système de gestion de bases de données relationnelles est un ensemble de
logiciels permettant de stocker, de consulter, de modifier, et d’administrer les données
de la base. C'est, en fait, l'interface entre la base de données et les utilisateurs ou leurs
programmes.
I.2. Généralités sur le logiciel Oracle
aa )) Description
Oracle est un SGBDR conçu par la société Oracle Corporation. Il a été élaboré
spécialement pour stocker et traiter des milliers voire même des millions de données
dans plusieurs tables.
Il a une structure client/serveur et est exploitable dans plusieurs types
d’architecture réseau : Intranet ou Internet.
3
Outre la base de données, Oracle est un véritable environnement de travail
constitué de nombreux outils permettant notamment une administration de la base, des
interfaces fiables pour gérer les produits et les divers outils de configuration.
bb )) Historique
Oracle est un des leaders des SGBD en matière de capacité de stockage des
données, de sécurité et de performance.
C’est en 1977 que la société Oracle Corporation a été créée par Lawrence
Ellison, Bob Miner, et Ed Oates. Elle portait autrefois le nom Software Development
Laboratories.
En 1979, il lance un premier prototype (version 1) qui intègre la séparation des
espaces d’adressage entre les programmes utilisateurs et le noyau Oracle.
En 1983, une troisième version compatible avec le plateforme UNIX fut lancée
pour améliorer la performance et pour une meilleure prise en charge du SQL,
En 1984, une version d’Oracle (Oracle 4) est commercialisée sur des machines
IBM.
L’intégration dans le SGBD du middleware SQL*Net permettait de lancer la
version Oracle 5 en 1985 avec une utilisation Client/Serveur due à l’arrivée du réseau
dans le monde de l’informatique au milieu des années 80.
En 1986, Oracle est déjà compatible avec la plateforme 8086.
En 1988, Oracle 6 est disponible sur un grand nombre de plates-formes et
apporte de nombreuses nouvelles fonctionnalités, ainsi qu'une amélioration
considérable des performances.
En 1995, Oracle sort une nouvelle version disponible sous Windows avec
l’acquisition d’un puissant moteur multidimensionnel pour lancer une version Oracle
Express.
En 1997, la version 8i est mise en place avec l’introduction du développement
orienté objet. Oracle, depuis la version 8.0.5 est disponible sous Linux.
En 2001, 400 nouvelles fonctionnalités ont été ajoutées à la version 8 pour
concevoir Oracle 9i, capable de lire des documents XML.
cc )) Les langages utilisés par Oracle
Oracle utilise plusieurs langages de programmation pour la définition et la
manipulation des requêtes ainsi que la gestion des bases de données.
4
Ces langages sont utilisés par Oracle pour optimiser le temps d’accès à la base
par les utilisateurs et pour une meilleure condition de stockage des données, ils
assurent tous un rôle spécifique dans le moteur et l’architecture Oracle. Ces langages
sont :
- SQL (Structured Query Language)
- PL/SQL (Procedural Language SQL)
- SQL*Plus
Voici une figure traduisant l’intervention de ces langages dans le moteur Oracle:
Figure 1.1 : Schéma traduisant l’intervention des différents langages
( i ) Oracle et le langage PL/SQL
PL/SQL est le langage de programmation d’Oracle. Il permet une manipulation
procédurale des requêtes SQL et propose une interface procédurale aux Systèmes de
Gestion de Bases de Données Relationnelles en permettant de gérer les traitements
qui utilisent les instructions SQL dans un langage procédural.
Moteur Oracle
SQL*Plus Environnement d’exécution
du SQL, de sripting simple et de formatage des résultats
des requêtes
PL/SQL Programmations procédurales des accès à la base de
données Oracle
SQL Définition de la
structure de la base de données Oracle
Blocs Anonymes
Triggers Procédures fonctions
Fichiers de commande externes
Etats textuels
Lignes de commande
Extensions SQL Standard
5
Les structures du PL/SQL sont similaires à celles des langages évolués et
fournissent une méthode souple pour manipuler les informations dans une base de
données grâce à l’utilisation des packages.
Les blocs ou procédures PL/SQL sont compilés et exécutés par le moteur
PL/SQL. [1]
Avantages de l’utilisation du langage procédural PL /SQL
Les avantages de l’utilisation du PL/SQL par Oracle se résument par les faits
que:
• PL/SQL permet d’optimiser l’exécution des requêtes en construisant des
applications selon les conditions et critères exigés par les requêtes.
• Les instructions de manipulation des données, de description des données, de
contrôle des transactions, les fonctions SQL peuvent être utilisées avec la même
syntaxe. Ce qui évite de ralentir les traitements de la base de données.
• La gestion des variables et des structures de contrôle (tests, boucles)
augmente la capacité de traitement des données.
• PL/SQL propose pour Oracle une bonne intégration car il est possible d’écrire
des fonctions complexes de manipulation des données sans recourir à un langage
externe.
• Le code PL/SQL est très proche du moteur Oracle.
Mode de traitement d’un bloc PL/SQL par le moteur O racle
Un bloc PL/SQL est intégralement envoyé au moteur PL/SQL, qui traite chaque
instruction PL/SQL et sous-traite les instructions purement SQL au moteur SQL, afin
de réduire le trafic réseau.
Ce mode de traitement est traduit par la figure suivante :
6
Figure 1.2 : Schéma montrant le mode de traitement d’un bloc PL/SQL par Oracle
Les deux éléments utilisés par ce programme pour accéder aux données sont :
• Les curseurs qui permettent de manipuler des résultats de requête.
• Les triggers qui sont des blocs PL/SQL associés à une table et permettent de
renforcer l’intégrité des données.
( ii ) Oracle et le langage SQL
SQL est un langage de communication standard des SGBDR. Il a été
implémenté dans Oracle depuis 1979.
Avantages de l’utilisation du langage SQL
Puisqu’il est un langage non procédural, son utilisation présente plusieurs
avantages dans la gestion d’une base de données Oracle :
• Des ensembles d’enregistrements peuvent être manipulés simultanément par
quelques lignes de commande.
• SQL possède une syntaxe naturelle et souple ce qui permet à un moteur Oracle
d’optimiser son temps de traitement des requêtes.
• Toute manipulation sur la base de données Oracle peut être traduite par des
instructions SQL comme :
- La création d’une base de données.
- La création ou suppression d’une table dans la base.
- L'insertion, mise à jour ou suppression des données dans une table de la base.
- La restauration et le sauvegarde des données
- La spécification des types de requêtes.
7
- La création ou suppression des utilisateurs de la base.
- L'attribution ou enlèvement de privilège ou rôle d’un utilisateur de la base.
- L'accès aux fichiers constitutifs de la base de données Oracle
- L'accès au dictionnaire de données. [Voir I.3 – a)]
Pour manipuler le stockage des données dans la base, SQL se divise en trois
types de commandes :
• Les langages de définition des données ou DDL.
• Les langages de manipulation de données ou DML.
• Les deux commandes : COMMIT et ROLLBACK qui assurent la gestion des
transactions. [Voir Annexe I – 1.1]
8
I.3. Structure générale d'une base de données Oracl e
Une base de données Oracle se divise en deux structures:
− Les structures logiques
− Les structures physiques
aa )) Structures logiques
On entend par structures logiques les différents éléments qui constituent les
unités logiques d’une base de données.
Cette structure se classe sur plusieurs niveaux allant de la structure la plus
importante jusqu’à la plus petite qu'un administrateur de base de données peut
contrôler.
( i ) Les schémas objets
Les schémas objets sont l’ensemble des moyens d’accès à une base de
données composés essentiellement par : les tables, vues, index, clusters, liens,
synonymes, procédures PL/SQL, package PL/SQL. Ces schémas sont propres à
chaque base de données:
Les tables
Ce sont les niveaux les plus élevés dans la structure logique d’une base de
données. Elles sont les unités de stockage manipulables directement par les
utilisateurs.
L’insertion de données dans une table est traduite par un ajout de ligne et ces
données sont réparties selon leurs attributs respectifs sur des colonnes, comme
montre l'exemple suivant:
Id Noms Prénom s Département s 1 Rasoloarison Ilalaina Electronique
2 Rakotorahalahy Andry Electronique
3 Andrinirina Adelard Hydraulique
Figure 1.3: Une table stockant des informations concernant les étudiants.
Les vues
Ce sont des éléments qui permettent de donner accès à un sous ensemble d’une
table ou de plusieurs tables , en donnant le droit à un utilisateur d’accéder à la totalité
de son contenu ou seulement sur une partie spécifiée ou un sous ensemble requis.
9
Les index
La création d’index est optionnelle, mais pourtant il permet à une instance du
serveur Oracle d’accéder plus rapidement à des éléments de la table.
Les clusters
Le rôle des clusters dans une base de données est de supprimer les données
doubles et donc à avoir moins de données chargées à partir du disque.
Les liens
Ils permettent à des utilisateurs d’une base d’accéder aux informations d'une
autre base sans avoir à s'authentifier une deuxième fois.
Les procédures et packages PL/SQL
Une procédure est un ensemble d’ordre PL/SQL permettant de bien manipuler
les informations dans la base de données.
Un package est constitué par une ou plusieurs procédures PL/SQL. Une fois
créé, le package est stocké dans la base de données, et est compilé instantanément
dès l’exécution d’une requête.
( ii ) Les tablespaces
Ce sont les espaces disques logiques où sont stockées les tables d'une base de
données.
Il existe 4 grands types de tablespace:
- SYSTEM pour le dictionnaire de données.
- les tablespaces DATA et INDEX pour les données utilisateurs.
- Les tablespaces temporaires pour le stockage des données en cours de
transaction.
- Les tablespaces UNDO servent à sauvegarder les données en cas
d'interruption des transactions.
( iii ) Les segments
Les segments sont les éléments qui constituent les tablespaces. Suivant leur
rôle, on peut donc distinguer plusieurs types de segments:
- Le segment de stockage de données ou Data segment
- Le segment de stockage des transactions ou Rollback segment
10
- Le segment de stockage des index des tables ou Index segment
- Le segment de stockage temporaire des données en cours de transaction ou
Temporary Segment
( iv ) Les extents
Les extents constituent les éléments allouables d’un segment et leur allocation
se fait dynamiquement en passant d’un extents à un autre jusqu’à ce que la taille
demandée par le segment soit atteinte.
( v ) Les blocs
Le bloc est la plus petite unité logique de stockage de données qu’un
administrateur Oracle peut manipuler. Un bloc détermine le plus bas niveau où les
données peuvent être stockées
Un bloc est divisé principalement en trois sous parties dont chacune est
subdivisée en plusieurs couches :
- Le header : contient les informations sur le bloc en indiquant à quel type de
segment il appartient, à quelle table et à quelle ligne, plus précisément son adresse.
- Une zone vide qui peut être utilisée pour ajouter de nouvelles données, et le
contrôle de sa taille optimise le temps d’accès à la base.
- Une partie qui contient les données sur les lignes da la table à laquelle le bloc
appartient.
La figure suivante montre les relations logiques existantes entre bloc, extent et
segment :
Erreur ! Des objets ne peuvent pas être créés à par tir des codes de champs de mise en forme.
Figure1.4: Relation entre tablespace, segment, extents et blocs
Remarques
Les différentes unités logiques de stockage d’une base de données Oracle sont
toutes dépendantes.
Ces dépendances sont résumées par la figure ci-dessous :
11
Figure 1.5 : Relation entre toutes les structures physiques de la base de données
Oracle
( vi ) Le dictionnaire de données
Le dictionnaire de données constitue le composant le plus important pour la
gestion d’une base de données Oracle.
Le dictionnaire contient les informations sur les utilisateurs: privilèges, rôles,
profils, quotas...
Il permet la création d’une première base de données juste après l’installation
d’Oracle.
Les données qui y sont stockées sont automatiquement mises à jour lors de
l'utilisation de commandes DDL.
On ne peut donc accéder au dictionnaire que pour des consultations SELECT ou
par l’intermédiaire du programme Schéma Manager.
12
bb )) Structures physiques
Une base de données est constituée par:
• Les fichiers de données,
• Les fichiers de contrôle,
• Les redo log files,
• Les fichiers d’archives.
Remarque:
Ce sont tous des fichiers binaires, donc inexploitables avec un éditeur de texte.
( i ) Les fichiers de données
Ces fichiers contiennent l’ensemble des données concernant la base de
données. Les informations dans les fichiers de données sont généralement de deux
sortes :
− Le dictionnaire de données et de travail
− Les données des utilisateurs
Ils permettent au serveur de distribuer un objet de la base sur plusieurs disques
(par mesure de sécurité), mais ceci dépend de la taille des objets.
Ces fichiers possèdent plusieurs caractéristiques qui sont nécessaires pour
assurer le fonctionnement général de la base de données.
( ii ) Les fichiers de contrôle
Chaque instance d'une base de données Oracle a au moins un fichier de
contrôle qui contient des informations sur la structure physique de la base. Il est
généré pendant la création de la base.
Pour démarrer une base de données, il suffit au logiciel Oracle de localiser les
fichiers de contrôle pour y puiser l'ensemble des renseignements qui lui serviront à
réaliser l’opération.
Ce fichier doit être toujours disponible car il est consulté; et modifié fréquemment
par le serveur Oracle. Et il est indispensable pour la restauration de la base.
13
Le fichier de contrôle contient les informations sur la base dont :
• L'historique des fichiers de journalisation archivés
• Les informations sur les tablespaces et les fichiers de données (nom de
fichier, checkpoints du fichier de données, statut lecture/écriture, en ligne
ou non)
• Les journaux en ligne
• La date et l'heure de création de la base
• Le nom de la base
• Le mode d'archivage actuel
• Les numéros de séquence (de chaque journal)
• Les informations sur RMAN
• Les informations sur les blocs corrompus
• L'ID de la base
( iii ) Les fichiers Redo Log
Ils servent à enregistrer toutes les modifications apportées à la base de données
sous forme de journaux.
Ces derniers sont utilisés pour retrouver les transactions de la base de données
dans le bon ordre en cas d'accident.
( iv ) Les fichiers d’archives (archives files)
Les fichiers d'archives permettent de stocker de manière permanente les
informations dans les fichiers Redo Log.
14
La figure suivante illustre l'architecture d'une base de données Oracle et les
rapports entre les structures physiques et logiques de la base :
Figure 1.6 : Relation et fonctionnements des unités logiques et physiques
I.4. Gestion de la mémoire par oracle
aa )) L’instance Oracle
Elle est indispensable au bon fonctionnement d'une base de données Oracle.
Sans l’instance il ne sera pas possible d'accéder à la base de données.
Deux sous ensembles forment une instance :
• La zone mémoire : le SGA.
• Les processus d’arrière plan.
bb )) Architecture en mémoire
Oracle utilise particulièrement et en forte quantité la mémoire physique RAM du
serveur afin de fournir les meilleures performances possibles [Voir V.2 – a] :
- L'accélération de l’accès aux données de la base,
- La mise en mémoire des processus,
- L'optimisation de la communication entre les processus et les bases des
données
Une base de données Oracle est constituée par deux parties mémoires distinctes :
- La zone mémoire SGA ou System Global Area
- La zone mémoire PGA qui est l’ensemble des processus d’arrière plan ou
Background Process.
15
La mémoire et les processus associés à une instance assurent la gestion et le
stockage des données dans la base et permet l’accès simultané de plusieurs
utilisateurs.
( i ) La zone mémoire SGA
Lors du démarrage de la base ainsi que son instance, une portion de la mémoire
centrale de l'ordinateur est allouée, cette portion s’appelle : SGA (System Global Area)
Le SGA est en fait une zone mémoire utilisée principalement par la base pour
stocker les données dans les fichiers de données, sur le disque dur et de partager ces
informations entre les différents processus.
Elle est constituée essentiellement par des zones mémoires et de différentes
mémoires tampons :
- La zone mémoire : Shared Pool (ou mémoire partagée)
- La zone mémoire : Database Buffer Cache
- La zone mémoire : Redo Log Buffer
- Les curseurs
( ii ) Le PGA ou Program Global Area
Le PGA est la partie de la mémoire qui est utilisée par les divers processus des
utilisateurs d’Oracle.
Cette zone mémoire contient :
- La zone de tri, appelée aussi : SORT AREA où sont effectués les tris des
requêtes lancées par l’utilisateur,
- Les informations de sessions : cette zone contiendra les informations de
sessions, les privilèges de l'utilisateur,
- L’état des curseurs de l’utilisateur,
- Le Stack Space qui contiendra toutes les autres variables de l'environnement,
cc )) Fonctionnement de la mémoire
Le fonctionnement de la mémoire dans une instance Oracle est traduit par les
fonctionnements des éléments du SGA ainsi que ceux des processus dans le PGA.
16
( i ) Principe de fonctionnement du SGA
La zone mémoire partagée Shared Pool
Cette zone est utilisée spécifiquement pour partager les informations sur les
objets de la base de données ainsi que sur les droits et privilèges accordés aux
utilisateurs.
Elle est constituée par deux parties différentes :
- Le Library Cache qui stocke les ordres SQL récemment exécutés, sa version
compilée et son plan d'exécution
- Le Dictionary Cache qui est la zone de stockage de la structure, les
composants et les privilèges liés aux objets de la base.
La zone mémoire de tampon Database Buffer cache
Cette zone mémoire sert à stocker les blocs de données utilisés récemment. Il
s’agit d’un espace mémoire contenant toutes les données qui sortent ou entrent dans
la base de données.
Si une requête Oracle est lancée pour la première fois, cette dernière va se
charger de rapatrier directement les données correspondantes à partir du disque dur
de stockage. Mais lors des exécutions ultérieures d’une même requête, les blocs de
données seront récupérés à partir de cette zone mémoire, permettant ainsi un gain de
temps.
Dans cette zone les données sont gérées en utilisant un algorithme LRU (Least
Recently Used).
La zone mémoire Redo Log Buffer
Cette zone mémoire sert exclusivement à enregistrer toutes les modifications
apportées aux données de la base ou dans le tampon Database.
Ces fichiers sont utilisés lors du crash du système afin de restaurer les
informations dans la base de données dans toute son intégrité.
( ii ) Principe de fonctionnement du PGA
Cette zone mémoire est réservée au fonctionnement des différents processus
Oracle, elle est allouée lors de leur démarrage puis libérée quand les processus sont
inactifs.
Le fonctionnement de la base de données est alors régi par un certain nombre
de processus chargés en mémoire permettant d’assurer sa gestion.
17
Ces processus se classent généralement en deux types distincts :
- Les processus utilisateurs
- Les processus systèmes
Les processus utilisateurs
Ils sont souvent appelés "user process" ou noyau Oracle. On peut distinguer
deux types de processus utilisateurs :
• L’Oracle Server Code qui se charge de l’interprétation et de l’exécution des
requêtes SQL ainsi que la gestion de la mémoire et les fichiers de données.
• Le Code Spécifique de l’outil, c’est une implémentation à partir duquel les
commandes SQL sont réellement exécutées.
Les processus systèmes
Il existe deux catégories de processus systèmes pour Oracle :
− Les processus serveurs qui gèrent les requêtes des utilisateurs
− Les processus d’arrière plan ou background Process qui assurent le
fonctionnement interne du SGBD Oracle en assurant la gestion de la
mémoire et l’écriture dans les fichiers physiques.
18
La figure suivante montre l’architecture globale du système Oracle :
Figure 1. 7 : Architecture du système Oracle
19
Chapitre II. GESTION DES UTILISATEURS
Un utilisateur correspond à un login qui aura reçu certains privilèges selon les
besoins et les logiques des applications. Cet utilisateur sera stocké dans le dictionnaire
de données et disposera d'un espace de stockage pour ses objets. Ces derniers à leur
tour seront stockés dans son schéma.
II.1. Création des utilisateurs
Schéma (Définition)
Un schéma désigne un ensemble nommé d'objets tels que des tables, vues,
clusters, procédures et packages associés à un utilisateur précis. Une fois un
utilisateur de base de données créé, son schéma est automatiquement créé. Un
utilisateur ne s'associe donc qu'à un seul schéma et réciproquement.
Dans ce chapitre on va aborder la manière de créer et configurer un utilisateur ou
un compte avec lequel celui-ci pourra se connecter et effectuer des actions sur la base
de données, en fonction des droits qui lui seront attribués.
Sur Oracle, contrairement à d’autres bases de données, initialement un
utilisateur ne dispose d’aucun droit, sans que l’administrateur ne lui assigne des rôles
et des privilèges.
La création d'un utilisateur se fait par la commande CREATE USER.
Les étapes nécessaires pour créer un utilisateur sont les suivants:
aa )) Choix du nom de l'utilisateur
Une bonne pratique, pour éviter les problèmes lors de l'ajout de nouveaux
utilisateurs, est de mettre en place une stratégie de nommage, soit:
- Taille maximale : 30 caractères
- Ne devra contenir que des lettres de [a - z] et des chiffres [0 - 9].
- Pas de caractères accentués ou autres.
- Utilisation acceptée des symboles : #, $, _
- Login commençant par une lettre
bb )) Choix de la méthode d'authentification de l'utilis ateur
L’authentification permet au serveur Oracle de vérifier les accès de l'utilisateur
lorsque celui-ci se connecte. Il existe deux types d'authentification :
20
• L'authentification par la base de données.
• L'authentification par le système d'exploitation.
( i ) Par la base de données
C'est le mode par défaut et le plus courant. En clair l'utilisateur est authentifié
avec les mots de passe stockés dans la base de données. Ce qui signifie que la base
de données devra être ouverte pour qu'un utilisateur puisse se connecter.
La clause IDENTIFIED BY <mot_de_passe> permet de créer un utilisateur
authentifié par la base de données.
( ii ) Par le système d'exploitation
Cette solution consiste à ce que l'utilisateur n'ait alors besoin de s'authentifier
qu'une seule fois sur son système d'exploitation.
La clause IDENTIFIED EXTERNALLY permet de créer un utilisateur authentifié par
le système d’exploitation.
Cependant si l’utilisateur oublie de se déconnecter de sa machine, il sera très
simple de se connecter à la base sans avoir à fournir de mot de passe. L'utilisation de
ce mode d'authentification n'est donc pas recommandée.
cc )) Choix des tablespaces que l'utilisateur pourra uti liser
Ceci ramène à indiquer le champ d’action de l’utilisateur en choisissant les
tablespaces que celui-ci sera en mesure d'utiliser.
Il est indispensable de définir le tablespace de données et le tablespace
temporaire de l'utilisateur pour éviter toute écriture dans le tablespace SYSTEM (qui est
assigné si aucun tablespace par défaut n'est défini).
On définit ces deux tablespaces avec les options DEFAULT TABLESPACE pour le
tablespace de données et TEMPORARY TABLESPACE pour le tablespace temporaire.
Il est très fortement déconseillé d'autoriser un utilisateur à se servir du
tablespace SYSTEM, qui doit impérativement rester dédié au dictionnaire de données.
[Voir I.3 – a)]
dd )) Définition des quotas de l'utilisateur
Une fois les tablespaces identifiés, l'étape suivante consiste à définir l'espace
alloué à l'utilisateur sur chacun des tablespaces.
Voici les différentes options disponibles pour les quotas :
21
- Une taille en K (KiloBytes) ou en M (MegaBytes)
- Unlimited
Par défaut le nouvel utilisateur dispose d'un quota null sur tous les tablespaces.
Voici un exemple d'assignation de quotas sur différents TABLESPACES :
QUOTA 5M ON TBS_USERS QUOTA UNLIMITED ON TMP_USERS...
ee )) Syntaxe complète de l'ordre CREATE USER
La figure suivante représente la structure complète d'un ordre CREATE USER:
Figure 2.1: Syntaxe complète de l'ordre CREATE USER [2]
22
− Utilisateur : Login du futur utilisateur
− IDENTIFIED BY mot de passe : Active l'authentification par la base de données avec
le mot de passe spécifié.
− IDENTIFIED EXTERNALLY : Active l'authentification par le système d'exploitation
− IDENTIFIED GLOBALLY AS 'nom externe' : Active l'authentification par un LDAP
externe.
− DEFAULT TABLESPACE nom du tablespace : Permet d'attribuer un TABLESPACE de
données par défaut à l'utilisateur.
− TEMPORATY TABLESPACE nom du tablespace : Permet d'attribuer un TABLESPACE
temporaire par défaut à l'utilisateur.
− QUOTA options ON nom du tablespace : Permet de définir le quota d'espace attribué
à l'utilisateur sur un TABLESPACE précis.
− PROFILE nom du profil : Permet d'attribuer un profil limitant les ressources système
de l'utilisateur.
− PASSWORD EXPIRE : Permet de faire expirer le mot de passe de l'utilisateur pour que
celui-ci le change lors de la première connexion.
− ACCOUNT LOCK / UNLOCK : Permet d'activer ou de désactiver un compte utilisateur.
II.2. Modifications d'un utilisateur
La modification des paramètres d’un utilisateur s’effectue par l’ordre : ALTER
USER.
aa )) Modification du mot de passe
La commande utilisée est:
ALTER USER < login_de_l_utilisateur > IDENTIFIED BY < nouveau_mot_de_passe>
Si on a utilisé la fonction de vérification de mots de passe fournie par Oracle
(script UTLPWDMG.SQL) ou qu'on en a créé une, on doit utiliser l'option REPLACE :
ALTER USER < login de l'utilisateur >
IDENTIFIED BY < nouveau_mot_de_passe >
REPLACE < ancien_mot_de_passe >
23
bb )) Modification des quotas
Notons que si un utilisateur disposait de 1Mo de quotas sur un TABLESPACE et
qu'il en avait utilisé la moitié avec des tables, et bien si on lui modifie son quota à 0Mo
sur ce TABLESPACE cela n'impliquera pas que ses tables soient vidées ou supprimées,
mais cela signifiera que ses tables ne pourront pas s'allouer d'extents supplémentaires.
Exemple : ALTER USER scott QUOTA 15M ON tbs_users QUOTA 0M ON tools;
cc )) Modification des TABLESPACES par défaut
Modifier les TABLESPACES par défaut de l'utilisateur ne déplacera pas les objets
des anciens TABLESPACES.
Exemple :
ALTER USER scott DEFAULT TABLESPACE tbs_users2 TEMPORARY
TABLESPACE tmp2;
dd )) Modification du statut d'un utilisateur
Pour des raisons de sécurité, il peut parfois être utile de verrouiller le compte
d'un utilisateur pour éviter que celui-ci soit utilisé de manière frauduleuse. Cette
méthode sert également à organiser des objets dans un schéma sans que l'on puisse
utiliser l'utilisateur en question.
Exemple d'activation et de verrouillage d'un compte utilisateur :
- Verrouillage du compte : ALTER USER scott ACCOUNT LOCK;
- Activation du compte : ALTER USER scott ACCOUNT UNLOCK;
24
ee )) Syntaxe complète de l'ordre ALTER USER :
Figure 2.2: Syntaxe complète de l'ordre ALTER USER [2]
− Utilisateur : Login du futur utilisateur
− IDENTIFIED BY mot de passe : Active l'authentification par la base de données avec
le mot de passe spécifié.
− IDENTIFIED EXTERNALLY : Active l'authentification par le système d'exploitation
− IDENTIFIED GLOBALLY AS 'nom externe' : Active l'authentification par un LDAP
externe.
− DEFAULT TABLESPACE nom du tablespace : Permet d'attribuer un TABLESPACE de
données par défaut à l'utilisateur.
− TEMPORATY TABLESPACE nom du tablespace : Permet d'attribuer un TABLESPACE
temporaire par défaut à l'utilisateur.
25
− QUOTA options ON nom du tablespace : Permet de définir le quota d'espace attribué
à l'utilisateur sur un TABLESPACE précis.
− PROFILE nom du profil : Permet d'attribuer un profil limitant les ressources système
de l'utilisateur.
− PASSWORD EXPIRE : Permet de faire expirer le mot de passe de l'utilisateur pour que
celui-ci le change lors de la première connexion.
− ACCOUNT LOCK / UNLOCK : Permet d'activer ou de désactiver un compte utilisateur.
− DEFAULT ROLE : Ces options vont permettre de définir lors de la modification d'un
utilisateur son ou ses rôles par défaut. Ces rôles seront activés lors de la connexion
de l'utilisateur
II.3. Suppression d'un utilisateur
La suppression se fait en utilisant la commande DROP USER.
Pour supprimer, de plus, tous les schémas objets créés par cet utilisateur (à part
les rôles), on utilise le paramètre CASCADE :
DROP USER <nom_de_l_utilisateur> CASCADE;
Il est important de noter qu'un utilisateur actuellement connecté à la base ne peut
pas être supprimé.
Syntaxe complète de l'ordre DROP USER
Figure 2.3: Syntaxe complète de l'ordre DROP USER [2]
− utilisateur : Login de l'utilisateur à supprimer.
− CASCADE : Permet de supprimer le contenu du schéma de l'utilisateur qui
sera supprimé.
Remarque
Il existe sur Oracle plusieurs comptes d'utilisateur prédéfinis, comme SCOTT,
ANONYMOUS, DBSNMP... Pour des raisons de sécurité, ces comptes sont par défaut
verrouillés.
Pour voir tous les utilisateurs existants et leurs statuts, la commande utilisée est:
SELECT * FROM dba_users;
26
II.4. Gestion des Profils, Privilèges, et Rôles
On peut assimiler les Profils, Rôles et Privilèges à des droits assignés par
l'administrateur aux utilisateurs de la base de données .Ils sont définis pour restreindre,
donc sécuriser l'accès aux données et ressources de la base.
On peut directement assigner des profils, privilèges, et rôles prédéfinis à un
utilisateur lors de la création de celui-ci, ou encore après qu'il ait été créé.
aa )) Les Profils
Un profil est un groupement de paramètres qui conditionnent l'environnement
dans lequel l'utilisateur travaillera. Ces paramètres étant divisés en deux catégories :
les paramètres systèmes qui limiteront les droits de l'utilisateur sur les ressources
systèmes; et les paramètres de mot de passe, qui sont des clauses visant à sécuriser
les mots de passe des utilisateurs.
Le profil contient un nom et sera assigné aux utilisateurs désirés.
( i ) Les différents paramètres d'un profil
Les paramètres de mot de passe
• Verrouillage du mot de passe:
Verrouille le compte lorsque le nombre de tentatives de connexion a été atteint.
Ce nombre est défini dans la clause FAILED_LOGIN_ATTEMPTS [VALEUR]
Une fois ce nombre atteint, le paramètre PASSWORD_LOCK_TIME [VALEUR]
permet de définir combien de temps le mot de passe sera verrouillé. Cependant
l'administrateur peut aussi le déverrouiller.
• Temps d'expiration du mot de passe:
Définit le temps d'expiration d'un mot de passe : PASSWORD_LOCK_TIME
[VALEUR]
Une fois ce délai atteint, la clause PASSWORD_GRACE_TIME [VALEUR] exprime
le temps dont dispose l'utilisateur pour changer le mot de passe.
• Historique de mot de passe:
Exprime le temps pendant lequel un utilisateur ne peut pas réutiliser un
même mot de passe : PASSWORD_REUSE_MAX [VALEUR]
27
• Fonction de vérification de mot de passe [Voir V.5 – a)]
Il existe un fichier SQL nommé UTLPWDMG.SQL qui servira a créer une
fonction servant à contrôler les mots de passe. Par conséquent, il suffit de modifier ce
script SQL pour qu'il crée la fonction de contrôle désirée.
Cette fonction peut contrôler le mot de passe sous différentes façons :
- Vérification de l'inégalité entre le nom d'utilisateur et le mot de passe.
- Vérification de la longueur du mot de passe (minimum et maximum)
- Vérification de la simplicité du mot de passe (Il doit être différent de
certains mots et doit comporter au moins un caractère spécial).
- Le mot de passe doit être différent de celui utilisé précédemment.
Les paramètres systèmes
• Temps de cpu alloué a l'utilisateur (en secondes)
Définit le temps de travail d'un cpu alloué à un utilisateur :
CPU_PER_SESSION [VALEUR]
• Nombre de connections simultanées par utilisateur
Définit le nombre de sessions qu'un utilisateur peut ouvrir en même temps :
SESSION_PER_USER [VALEUR]
• Temps de connexion alloué a un utilisateur
Exprime le temps pendant lequel un utilisateur est autorisé à rester connecté à
l'instance:
CONNECT_TIME [VALEUR]
• Temps d'inactivité
Définit le temps d'inactivité jusqu'a deconnexion forcée de l'utilisateur :
IDLE_TIME [VALEUR]
• Nombre de bloc de données
Exprime le nombre total de lectures mémoire ou disque alloué a un utilisateur :
LOGICAL_READS_PER_SESSION [VALEUR]
28
( ii ) Création et assignation d'un profil
La commande CREATE PROFILE permet de créer un profil.
Pour assigner ensuite ce profil à un utilisateur, la syntaxe est: Grant [nom du
profil] to [nom_de_l_utilisateur].
Enfin pour modifier un profil :
ALTER PROFILE [nom du profil] LIMIT [CLAUSE] [VALEUR DE LA CLAUSE];
Pour obtenir les informations sur les profils, on interroge la vue "dba_profiles" :
SELECT * FROM dba_profiles;
bb )) Les Privilèges et les Rôles [Voir Annexe II]
Un privilège correspond à un droit d'exécuter une commande SQL dans une
base de données. IL peut être attribué à un ou à tous les utilisateurs et à un rôle.
Les privilèges sont de deux types :
• Les privilèges de niveau système permettant la création, la modification, la
suppression, et l'exécution de groupes d'objets.
• Les privilèges de niveau objet permettant les manipulations sur des objets
spécifiés.
( i ) Assignation de privilèges système à un utilis ateur
Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose
encore d'aucun droit puisque aucun privilège ne lui a encore été assigné. Il ne peut
même pas se connecter à la base.
Pour pouvoir se connecter, créer des tables, des vues, des séquences, il faut lui
assigner les privilèges nécessaires.
Pour lui assigner ces privilèges de niveau système il faut utiliser l'instruction
GRANT dont voici la syntaxe :
Figure 2.4 : Syntaxe complète pour l'assignation de privilèges systèmes [2]
29
− systeme_privilege représente un privilège système.
− role représente un rôle préalablement créé.
− ALL PRIVILEGES représente tous les privilèges système (à l'exception de SELECT
ANY DICTIONARY).
− user représente le nom de l'utilisateur qui doit bénéficier du privilège.
− PUBLIC assigne le privilège à tous les utilisateurs.
− WITH ADMIN OPTION assigne à l'utilisateur le droit d'assigner, de retirer, de modifier
et de supprimer à son tour les privilèges du rôle reçus.
L'ensemble de ces privilèges peut être assigné au sein d'une même commande.
( ii ) Assignation de privilèges objet à un utilisa teur
Il est possible de limiter les droits d'accès des utilisateurs à quelques objets
spécifiés seulement.
Cette figure illustre la syntaxe de l'assignation de privilèges objet:
Figure 2.5 : Syntaxe complète pour l'assignation de privilèges objets [2]
30
− object_privilege représente un privilège objet.
− role représente un rôle préalablement créé.
− ALL PRIVILEGES représente tous les privilèges assignés à l'exécuteur de l'instruction.
− column représente le nom de colonne d'une table.
− schema représente le nom d'un schéma.
− object représente le nom d'un objet du schéma.
− directory_name représente le nom d'une directory.
− JAVA SOURCE représente le nom d'une source Java.
− JAVA RESOURCE représente le nom d'une ressource Java.
− WITH GRANT OPTION assigne à l'utilisateur de droit d'assigner à son tour le privilège
reçu à un autre utilisateur (WITH GRANT OPTION s'applique à un utilisateur
ou à PUBLIC, mais pas à un rôle)
− WITH HIERARCHY OPTION assigne les privilèges aux sous-objets.
Remarque
Un utilisateur muni des droits DBA ne pourra pas accorder de privilèges sur un
objet qui ne lui appartient pas.
( iii )Retrait des privilèges système
Les privilèges système qui ont été assignés à des utilisateurs ou à des rôles
peuvent être retirés avec l'instruction REVOKE
Figure 2.6 : Syntaxe complète pour le retrait de privilèges systèmes [2]
Les arguments sont identiques à ceux décrits pour l'instruction GRANT
Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec
l'option ADMIN OPTION.
31
Remarque
Retirer des privilèges à un utilisateur ne supprime pas son schéma ni les objets
qu'il contient.
( iv ) Retrait des privilèges objet
Les privilèges objet qui ont été assignés à des utilisateurs ou à des rôles peuvent
être retirés avec l'instruction REVOKE
Figure 2.7 : Syntaxe complète pour le retrait de privilèges objets [2]
CASCADE CONSTRAINTS (applicable uniquement pour révoquer des privilèges
REFERENCES) supprime toutes les contraintes d'intégrité référentielles définies par
l'utilisateur
FORCE retire le privilège EXECUTE sur les types objet.
Remarque
Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec
l'option ADMIN OPTION.
L'utilisateur disposant du rôle DBA ne peut pas retirer de privilèges qu'il n'a pas
accordé
32
( v ) Principes généraux appliqués aux privilèges
• Un utilisateur possède automatiquement tous les privilèges sur un objet qui lui
appartient.
• Un utilisateur ne peut pas donner plus de privilèges qu'il n'en a reçus.
• S'il n'a pas reçu le privilège avec l'option WITH GRANT OPTION, un utilisateur ne
peut pas assigner à son tour ce même privilège
L'instruction GRANT permet d'assigner un ou plusieurs privilèges système ou
objet.
Cependant, lorsque la liste des privilèges est importante, cette manière de
procéder s'avère rapidement fastidieuse et répétitive. Si l'on prend l'exemple d'un
utilisateur travaillant au service comptabilité, il doit recevoir un certain nombre de
privilèges sur un certain nombre d'objets. Un autre utilisateur du même service à toutes
les chances de se voir assigner des privilèges identiques.
C'est pourquoi il est souhaitable de pouvoir regrouper des privilèges identiques
dans un même ensemble. Cet ensemble s'appelle un rôle et se créé avec l'instruction
CREATE ROLE :
( vi ) Création des rôles et assignation de privilè ges à ceux-ci
Figure 2.8 : Création des rôles [2]
− role représente le nom du rôle
− NOT IDENTIFIED (défaut) indique qu'aucun mot de passe n'est nécessaire pour
activer le rôle
− IDENTIFIED BY password indique qu'un mot de passe est nécessaire pour activer le
rôle
− IDENTIFIED USING package indique qu'un package va être utilisé pour fixer les
droits de l'utilisateur
33
− IDENTIFIED EXTERNALLY indique que l'autorisation provient d'une source externe
(S.E.)
− IDENTIFIED GLOBALLY pour un user GLOBAL géré par exemple par Enterprise
Directory Service.
Lorsque le rôle est créé, il ne contient rien et il faut l'alimenter à l'aide
d'instructions GRANT.
Une fois le rôle créé, il peut être assigné à un utilisateur ou à un autre rôle :
GRANT comptabilite TO nom_utilisateur ;
La figure suivante illustre un exemple sur la gestion des rôles:
Figure 2.9 : Exemple sur la gestion des rôles [3]
( vii ) Activation et désactivation d'un rôle
Un rôle peut être activé ou désactivé pour un utilisateur avec l'instruction ALTER
USER
34
Figure 2.10 : Activation et désactivation des rôles [2]
35
DEFAULT ROLE spécifie les rôles assignés par défaut à la connexion
ALL assigne tous les rôles à l'utilisateur
ALL EXCEPT assigne tous les rôles à l'utilisateur à l'exception des rôles désignés
NONE n'assigne aucun rôle à l'utilisateur
Pour activer un rôle qui ne fait pas partie de ceux par défaut il faut utiliser
l'instruction SET ROLE.
( viii ) Suppression d'un rôle
Un rôle peut être supprimé en utilisant l'instruction DROP ROLE avec comme
syntaxe:
DROP ROLE nom_role ;
36
Chapitre III. FONCTIONNEMENT DU RESEAU ORACLE
III.1. Fonctionnement général
aa )) Présentation
Pour l’accès en réseau d’une base de données Oracle, il faut mettre en place
une architecture client - serveur à trois niveaux qui sont :
• Premier niveau : une ou plusieurs machines clientes,
• Deuxième niveau : un serveur d’application,
• Troisième niveau : un serveur de base de données.
La communication à travers un réseau Oracle passe par un middleware qui est
l’ensemble des logiciels et matériels s’interfaçant entre le serveur et l’application
cliente.
Il est composé :
− D’Oracle Net
− Des outils de communication comme : Oracle Objects pour OLE, pilote
ODBC
− Des protocoles de communication : TCP, TCPS, SSL, HTTP et HTTPS
Le fonctionnement global du réseau Oracle est présenté par la figure suivante :
Figure 3.1 : Schéma simplifié du réseau Oracle [4]
37
bb )) Configuration du réseau
L’accès à une base de données localhost ou à distance par un réseau se fait
généralement par un protocole propriétaire sur TCP/IP nommé : OracleNet.
Un module d’écoute portant le nom de TNSListener est chargé de gérer les
connexions des utilisateurs au niveau du serveur. Ce module écoute sur un port TCP
dont le numéro par défaut est 1521 mais d’autres ports peuvent être utilisés comme :
1914,1522, 1540, 1630, 2483, 2484 [Voir AnnexeIV]
La connexion à une base de données à travers un réseau s’effectue en plusieurs
étapes :
• Configuration du protocole Oracle Net
• L’activation du protocole TCP de Microsoft
• Démarrage d’Oracle http serveur piloté par Apache
• Configuration du module d’écoute TNSListener
• Configuration des méthodes de résolution des noms
• Configuration d’un nom de service réseau local
( i ) Configuration du protocole Oracle Net
On va développer brièvement l’étude de ce protocole du fait qu’il montre la
spécificité d’Oracle par rapport aux autres Systèmes de Gestion de Base de Données.
Définition et rôles du protocole Oracle Net
Oracle Net est l’ensemble des outils réseau d’Oracle utilisés pour se connecter à
des bases de données distribués.
Il a pour rôles essentiels :
• De gérer le flux d’informations dans tout le réseau en permettant d’établir les
communications client - serveur ou serveur - serveur.
• De faciliter le partage des données entre plusieurs bases
• De mettre en œuvre les applications client serveur à trois niveaux.
• D’établir et de maintenir une session réseau entre l’application cliente et le
serveur hébergeant les bases.
• De faire les routages des connexions clientes.
38
Avantages de l’utilisation du protocole Oracle Net
• Les avantages de l’utilisation du protocole Oracle Net sont surtout :
• Son indépendance accrue vis-à-vis du réseau (topologie, protocole) et du
système d’exploitation utilisé par le serveur ou le client.
• Sa capacité d’établir plusieurs connexions dans un seul processus serveur
Oracle.
• La journalisation et le traçage améliorés.
• Le chiffrement des mots de passe.
• La gestion des connexions avortées.
• D’autres avantages peuvent être perçus par l’utilisation de ce protocole :
• La connexion est semblable pour une base distante et pour une base locale.
• L’utilisation du réseau est transparente.
• La localisation de la base est transparente pour l’utilisateur.
Configuration et sécurisation
La configuration de ce protocole consiste en général à configurer le module
d’écoute TNSListener, les services de base de données et le nom du service réseau
utilisé. Deux outils Oracle sont disponibles pour effectuer la configuration de ce
protocole :
• Oracle Net configuration Assistant
• Oracle Net Manager
Configuration avec Oracle Net Configuration Assistant
Cet outil offre les possibilités de créer ou de réaliser la configuration initiale des
différents fichiers constituants le protocole Oracle Net selon les paramètres fixés par
l’administrateur.
39
Ces fichiers sont décrits dans le tableau suivant :
Tableau 01 Les différents fichiers configurés avec Oracle Net Configuration Assistant
Nom du fichier Description Emplacement Listener.ora
Fichier contenant les informations relatives à la configuration du module d’écoute listener
C :\oracle\network\admin.
Sqlnet.ora
Fichier contenant les informations relatives à la configuration de la résolution des noms de service réseau (Alias)
C :\oracle\network\admin.
Tnsnames.ora
Fichier contenant les informations de configuration des noms de service
C :\oracle\network\admin.
Remarque
Pour lancer Oracle Net Configuration Assistant : Démarrer / Oracle_home /
Configuration and Migration Tools / Net Configuration Assistant
Configuration avec Oracle Net Manager
Cet outil, plus complet, permet quant à lui de modifier les paramètres figurants
dans les fichiers de configuration d’Oracle Net.
La figure suivante représente l’interface graphique de l’outil :
Figure 3.2 : Présentation de l’outil Oracle Net Manager
40
- L’onglet Profil permet de modifier les paramètres dans le fichier sql.ora
- L’onglet Résolution des noms permet de modifier les paramètres dans le
fichier tnsnames.ora
- L’onglet Module d’écoute permet de modifier les paramètres dans le fichier
listener.ora
( ii ) Activation du protocole TCP de Microsoft
Le protocole TCP (Transport Control Protocol) est un protocole implémenté dans
les composants réseaux de windows.
Ce protocole est spécifié lors de la configuration d’Oracle Net. Il permet d’établir
un circuit virtuel entre deux points d’un réseau qui échangent des informations, c'est-à-
dire assurer la connectivité du réseau.
Rôles et caractéristiques
L’utilisation de TCP est fortement recommandée dans le réseau Oracle du fait de
ses rôles et de ses caractéristiques.
Ses principaux rôles dans le fonctionnement d’un réseau sont :
− L'établissement de la communication entre différents réseaux
interconnectés
− Le transport et acheminement des paquets
− Le découpage des informations en plusieurs paquets selon le débit et la
bande passante du réseau
− Le routage des adresses IP
( iii ) Démarrage d’Oracle http serveur piloté par Apache
Le serveur Web Apache d’Oracle utilise le protocole HTTP pour établir une
communication entre la base de données et les différents utilisateurs en autorisant la
circulation des requêtes et réponses sur le serveur
Quand il est démarré, Apache se place comme un portail d’accès à la base de
données sur le port 8080.
( iv )Configuration du module d’écoute TNSListener
Ce module d’écoute est essentiel pour assurer les connexions réseaux entre les
machines clientes (les applications serveurs, les autres bases de données) et les
bases de données hébergées dans le serveur.
41
Son rôle est d’être à l’écoute des demandes de connexions à la machine cible. Il
doit être paramétré et lancé sur cette machine. Un seul listener peut être mis en place
par serveur, pour permettre la connexion à toutes les bases. En effet, le listener
reconnaît automatiquement toutes les instances démarrées sur ce serveur.
Fonctionnement du module d’écoute
Deux grandes fonctions sont assurées par le listener :
− L'écoute des différents réseaux,
− Le routage des communications vers l’instance de la base de données
cible.
Le TNSListener n’écoute que sur le port spécifié par l’administrateur. Si aucun
port n’est précisé ou le module d’écoute n’est pas démarré, une connexion provenant
d’un client ne peut pas être détecté par le serveur.
Le TNSListener reçoit les différentes informations de connexions d’un client
comme :
− L'authentification (mot de passe et nom d’utilisateur)
− Le nom de la base de données cible
− Le nom de service de la base de données
− Le mode de connexion (normal, sysoper ou sysdba)
Ces informations sont alors transmises vers le serveur pour une vérification dans
le fichier : PWDnom_base.ora pour le mot de passe et login.
Une fois l’authentification vérifiée, le système contrôle les privilèges et rôles de
l’utilisateur communiqués par le TNSListener dans le fichier d’enregistrement des
informations des utilisateurs.
Si l’action sur la base demandée par l’utilisateur est conforme à son rôle, ses
privilèges et aux informations d’authentifications, le module d’écoute assure le rôle d’un
pont entre client et serveur.
42
Configuration [Voir Annexe V]
La configuration consiste à spécifier plusieurs informations concernant :
− Le nom du module d’écoute à créer
− Le protocole utilisé pour transporter les données.
− L’adresse de la machine où il est localisé
− Le port d’écoute
Deux méthodes de configuration sont possibles :
− Configuration en intervenant directement au fichier : listener.ora,
− Configuration en utilisant l’outil : Net Configuration Assistant d’Oracle
( v ) Configuration des méthodes de résolution des noms
Les méthodes de résolution des noms permettent de générer les informations
nécessaires à la localisation de la base de données et à sa connexion.
Deux méthodes de résolution sont proposées par le système Oracle :
- Résolution selon le nom du réseau local
- Résolution selon le nom d’hôte
La résolution serait plus avantageuse en choisissant une méthode de résolution
selon le nom d’hôte.
Principe de la configuration des méthodes de résolu tion des noms
La configuration se fait en général en utilisant l’outil Oracle Net Configuration
Assistant.
Si on choisit une résolution de noms selon le nom d’hôte, ce nom doit
obligatoirement correspondre aux noms d’hôte de la machine où se trouve la base de
données cible.
( vi ) Configuration d’un nom de service réseau loc al
La configuration d'un nom de service réseau local permet de nommer un nom de
service réseau utilisé par le client et la base de données pour se communiquer à
travers le réseau.
Cette configuration sera plus détaillée dans la partie réalisation pratique.
43
III.2. Sécurisation du réseau
Les réseaux doivent être bien sécurisés afin d'éviter les intrusions et les pertes
de données dans une base de données.
Il faut alors mettre en place une stratégie de protection maximum sur les
données et sur tous les composants réseaux vulnérables aux attaques provenant de
l’extérieur ou dans le réseau local de l’entreprise.
aa )) Sécurisation du protocole Oracle Net
La méthode la plus pratique pour sécuriser ce protocole est d’appliquer le filtrage
des adresses IP des postes clients autorisés à se connecter à la base de données
dans le serveur.
La réalisation de ce filtrage s'effectue par la configuration du fichier : sqlnet.ora
dans <Oracle_Home> \ Ora92 \ network \ admin.
Exemple de filtrage des adresses IP
Le filtrage consiste à insérer les lignes suivantes dans le fichier sqlnet.ora :
Tcp.validenode_checking=YES
Tcp.invited_nodes= (« Liste des adresses IP autorisés »)
Ou
Tcp.validenode_checking=YES
Tcp.excluded_nodes= (« Liste des adresses IP non autorisés »)
bb )) Sécurisation du module d’écoute TNSListener
La première méthode efficace pour le sécuriser est de lui affecter un mot de
passe.
Définition d’un mot de passe pour le Listener
Il faut passer en mode interactif dans le programme du Listener et appeler la
méthode change_password :
On lance l'invite de commande : lsnrctl
LSNRCTL > change_password
Enter Old password :………….
Enter New password :…………
Reenter new password :……….
44
LSNRCTL > set password
LSNRCTL > save_config
cc )) Contrôle des accès des machines clientes aux serve urs
Pour bien assurer la sécurité du serveur de données à travers le réseau, c'est-à-
dire minimiser les risques de tentatives de connexions frauduleuses, il faut mettre en
place une stratégie de gestion des connexions.
( i ) Filtrage au niveau du serveur
Il est possible de définir au niveau du serveur la liste des postes autorisés à
accéder aux bases Oracle ou au contraire, celles interdites d'accès.
Filtrage en utilisant l’outil Oracle Net Manager
L’outil Oracle Net Manager est présenté dans la figure suivante :
Figure 3.3 : Présentation de l’outil Oracle Net Manager
Pour contrôler l’accès des machines clientes au serveur :
- Les adresses IP des postes autorisés à se connecter au serveur sont listées
dans le champ : clients autorisés d’accès. (Liste blanche)
45
- Les adresses IP des postes interdits à se connecter au serveur sont listées
dans le champ : clients interdits d’accès. (Liste noire)
Remarques
- La configuration de ce filtrage est sauvegardée automatiquement dans :
C:\oracle\network\admin en procédant comme suit : fichier \ Enregistrer la configuration
réseau
- D’autres outils de filtrage peuvent être aussi utilisés comme CMan (Connexion
Manager) mais sa présence dépend du produit Oracle utilisé.
46
Chapitre IV. SECURISATION DES DONNEES
De nos jours, aucun pays ni aucune entreprise n'est épargné par les attaques
électroniques et les actes d'espionnages informatiques, qu'ils sont obligés d'augmenter
le niveau de protection de leurs données.
Cette partie présente une vue d'ensemble sur les exigences de sécurité des
bases de données Oracle, et analyse les risques auxquels on est confronté. Il fournit
une relation entre les problèmes sur le plan sécurité et les types de technologies mises
en oeuvre par Oracle pour assurer la protection des données.
IV.1. Vue d'ensemble de la Sécurité des données
aa )) De fausses idées sur la sécurité
C'est important de mettre un point sur ce problème avant de commencer l'étude
sur la sécurité des données sur Oracle. En effet, plusieurs mythes induisent les gens
en erreur, les amenant le plus souvent à adopter des solutions inefficaces aux
problèmes de sécurité qu'ils rencontrent. Les cas de figure les plus fréquents étant:
• "Les pirates à l'origine de la plupart des infractions":
En réalité, 80% des pertes de données sont causées par des utilisateurs
internes.
• "Le cryptage suffit pour sécuriser les données":
En fait, le cryptage n'est qu'une approche, parmi tant d'autres, à la sécurité des
données.
• "Les Pare-feu (Firewalls) protègent les données":
En vérité, sur Internet 40% des intrusions ont lieu malgré la présence de pare-
feu.
Pour concevoir des solutions qui protègent vraiment les données, il faut
comprendre les conditions de sécurité appropriées au site, et l'envergure des menaces
qui pèsent sur les données.
47
bb )) Portée de la sécurisation des données
La figure 1-1 montre une vue générale de l'environnement complexe contenant
les données à protéger:
Figure 4 1 : Portée de la sécurisation des donnée [3]
La sécurité porte sur le plan physique, personnel, procédural, et technique.
Il faut analyser soigneusement les risques et s'assurer que les solutions
adoptées conviennent aux problèmes. Dans certains cas une solution technique peut
ne pas être appropriée. Par exemple, dans le cas où les employés quittent souvent
leurs bureaux, une solution d'ordre technique ne résoudra pas ce problème physique,
c'est l'environnement de travail qu'il faut sécuriser.
cc )) Les piliers de la sécurité des données
On envisage souvent la sécurité sous un angle fermé, essentiellement celui de la
confidentialité. Mais bien d'autres concepts sous tendent la sécurité. Les technologies
utilisées doivent également assurer, outre la confidentialité:
• L'intégrité: qui sous-entend la validité des données, c'est à dire que les données
sont protégées contre d'éventuelles suppression ou corruption par des utilisateurs non
authentifiés.
• La disponibilité : qui est la faculté de délivrer correctement un service en terme
de délai et de qualité à l'utilisateur; sans pour autant porter atteinte à la performance
du système.
• La maintenabilité : qui est l'aptitude à la réparation, l'évolution, et la
maintenance du système.
48
dd )) Les risques qui pèsent sur les données
La sécurité des données court plusieurs risques dont les principaux sont:
• La falsification des données.
• Les espionnages et vols de données.
• La falsification de l'identité des utilisateurs.
• Les mots de passe trop simples, ou facilement accessibles:
Dans les cas où les utilisateurs ont du mal à mémoriser un nombre
important de mots de passe, qu'ils emploient des mots de passes facile à
deviner, ou le même mot de passe pour toutes les applications, ou encore qu'ils
gardent le mot de passe en question dans des emplacements faciles à trouver.
[Voir V.5 – a)]
• L'accès non autorisé aux tables, colonnes, et rangées de données.
• Le manque de responsabilité:
Le plus souvent l'administrateur système n'arrive pas à contrôler les
activités des utilisateurs, si bien que ces derniers ne peuvent pas toujours être
pris pour responsables de tous leurs actes.
• Les conditions complexes de gestion des utilisateurs:
Le plus souvent l'on a affaire à des centaines et des milliers d'utilisateurs
à la fois. A ceci s'ajoute la complexité du système gérant cette multitude
d'utilisateurs de façon centralisée.
IV.2. Les solutions techniques aux problèmes de séc urité
Cette partie s'intéresse aux technologies mises en oeuvre par Oracle pour
résoudre les problèmes cités précédemment. Il inclut les sections suivantes:
• La sécurisation des données dans la base de données,
• La sécurisation des données sur le réseau,
• L'authentification des utilisateurs de la base de données,
• L'audit des opérations sur la base.
aa )) La sécurisation des données dans la base de donnée s
La vulnérabilité des données se présente sous plusieurs formes, recourant à
plusieurs types de solutions techniques pour y remédier. Cette section introduit les
49
mesures de sécurité déployées par Oracle, destinées à protéger les fichiers stockés
sur le serveur, et également les processus.
( i ) Les privilèges, rôles, et les limitations d'a ccès
La gestion des privilèges et des rôles revêt une importance capitale dans la
sécurisation d'une base de données, celle-ci ayant été déjà traitée dans les
précédentes parties. [Voir II.4 – b)]
( ii ) La limitation d'accès
Tout d'abord, une vue est une interrogation logique (SELECT) basée sur des
tables ou d'autres vues qui n'occupent pas de place sur le disque. Une vue n'est en fait
qu'un "SELECT" mémorisé en base (l'instruction est mémorisée, pas les résultats).
Oracle peut utiliser le concept de vue complexe ou dynamique pour la restriction
d'accès aux colonnes ou rangées.
Cependant il existe une autre approche pour ce faire: le "Virtual Private
Database" (VPD).
Les VPDs ont recours à une interface graphique qui est l'Oracle Policy Manager.
Ils utilisent la modification dynamique de requête. Ainsi tout ordre commençant
par, ou incluant 'SELECT', est filtré; et des conditions différentes (clauses WHERE ou
fonction booléenne personnalisée par exemple) sont appliquées en fonction de
l'utilisateur qui fait la demande.
Figure 4.2 : Virtual Private Database [3]
( iii ) Le cryptage des données sur le serveur
Oracle permet aussi le cryptage des données sur le serveur. Nous reviendrons
sur ceci ultérieurement.
( iv ) Les facteurs de préservation de la disponibi lité du système
La disponibilité est souvent assimilée à une continuité de service 24 heures sur
24, et 7 jours sur 7. Pourtant elle a certains aspects de sécurité. Par exemple, si un
utilisateur a la faculté de manipuler les ressources systèmes pour en restreindre la
50
disponibilité à d'autres utilisateurs, il crée une faille à la sécurité. Ceci réfère à un "refus
de service" par le système.
Les différents facteurs de préservation de la disponibilité sont:
- Les quotas de stockage.
- Les limitations de ressources.
- Les sauvegardes: il devrait y avoir des données de
sauvegarde en cas de probables pertes ou erreurs
d'application.
- La résistance aux attaques.
- Les configurations sécurisées.
- Les systèmes parallèles: en cas de panne il devrait exister
d'autres instances pour diffuser le message d'erreur
correspondant.
bb )) La sécurisation des données sur le réseau
Cette section explique comment assurer la sécurité des données lors de leur
transfert à travers le réseau.
Elle décrit les technologies disponibles dans Oracle afin d'assurer la
confidentialité et l'intégrité des données pendant leur transfert:
- Le contrôle des accès au réseau,
- Le cryptage des données pour les transferts à travers le réseau,
- Le protocole SSL (Secure Sockets Layer),
- Les Firewalls (Pare-feu),
- La définition d'un mot de passe pour le "listener".
( i ) Le contrôle des accès sur le réseau [Voir III.2]
Il existe différentes façons pour contrôler les accès sur le réseau:
La gestion des connexions "middle-tier"
Dans le cas d'une communauté très large d'utilisateurs, il est préférable de définir
globalement au niveau de la machine la liste des postes autorisés à accéder aux bases
Oracle hébergées, ou au contraire, la liste des machines interdites d'accès. Pour ce
faire on configure des instances multiples d'Oracle Connection Manager (CMAN), qui
51
filtre les sessions des clients à travers une seule connexion réseau à la base de
données. On peut aussi configurer le fichier sqlnet.ora pour définir des "listes
blanches" (postes autorisés à se connecter) ou des "listes noires" (postes pour
lesquelles les connections Oracle sont refusées).
Le "Native Network Capabilities" (Valid Node Checki ng)
Dans le cas d'une base de données sensible, il faut s'assurer sur la provenance
des connexions sur le réseau. Par exemple, dans une compagnie, l'utilisateur Olivier
peut accéder à la base de données salaire, mais seulement quand il est au travail.
Cela se fait à travers deux paramètres spécifiques au produit Oracle Net Services:
TCP.EXCLUDED_NODES et TCP.INVITED_NODES qui permettent le contrôle d'accès des
clients à la base de données; et on peut contrôler ces deux paramètres par le
paramètre TCP.VALIDNODE_CHECKING.
( ii ) Le cryptage lors des transferts de données
Les informations sensibles qui transitent sur un intranet ou sur Internet peuvent
être protégées à l'aide du cryptage. Le cryptage consiste en une transformation de
l'information en une version lisible uniquement avec une clé de décryptage.
Fonctionnement du cryptage d'Oracle
Dès qu'une connexion s'établit, des clés de cryptage temporaires sont calculées
des deux côtés (client et serveur). Ces clés sont combinées entre elles par
l'intermédiaire d'une procédure spécifique (Diffie-Hellmann) pour donner naissance à
une clé de communication commune. Cette clé commune est utilisée pendant toute la
durée de la session. Le cryptage utilise des algorithmes standardisés (DES, 3DES).
Figure 4.3 : Procédure de génération des clés pour le cryptage simple
52
Configuration
Pour crypter les données à transmettre, on doit configurer le fichier SQLNET.ORA
[Voir Annexe VI]
( iii ) Le contrôle d'intégrité des données
Outre le cryptage, des algorithmes d'intégrité vérifient et détectent si les données
n'ont pas été altérées. Le tableau ci-dessous présente les trois algorithmes d'intégrité
industriels standard utilisés par oracle.
Tableau 02: Les algorithmes d'intégrité utilisés par Oracle
Algorithme Caractéristiques MD5 Checksum S'assure que les données ne soient pas altérées ou
dérobées pendant le transfert à travers le réseau. Secure Hash Algorithm (SHA)
Même principe que le MD5 mais avec des messages plus condensés pour renforcer la sécurité.
Pour la configuration du mécanisme d'intégrité d'Oracle, se référer à l'Annexe VII.
Fonctionnement du mécanisme d'intégrité d'Oracle
Pour sécuriser l'intégrité des données, il existe des algorithmes spéciaux,
appelés algorithmes de hachage. Ces algorithmes sont comparables aux "sommes
horizontales uniques". Chaque paquet de données Oracle reçoit une somme de
contrôle de ce type et un numéro de séquence unique.
Ce mécanisme d'intégrité permet à Oracle de détecter les manipulations
suivantes :
- la modification des données par un tiers (la somme de contrôle est
fausse)
- la suppression de certains paquets de données (le numéro de séquence
est faux)
- l'ajout de nouveaux paquets de données (le numéro de séquence est
faux)
Dès qu'une manipulation est détectée, la connexion Oracle Net est interrompue.
( iv ) Le protocole SSL (Secure Sockets Layer)
Fonctionnement du SSL sous Oracle [Voir Annexe VIII]
Par défaut, les communications Oracle SQL*Net s'appuient sur le protocole
TCP/IP qui a l'avantage d'être universel mais qui n'est pas du tout étudié pour être
sécuritaire.
53
Oracle permet cependant de sécuriser le protocole TCP/IP en y ajoutant la
couche SSL (Secure Socket Layer), qui est une pile de protocoles qui s'intercale entre
les appels TCP et le protocole applicatif SQL*Net.
Tous les appels à TCP sont remplacés par des appels à SSL, charge à lui de
communiquer avec TCP. Cette surcharge de TCP par SSL est appelée TCPS sous
SQL*Net (exactement de la même façon que l'on a HTTPS qui est une surcharge de
HTTP).
Le protocole SSL (Secure Socket Layer) permet de satisfaire trois exigences
fondamentales en même temps: le cryptage, le contrôle d'intégrité, et l'authentification.
Les composants suivants sont requis pour l'utilisation du protocole SSL sous Oracle :
- Server Certificate (identité du serveur)
- Optional Client Certificate (identité du client)
- Wallet (lieu de stockage des certificats)
- Oracle Net (option de sécurité avancée)
Figure 4.4 : Oracle9i Application Server Support for SSL [3]
( v ) Les Firewalls (Pare-feu)
Une manière d'assurer la confidentialité et l'intégrité du système est la mise en
place d'un Firewall entre l'intranet et le réseau publique.
Les Firewalls fonctionnent comme un filtre. Ils sont basés sur des règles
définissant quels clients peuvent se connecter, et lesquels ne peuvent pas. C'est en
confrontant les noms d'hôte ou l'adresse IP des utilisateurs avec les dits règles qu'ils
décident après d'autoriser ou pas l'accès.
Ils pourvoient ainsi une protection contre les attaques sur des protocoles ou
applications individuelles.
54
Les Firewalls sur Oracle peuvent être implémentés au moyen d' Oracle Net
Firewall; ou encore par Oracle Connection Manager (CMAN).
( vi ) Définition d'un mot de passe au listener
Pour tout utilisateur non DBA, toutes les opérations sur le listener, devront se
faire en précisant le mot de passe au préalable. Nous reviendrons sur ceci dans la
partie réseaux.
cc )) Authentification des utilisateurs de la base de do nnées
Une condition de base de sécurité est de connaître les utilisateurs, c'est à dire
les identifier avant de pouvoir déterminer leurs privilèges et leurs droits d'accès; ainsi
on peut surveiller leurs activités dans la base de données.
Il est possible de définir les utilisateurs de manière à ce que la base de données
effectue à la fois l'identification et l'authentification.
Il existe plusieurs méthodes d'authentification:
• L'authentification par mot de passe,
• Le "Strong authentication",
• Le "Single sign-on".
( i ) Authentification par mots de passe
C'est une des bases de l'authentification. Les utilisateurs qui essaient de se
connecter à la base de données sont identifiés au moyen d'informations stockées dans
la base de données. Les mots de passe sont assignés aux utilisateurs lors de leur
création. Ils sont ensuite stockés dans le dictionnaire de données en un format crypté,
et les utilisateurs peuvent les changer n'importe quand.
La sécurité des bases de données dépend en grande partie aux mots de passe,
on doit alors s'assurer que les mots de passe sont gardés secrets. Plusieurs étapes
sont nécessaires pour renforcer la sécurité des bases de données qui dépendent des
mots de passes:
• Les DBAs et les responsables de la sécurité doivent contrôler le "Password
Policy" à travers les profils des utilisateurs.
• Les DBAs doivent imposer des normes sur la complexité des mots de passe,
par exemple la longueur minimale.
• Les mots de passe devraient être des mots qui ne figurent pas dans le
dictionnaire. Eviter les noms de personnes ou les dates de naissance.
55
• Les mots de passe doivent être expirés après un certain temps défini, ainsi les
utilisateurs doivent les modifier périodiquement.
• On peut interdire la réutilisation d'un mot de passe après quelques reprises.
• Quand un utilisateur particulier dépasse un certain nombre limite d'échecs de
login, le serveur doit automatiquement bloquer son compte.
Oracle intègre en natif la possibilité de vérifier les complexités du mot de passe
citées ci-dessus [Voir V.5 – a)]. Le principe est d'associer une fonction PL/SQL
normale à un profil utilisateur. Les vérifications sont faites par cette fonction.
C'est en associant la fonction précédemment créée à un profil qu'elle sera
appelée automatiquement lors des procédures de changement de mot de passe. On
assignera ensuite ce profil à un utilisateur.
( ii ) Le "Strong Authentication"
Oracle dispose de plusieurs méthodes pour le strong authentication. Elles sont
toutes basées sur le principe d'authentification des utilisateurs au moyen de deux
facteurs: la combinaison de quelque chose que l'utilisateur connaît (un mot de passe
par exemple), et d'une autre chose qu'il possède (une carte par exemple). Ces
méthodes sont:
• Le Kerberos et le Cybersafe
• Le RADIUS
• Les Token Cards
• Les Smart Cards
• Le DCE (Distributed Computing Environment)
• Les Biométrics
• Le PKI et le Certificate-Based Authentication
Toutes ces méthodes sont disponibles dans le produit Oracle Advanced
Security.[5]
Le Kerberos et le Cybersafe
Le Kerberos est un protocole d'authentification "third-party" très efficace, et libre,
développé par Massachusetts Institute of Technology. Il utilise un système de tickets
au lieu de mots de passe en texte clair. Ce principe renforce la sécurité du système et
empêche que des personnes non autorisées interceptent les mots de passe des
utilisateurs. L'ensemble repose sur des clés secrètes (chiffrement symétrique).
56
La version commerciale de Kerberos est appelée Cybersafe.
Le RADIUS
RADIUS (Remote Authentication Dial-In User Service) est un protocole client-
serveur permettant de centraliser des données d'authentification.
Le poste utilisateur transmet une requête d'accès à un client RADIUS pour
accéder au réseau. Ce client se charge de demander les informations identifiant
l'utilisateur : le nom d'utilisateur (login) et le mot de passe par exemple.
Le client RADIUS génère selon le protocole une requête Access-Request
contenant les informations d'authentification. Le serveur RADIUS peut traiter lui-même
cette requête ou la transmettre à un autre serveur RADIUS par un mécanisme appelé
Proxy Radius. Le serveur Radius chargé de l'identification finale (appelé Home Radius)
peut traiter la demande s'il dispose de suffisamment d'éléments dans l'Access-Request
ou demander des informations supplémentaires par un renvoi de paquet Access
Challenge, auquel le client répondra par un autre Access-Request, et ainsi de suite.
Les échanges sont retransmis par la chaîne de serveurs Radius proxy intermédiaires
dans un sens et dans l'autre.
Quand le serveur Radius dispose de suffisamment d'éléments (jusqu'à une
douzaine d'échanges pour les protocoles complexes) il valide ou refuse l'identification
en renvoyant un paquet de type : Access-Accept ou Access-Reject.
Les Token Cards
Le principe des Token Cards est le suivant: pour accéder au réseau l'utilisateur
doit à la fois connaître le PIN (Personnal Identificaton Number) et posséder la carte
physique SecurID, disponibles dans Oracle Advanced Security.
Les Smart Cards
Le Smart Card se rapproche des cartes de crédits habituels. Il est muni de
mémoire et d'un processeur. Une carte à puce qui se trouve sur le poste client sert à le
lire.
On peut bloquer le Smart Card de manière à ce que seul un utilisateur qui
possède la carte et le PIN peut le débloquer.
Le DCE (Distributed Computing environment)
Développé et maintenu par la OSF Open (Systems Foundation), le DCE
(Distributed Computing Environment) est un environnement intégré distribué qui
incorpore les technologies de l'industrie. Il se situe entre le système d'exploitation et les
57
services réseau, et est basé sur un système client-serveur. En utilisant les services et
outils du DCE, les utilisateurs peuvent créer et gérer des applications distribuées dans
un environnement distribué.
Les Biometrics
Ce sont des technologies qui procèdent à l'authentification des utilisateurs
physiquement, par exemple au moyen d'empreintes digitales ou vocales.
Le PKI et le Certificate-Based Authentication
Une PKI (Public Key Infrastructure), aussi communément appelée IGC
(Infrastructure de Gestion de Clefs), ou ICP (Infrastructure à Clefs Publiques), est un
ensemble de composants physiques (des ordinateurs, des équipements
cryptographiques ou HSM, des cartes à puces), de procédures humaines (vérifications,
validation) et de logiciels (système et application) en vue de gérer le cycle de vie des
certificats numériques ou certificats électroniques.
Une infrastructure à clés publiques délivre un ensemble de services pour le
compte de ses utilisateurs.
En résumé, ces services sont les suivants :
• Enregistrement des utilisateurs (ou équipement informatique),
• Génération de certificats,
• Renouvellement de certificats,
• Révocation de certificats,
• Publication des certificats,
• Publication des listes de révocation (comprenant la liste des certificats
révoqués),
• Identification et authentification des utilisateurs (administrateurs ou utilisateurs
qui accèdent à l'IGC),
• Archivage, séquestre et recouvrement des certificats (option).
58
( iii )Le Single Sign-On
Les utilisateurs sont généralement contraints d'utiliser des mots de passe
différents pour s'identifier sur chaque serveur où ils doivent accéder. Mais parfois ils
ont du mal à les retenir tous, alors ils sont tentés d'employer des mots de passe faciles
à mémoriser, donc faciles à deviner aussi pour les pirates ou les utilisateurs mal
intentionnés; ou tout simplement ils les stockent dans des emplacements pas fiables.
Le Single Sign-On est une solution à ce problème.
L'objet du Single Sign-On, noté SSO, est de centraliser l'authentification afin de
permettre à l'utilisateur d'accéder à toutes les ressources (machines, systèmes,
réseaux) auxquels il est autorisé d'accéder, en s'étant identifié une seule fois sur le
réseau. L'objectif du SSO est ainsi de propager l'information d'authentification aux
différents services du réseau, voire aux autres réseaux et d'éviter ainsi à l'utilisateur de
multiples identifications par mot de passe.
Toute la difficulté de l'exercice réside dans le niveau de confiance entre les
entités d'une part et la mise en place d'une procédure de propagation commune à
toutes les entités à fédérer.
dd )) Audit des opérations sur la base [Voir Annexe IX]
L'audit, ou plus précisément la surveillance des activités sur la base de données
est un point très important dans la sécurisation des données. Il permet:
• de contrôler les accès à la base, à des fins de sécurité,
• de vérifier que tel ou tel objet est accédé en lecture ou en écriture (sécurité ou
analyse de performance),
• de vérifier les tentatives d'accès infructueuses à des objets,
• de contrôler l'audit éventuellement pirate.
Les résultats sont stockés dans une table du dictionnaire : SYS.AUD$ et
préférablement accédés à travers des vues prédéfinies. Ceci permet de faire des
requêtes SQL sur le résultat et éventuellement de produire des rapports sophistiqués.
Les types de résultat fournis sont :
- no session,
- nom du User,
- no/nom du Terminal,
- nom de l'objet accédé,
59
- type d'ordre SQL ou de commande,
- Date d'occurrence.
IV.3. Les mesures à prendre
Pour mettre à terme à ce chapitre, voici quelques recommandations pour
résumer les actions à entreprendre afin d'assurer la sécurisation des données.
1. Appliquer régulièrement tous les correctifs de sécurité publiés par Oracle sur
son site officiel: http://www.oracle.com
2. Installer et activer uniquement les fonctionnalités indispensables.
3. Ne jamais exposer un serveur BD sur Internet.
S'il y a besoin d'accès directs au SGBD, il faut utiliser des tunnels, un Firewall
avec authentification forte ouvrant le flux, ...
4. Ne jamais partager un serveur de base de données.
5. A la création de toute nouvelle base Oracle, désactiver tous les comptes
utilisateurs non indispensables, modifier les mots de passe par défaut de tous les
comptes actifs, ne pas installer les exemples, les applications annexes, ...
6. Appliquer des contraintes sur les mots de passe : durée de vie, verrouillage,
complexité, ... ainsi que des profils sécurisés.
7. Restreindre l'accès aux données sensibles en ayant recours aux principes de
privilèges, rôles, et vues.
8. Sécuriser le TNS Listener, en lui appliquant un mot de passe d’administration
et en ajoutant le paramètre ADMIN RESTRICTIONS.
9. Surveiller régulièrement la sécurité et l’intégrité des bases sensibles, ainsi que
tous les journaux d’évènements pouvant mettre en évidence des actions malveillantes,
par le moyen des fonctions d'audit d'Oracle.
10. Envisager le chiffrement des connexions réseau, qu’il s’agisse d’OracleNet
avec SSL ou SSH, ou de HTTPS pour les applications web.
11. Pour une application web, vérifier que toutes les données saisies par les
utilisateurs sont bien filtrées pour éviter les risques d’injection SQL.
12. Sur les postes clients Windows, vérifier les ACLs sur les répertoires du
PATH.
13. Protéger correctement les sauvegardes des bases de données.
60
En effet les techniques utilisées afin d'assurer la sécurité ne sont efficaces que si
l'administrateur de bases de données assume ses responsabilités et respecte ces
principes de sécurité.
Néanmoins, il ne faut pas perdre de vue l'élément primordial de toute
sécurisation des systèmes informatiques : "Le premier problème auquel il faut faire
face, c'est un problème humain, pas technique". Il s'avère en effet que les menaces les
plus fréquentes viennent de l'intérieur (des personnes qui sont liées à votre structure).
D'après tout ce qu'on vient de voir, on constate la complexité de la sécurisation
des données. Ainsi il est convenable de déployer spécialement une équipe qui
assurera la sécurité. [Voir Annexe X]
Oracle dispose de plusieurs produits et astuces pour assurer la sécurisation des
données. Ce sont toutes ces fonctionnalités qui font d'Oracle un SGBDR assez bien
protégé, ce dont témoigne sa certification C2 [Voir Annexe XI]
Pour consulter la liste des produits mis en œuvre par Oracle pour assurer les
mesures de sécurité qu'on vient de citer dans ce chapitre, se référer à l'Annexe XII.
61
Chapitre V. REALISATION PRATIQUE
Dans cette partie, on va réaliser une pratique de ce qu’on a traité dans les parties
précédentes.
Tous les exemples qui suivent ont été réalisés sous Windows XP Professional en
utilisant les logiciels :
• Oracle 9i Server • Oracle 9i Client • Oracle Forms 6i
V.1. Présentation de l’environnement de travail
Considérons un réseau local composé de trois machines :
Figure 5.1: Présentation du réseau utilisé pour la pratique
- La machine A sera le serveur de la base de données et d’applications.
- La machine B est une machine cliente. On y installe Oracle 9i Client.
- La machine C n’héberge aucun logiciel Oracle. Elle est utilisée pour
accéder à distance à la base de données.
62
V.2. Manipulations sur le serveur
aa )) Création d’une base de données
Sur la machine A, on va créer une base de données nommée polytech.
Pour cela, on utilisera l’assistant de configuration de base de données d’Oracle.
Pour lancer l’outil : Menu démarrer / Programmes / Oracle_Home / Configuration
and Migration Tools / Database Configuration Assistant
Informations concernant la base de données :
- Modèle : Data_warehouse (base de données prévue pour des données de taille
importante)
- Nom global : polytech.admin
Nom d’identification de la base sous la forme nom.domaine.
- SID : polytech
Identificateur système (référence de l’instance associée à la base de données)
- Mode de fonctionnement par défaut de la base : Mode serveur dédié . (Pour
chacune des connexions client, la BD affectera une ressource unique propre à ce
client).
- Pourcentage de la mémoire physique alloué à la base 124 Mo au minimum.
On vient donc de créer la base de données. Pour des raisons de sécurité, Oracle
suggère de changer les mots de passe par défaut des comptes administrateurs SYS et
SYSTEM, et de verrouiller les autres comptes non utilisés.
Pour notre cas, le mot de passe SYS sera polytechnique et celui du SYSTEM
electronique .
bb )) Configuration de la connectivité réseau
Pour l’accès des machines clientes à la base de données hébergée dans le
serveur, et pour que ce dernier puisse écouter (identifier) les requêtes des clients, on
doit configurer le protocole Oracle Net. La configuration est réalisée par l’assistant
Configuration Oracle Net.
Lancement : Menu démarrer / Programmes / Oracle / Configuration and Migration
Tools / Net Configuration Assistant.
63
( i ) Configuration d’un module d’écoute
- Nom du module d’écoute : LISTENER
- Protocole d’écoute : TCP
- Numéro de port TCP/IP : 1521 (Standard)
( ii ) Configuration des méthodes de résolution de noms
Méthodes de résolution de nom :
- Nom d’hôte
- Nom local
- Oracle Names
( iii ) Configuration d’un nom de service de réseau local
- Version de base de données : Base de donnée Oracle 8i ou
supérieure
- Nom de service : pratique
- Protocole associé à la base de données : TCP
- Nom d’hôte : sp (Nom ou adresse IP de la machine hébergeant la
base de données)
- Numéro de port TCP/IP : 1521 (Standard)
- Nom de service réseau : pratique
Oracle propose ensuite un test de connexion à la base de données.
cc )) Sécurisation du protocole Oracle Net
Soit 192.168.1.20 l'adresse IP de la machine B, et 192.168.1.30 celle de la
machine C.
Comme pratique on va bloquer l'accès de la machine C et autoriser l'accès de la
machine B.
Le filtrage se fait au moyen du fichier sqlnet.ora en y ajoutant les lignes :
Tcp.validnode_checking=YES
Tcp.excluded_nodes= 192.168.1.30
64
dd )) Sécurisation du module d’écoute TNSListener
Ceci consiste à attribuer un mot de passe au module d'écoute. La configuration
s'effectue sur commande ligne Windows:
Figure 5. 2 : Sécurisation du module d’écoute TNSListener ( 1)
Dorénavant, toute opération sur le module d'écoute exigera la saisie du mot de
passe.
Comme démonstration on relance l'invite de commande LSNRCTL:
Figure5. 3 : Sécurisation du module d’écoute TNSListener (2)
65
V.3. Création de tables et insertion des valeurs
Il existe deux méthodes pour créer une table :
- La console graphique d’Oracle Entreprise Manager
- La ligne de commande SQL*PLUS
On adoptera la deuxième méthode pour pouvoir détailler les spécificités des
commandes utilisées.
On va créer deux tables nommées DEPT et SCOLA, structurées comme montre la
figure ci-dessous :
DEPT ID NOM_DEPT NB_ETUD COMMENT 01 Electronique 17 Notre département 02 Télécommunications 21 No comment 03 BTP 31 No comment
SCOLA
ID NOM_ETUD PRENOMS FILIERES 01 Rakotoson Haritongatsiry Electronique 02 Razakarimanana Lova Mines 03 Rasoanirina Aina Météo
Figure 5.4 : Types de tables utilisées
Tout d'abord, on se connecte à la base de données en tant qu'utilisateur SYS:
CONNECT system/polytechnique @pratique AS SYSDBA
La commande utilisée pour créer une table est CREATE TABLE :
CREATE TABLE "system"."dept"
("id" NUMBER (10) NOT NULL,
"nom_dept" VARCHAR2 (20) NOT NULL,
"nb_etud" NUMBER (10),
"comment" VARCHAR2 (40), UNIQUE ("id"), UNIQUE ("nom_dept"))
tablespace "system" ;
CREATE TABLE "system"."scola"
("id" NUMBER (10) NOT NULL,
"nom_etud" VARCHAR2 (20),
"prenoms" VARCHAR2 (30),
66
"filiere" VARCHAR2 (20),
tablespace "system" ; [14]
Commande pour insérer les valeurs dans les tables :
INSERT INTO system.dept VALUES
( 01 , 'Electronique' , 17 , 'Notre Département');
INSERT INTO system.dept VALUES ( 02 , 'Télécommunications' , 21 , null);
INSERT INTO system.dept VALUES ( 03 , 'BTP' , 31 , null);
INSERT INTO system.scola VALUES
( 01 , 'Rakotoson' , 'Haritongatsiry' , 'Electronique');
INSERT INTO system.scola VALUES ( 02 , 'Razakarimanana' , 'Lova' , 'Mines');
INSERT INTO system.scola VALUES ( 03 , 'Rasoanirina' , 'Aina' , 'Météo');
Ainsi on peut consulter les éléments de la table DEPT:
Figure 5.5:Présentation des données dans la table DEPT
V.4. Créations et gestions des utilisateurs
Il est possible de créer plusieurs utilisateurs selon les besoins, mais pour notre
cas on prendra juste deux utilisateurs : ilalaina et andry.
Afin de comprendre les principes sur les droits d’accès des utilisateurs à la base,
les privilèges et rôles qu’on attribuera à ces deux utilisateurs ne seront pas les mêmes.
67
aa )) CAS de figure 1 (Les Privilèges système)
On fera en sorte que seul l’utilisateur Ilalaina puisse se connecter à la base de
données
( i ) Création de l’utilisateur : Ilalaina
CREATE USER "ilalaina" PROFILE "DEFAULT"
IDENTIFIED BY "ilalaina" DEFAULT TABLESPACE "USERS"
ACCOUNT UNLOCK
( ii ) Création de l’utilisateur : andry
CREATE USER "andry" PROFILE "DEFAULT"
IDENTIFIED BY "andry" DEFAULT TABLESPACE "USERS"
ACCOUNT UNLOCK
Pour que l’utilisateur Ilalaina puisse se connecter à la BD, il faut lui assigner le
privilège système CREATE SESSION : GRANT CREATE SESSION TO ilalaina
L’utilisateur andry lui ne peut pas se connecter car il n’a pas reçu le privilège :
CREATE SESSION:
Figure 5.6 : Vérification de la connexion de l'utilisateur andry (1)
Figure 5.7 : Vérification de la connexion de l'utilisateur andry (2)
68
bb )) Cas de figure 2 (Les Privilèges objets)
Considérons maintenant que les deux utilisateurs peuvent se connecter à la
base.
On va attribuer à ilalaina le droit de consulter la table DEPT et à andry la table
SCOLA :
GRANT SELECT on system.dept to ilalaina
GRANT SELECT on system.scola to andry
Tableau 03: Accès aux tables
Accès à la table DEPT Accès à la table SCOLA andry NON OUI ilalaina OUI NON
On note que pour l'instant les utilisateurs ne peuvent que consulter les tables;
pour pouvoir les modifier, il faut leur assigner les privilèges : INSERT, UPDATE, ALTER,
DELETE:
GRANT [privileges objets] on system.dept to ilalaina
GRANT [privileges] on system.scola to andry
cc )) Cas de figure 3 (Limitation de l’accès aux colonne s)
Pour restreindre l’accès aux colonnes, on a appliqué le concept des vues.
Dans notre cas, on va limiter l’accès de l’utilisateur ilalaina à seulement les deux
premières colonnes de la table DEPT.
On crée donc une vue nommée VUESSAI constituant une restriction de la table
DEPT à seulement les colonnes ID et NOM_DEPT, dont la syntaxe est la suivante :
CREATE VIEW "SYSTEM"."VUESSAI" AS
SELECT SYSTEM.DEPT.ID, SYSTEM.DEPT.NOM_DEPT
FROM SYSTEM.DEPT WITH READ ONLY
On retire le privilège objet SELECT sur la table DEPT à l’utilisateur ilalaina:
REVOKE SELECT on system.dept from ilalaina
Ensuite on lui assigne le privilège SELECT sur la vue VUESSAI :
GRANT SELECT ON "SYSTEM"."VUESSAI" TO "ilalaina"
69
Désormais, s’il effectue une requête SELECT sur la table DEPT : select *from
system.dept ; le moteur Oracle lui renvoie le message d’erreur « table ou vue
inexistante ».
Il ne peut consulter que les colonnes ID et NOM_DEPT de la table au moyen de la
commande :
SELECT * FROM SYSTEM.VUESSAI
V.5. Sécurisation des données :
aa )) Complexité du mot de passe:
( i ) Fonction de vérification de mot de passe
Oracle intègre en natif la possibilité de vérifier les complexités du mot de passe.
Le script <ORACLE_HOME>/rdbms/admin/utlpwdmg.sql en fournit un exemple.
Le principe est d'associer une fonction PL/SQL normale à un profil utilisateur. Les
vérifications sont faites par cette fonction. Etant donné que c'est une fonction PL/SQL, il
est tout à fait possible de l'adapter à des besoins précis et particuliers.
Cette fonction admet 3 paramètres en entrée:
- le login
- le nouveau mot de passe
- l'ancien mot de passe
70
Exemple
CREATE OR REPLACE FUNCTION verify_function
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS n boolean;
m integer;
differ integer;
isdigit boolean;
ischar boolean;
ispunct boolean;
digitarray varchar2(20);
punctarray varchar2(25);
chararray varchar2(52);
BEGIN
digitarray:= '0123456789';
chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
punctarray:='!"#$%&()``*+,-/:;<=>?_';
-- Vérifie si le mot de passe n'est pas le même que le login
IF NLS_LOWER(password) = NLS_LOWER(username) THEN
raise_application_error(-20001, 'MDP trop similaire au login');
END IF;
-- Vérifie la longueur minimale du mot de passe (4 pour notre cas)
IF length(password) < 4 THEN
raise_application_error(-20002, 'MDP de longueur <4');
END IF;
-- crée un dictionnaire des mots de passes trop simples à ne pas utiliser
IF NLS_LOWER(password) IN
('bienvenue', 'bonjour', 'azerty', 'user', 'password', 'oracle', 'computer', 'abcd') THEN
raise_application_error(-20002, 'MDP trop simple(tsotra loatra)');
END IF;
RETURN(TRUE);
END;
71
Cette fonction doit impérativement appartenir au compte SYS. Elle retourne un
boolean (TRUE pour nouveau mot de passe accepté, sinon une exception doit être
déclenchée)
( ii ) Création d'un profil sécurisé:
Comme on vient de voir dans la partie Gestion des utilisateurs un profil est un
élément actif de la sécurité des bases Oracle. C'est en associant la fonction
précédemment créée à un profil qu'elle sera appelée automatiquement lors des
procédures de changement de mot de passe.
Exemple
CREATE PROFILE monprofile LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 3/1440
PASSWORD_VERIFY_FUNCTION verify_function;
Le profil qu'on vient de créer vérifie la complexité du mot de passe à l'aide de la
fonction vue ci-dessus; de plus, ce profil verrouillera le compte pour une durée de 3
heures à l'issue de 3 tentatives de connections infructueuses.
On assignera ensuite ce profil aux utilisateurs:
ALTER USER ilalaina PROFILE MONPROFILE;
ALTER USER andry PROFILE MONPROFILE;
Voici une illustration de ce qui se passe lorsque les règles de vérification de mot
de passe sont enfreintes:
Figure 5.8 : Vérification du mot de passe
72
V.6. Mise en réseau
La figure 5.1 illustre l’environnement réseau de travail. On expliquera la manière
dont les utilisateurs se connectent, que ce soit de Machine, B ou de la machine C vers
le serveur.
aa )) Connexion de la machine B vers le Serveur
Dans la machine B est installée le logiciel Oracle 9i client. Il suffit donc de
concorder la configuration de son Oracle Net avec celle du serveur :
Figure 5.9 : Communication Client-serveur(1)
Adresse ou nom d’hôte du serveur : sp
Module d’écoute : LISTENER
Port de communication : 1521
SID de la base : polytech
Nom du service réseau : pratique
Ainsi la commande à effectuer par l’utilisateur SYS pour se connecter à la base
est :
CONNECT SYS/<mot_de_passe_de_sys> @pratique AS SYSDBA
L’administration de la base peut alors s’effectuer à partir de la machine B,
comme si l’utilisateur travaillait sur le serveur lui-même.
bb )) Connexion de la machine C vers le serveur
La machine C n’est équipée d’aucun produit Oracle. Pour qu’il puisse se
connecter on devra développer des interfaces clients qu’on hébergera dans le serveur
Web de la machine A. La Machine cliente aura juste à taper sur son navigateur
l’adresse de l’emplacement de l’interface dans le serveur Web. On peut concevoir ces
73
interfaces par PHP, JAVA, Oracle Forms Server, Oracle container J2EE, … en
configurant le pilote ODBC d’Oracle de façon à établir une communication à travers
l’outil de programmation utilisé, et en incluant dans les programmes les informations
concernant la base de données et l’authentification de l'utilisateur
Figure 5.10 : Communication Client-serveur(2)
Serveur
Web et d'
applica- tions
74
CONCLUSION
Dans la mesure où une activité fait appel à un système de données et
d'informations, il s'avère indispensable que celles-ci se plient à certaines exigences.
Ceci de façon à ce que données et informations soient sauvegardées, consultables et
modifiables à tout moment, et disponibles à toute personne qui possède le privilège de
les utiliser. Par ailleurs, il y a la condition sine qua non de sécurisation des données
sensibles. Ce procédé, habituellement, a recours au concept de base de données,
moyennant des Systèmes de Gestion de Base de Données.
Le présent mémoire étudie et apporte éclaircissement aux questions concernant
les Systèmes de Gestion de Base Données Oracle: comment sont-ils structurés; qu'en
est-il de leur fonctionnement, de la mise en réseau; ou comment gérer les
utilisateurs…et ce sans pour autant omettre la sécurisation des données que ce soit à
l'intérieur du serveur ou pendant le traitement en réseau.
Aux termes de cette analyse, on peut déduire que de tous les SGBD existants,
Oracle brille par sa performance et la multitude de fonctionnalités qui la caractérisent.
Si l'on ne cite que la structure de stockage de données (structure logique et physique);
la gestion des utilisateurs (authentification, privilèges et rôles); la gestion des
ressources (accès concurrents, sauvegardes et exportation); la mise en réseau
(configuration et sécurisation d'Oracle Net); sinon la sécurisation (au moyen de
nombreux produits Oracle). En somme, une raison valable pour inciter au choix
d'Oracle par toute personne requérant une certaine qualité en matière de base de
données.
Vu le fait que l'étude concernant Oracle est d'une étendue très vaste, l'analyse
peut encore être élargie de façon plus détaillée sur chacune des sections abordées
dans ce mémoire. Pour conclure, un approfondissement n'est surtout pas à exclure
quant à étoffer de manière plus substantielle les connaissances acquises actuellement
sur ce Système de Gestion de base de données.
75
ANNEXES
Annexe I: Validation et annulation des transactions
I.1. Fonctionnement des commandes COMMIT et ROLLBAC K
Après une panne lors de la transaction (logiciel ou matériel), les deux
commandes COMMIT et ROLLBACK entre en jeu pour récupérer et enregistrer les
données dans ses états initiaux.
- COMMIT : – Termine une transaction par la validation des actions effectuées
– Annulation des verrous éventuels et publication définitive des
modifications effectuées aux autres utilisateurs
- ROLLBACK termine une transaction après une panne en annulant toutes les actions
effectuées.
I.2. Rôles des différents segments constituants une base de données Oracle Tableau A.1: Roles des différents segments d'une base de données Oracle Segments Rôles Segments Rollback
- Un rollback segment permet d'enregistrer l'ancienne valeur d'une donnée lorsqu'une panne survienne lors de la transaction
Data segment
Ce type de segment est essentiel pour le stockage et la protection des informations dans la base et rentre dans la constitution de la table.
Index segment
Les informations relatives aux index créés dans une table sont stockées dans ce segment pour pouvoir optimiser le temps d’accès aux données.
Temporary segment
cet autre segment est utilisé pour stocker les résultats temporaires d'une requête PL/SQL ne pouvant directement d'exécuter en mémoire.
76
Annexe II: Privilèges et rôles des utilisateurs
Trois rôles existent en standard :
− CONNECT
− RESOURCE
− DBA
La commande : select * from DBA_SYS_PRIVS where grantee='CONNECT' ;
permet d’afficher les privilèges système assignés au rôle CONNECT. Ce rôle permet
l'ouverture (CREATE SESSION) et la modification (ALTER SESSION) d'une session,
la création de tables, vues, clusters, séquences, synonymes et liens de bases de
données.
La commande : select * from DBA_SYS_PRIVS where grantee='RESOURCE';
permet d’afficher les privilèges système assignés au rôle RESOURCE. Ce rôle permet
de créer des types, tables clusters, opérateurs, séquences, index et procédures. Il
accorde un privilège UNLIMITED QUOTA à l'utilisateur et n'est donc à assigner qu'en
connaissance de cause.
La commande: select * from DBA_SYS_PRIVS where grantee='DBA' order by
PRIVILEGE; permet d’afficher les privilèges système assignés au rôle DBA
La liste des privilèges assignés au rôle DBA est beaucoup plus longue du fait
que ce rôle est octroyé aux utilisateurs ayant des droits d'administration de la base.
La liste des rôles définis est visible depuis la vue DBA_ROLES par la
commande :
select * from DBA_ROLES ;
La liste des privilèges système assignés à un rôle s'obtient en interrogeant les
vues DBA_SYS_PRIVS et USER_SYS_PRIVS :
desc DBA_SYS_PRIVS ;
La liste des rôles assignés à un utilisateur est obtenue via les vues
DBA_ROLE_PRIVS et USER_ROLE_PRIVS :
select * from DBA_ROLE_PRIVS where grantee = 'FD' ;
La liste des privilèges objet assignés à un utilisateur est obtenue en interrogeant
les vues
DBA_TAB_PRIVS, ALL_TAB_PRIVS et USER_TAB_PRIVS
77
select * from DBA_TAB_PRIVS where grantee = 'FD' ;
La liste des privilèges objet sur les colonnes de tables assignés à un utilisateur
est obtenue en interrogeant les vues DBA_COL_PRIVS, ALL_COL_PRIVS et
USER_COL_PRIVS
La liste des rôles assignés à l'utilisateur au cours de sa session est visible via la
vue SESSION_ROLES
select * from SESSION_ROLES ;
La liste des privilèges assignés à l'utilisateur au cours de sa session est visible
via la vue SESSION_PRIVS
select * from SESSION_PRIVS ;
Remarque:
• Les privilèges assignés à un utilisateur via un rôle ne permettent pas la création
de vues, de procédures, de fonctions de packages ni de clés étrangères par
l'intermédiaire des codes PL/SQL dynamiques (DBMS_SQL, execute immediate)
Pour créer ces objets via PL/SQL, l'utilisateur doit avoir reçu directement les
privilèges requis via l'instruction GRANT.
• Les vues SESSION_PRIVS et SESSION_ROLES sont utiles pour vérifier les
droits acquis au cours de la session.
Les rôles par défaut à la connexion peuvent être enrichis avec l'instruction SET
ROLE (ou son équivalent PL/SQL : DBMS_SESSION.SET_ROLE).
• Un mot de passe peut être ajouté à un rôle et on peut l'activer avec l'instruction
ALTER ROLE
Figure A.1 : Syntaxe de l'ordre ALTER ROLE
78
IDENTIFIED permet de définir le système d'identification
NOT IDENTIFIED supprime le système d'identification
Cela permet de se prémunir de l'attribution du rôle par un utilisateur non autorisé
qui tenterait de se l'attribuer via l'instruction SET ROLE .
Annexe III Connexion des utilisateurs à la base
Pour se connecter à une base de données on doit en général fournir le nom
d'utilisateur, le mot de passe et le nom de la base.
Une base locale est identifiée sur un système d'exploitation particulier, par une
variable d’environnement généralement nommée ORACLE_SID. Il peut exister
plusieurs bases locales sur une même machine.
Une base distante est identifiée par un alias (synonyme) SQL*Net. Suivant les
cas ce nom peut être défini dans des fichiers de config SQL*Net locaux
(TNSNAMES.ORA et LISTENER.ORA) ou par un serveur de noms centralisé de type
ORACLE NAMES.
La syntaxe de la commande CONNECT est la suivante:
CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
où <logon> = <nom-utilisateur>[/<mot-de-passe>][@<chaîne_connexion>] | /
Considérons par exemple une base de données polytech ayant comme nom de
service réseau pratique.
Pour se connecter à la base en tant qu'utilisateur SYS (mot de passe:susp) il
devra entrer les commandes suivantes:
connect sys/susp@pratique as sysdba
79
Annexe IV : Listes des différents ports logiques po uvant être utilisés par
le module d’écoute TNSListener
Tableau A.2.: Les différents ports logiques pour le TNSListener Numéro de port Description 1521 Port par défaut, il peut être remplacé par les ports standard
2483 et 2484 lors de l’utilisation du SSL 1522 - 1540 C’est le port ordinaire utilisé par TNSListener 1575 Port par défaut pour Oracle Names Server 1630 Port par défaut pour Oracle Connection Manager (connexion
client) 1830 Port par défaut pour Oracle Connection Manager (connexion
administrateur) 2481 Port par défaut pour Oracle JServer/JVM Listener
2482 Port par défaut pour Oracle JServer/JVM Listener utilisant
SSL 2483 Nouveau port officiel enregistré pour le TNSListener 2484 Nouveau port officiel enregistré pour le TNSListener utilisant
SSL
Annexe V:Exemple de configuration du TNSListener au moyen du fichier
listener.ora
Ce fichier se trouve dans : <Oracle_home>\network\admin\listener.ora
La méthode de configuration est traduite par les lignes suivantes :
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.1)(PORT = 1521))
)
Explication:
− Protocole utilisé:TCP
− Adresse de l'hôte hébergeant la base de données: 192.168.0.1
− Port d'écoute:1521
80
Annexe VI: Configuration de sqlnet.ora pour le cryp tage
Configuration:
Pour crypter les données à transmettre, il est conseillé de configurer le fichier
SQLNET.ORA comme suit:
Client : SQLNET_ENCRYPTION_CLIENT = required
SQLNET_ENCRYPTION_TYPES_CLIENT = (AES256)
SQLNET.CRYPTO_SEED = 4fhfguweotcad201p45mxskdlfdasf...
Serveur : SQLNET_ENCRYPTION_SERVER = required
SQLNET_ENCRYPTION_TYPES_SERVER = (AES256)
SQLNET.CRYPTO_SEED = cafdasdfdsfg3hner83fsdfk934fje...
Les CRYPTO_SEED sont présentés à titre d'exemple uniquement ; ils doivent
être choisis de façon aléatoire pour chaque installation. Il faut les modifier
régulièrement, et ils ne doivent pas être les mêmes pour le serveur et pour le client.
C'est recommandé d'utiliser la longueur maximale autorisée (70 caractères).
Au niveau du paramètre ENCRYPTION_TYPES_..., il faut d'abord nommer les
algorithmes souhaités (par exemple AES256, AES192, AES128, 3DES168, RC4_256)
car l'algorithme appliqué sera le premier algorithme trouvé du côté serveur.
Annexe VII Configuration du mécanisme d'intégrité d 'Oracle
Client: SQLNET.CRYPTO_CHECKSUM_CLIENT = required
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT = (SHA1)
Serveur: SQLNET.CRYPTO_CHECKSUM_SERVER = required
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA1)
81
Annexe VIII Configuration de SSL sur Oracle
Configuration:
La thématique tournant autour du protocole du SSL n'est pas simple. Certains
sujets, tels que les certificats, exigent quelques connaissances préalables. Les
conseils suivants supposent l'existence préalable d'une infrastructure à clé publique.
Les procédures à suivre pour une mise en oeuvre réussie sont les suivantes
(détails disponibles dans la documentation Oracle) :
Serveur:
1. Créer une paire de clés asymétrique pour la base de données Oracle (Oracle
Wallet)
2. Dans l'infrastructure à clé publique existante, créer un certificat pour le serveur
(requête exportée depuis le Wallet d'Oracle)
3. Importer le certificat du serveur vers le Wallet d'Oracle, ainsi que les certificats
CA et Root requis.
4. Configurer les fichiers SQLNET.ORA, LISTENER.ORA et TNSNAMES.ORA
(voir les exemples ci-dessous)
5. Démarrer le Listener SSL
Client (sans authentification SSL):
1. Importer les certificats CA et Root requis vers le Wallet d'Oracle
2. Configurer les fichiers SQLNET.ORA, LISTENER.ORA et TNSNAMES.ORA
(voir les exemples ci-dessous)
82
Exemples de configuration des fichiers SQLNET.ORA, TNSNAMES.ORA et
LISTENER.ORA:
SQLNET.ORA:
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = oracle_home / WALLETS / oracle)
)
)
SSL_CHIPER_SUITES = (SSL_RSA_WITH_RC4_128_MD5)
SSL_CLIENT_AUTHENTICATION = FALSE
SSL_VERSION=0
. . .
Le fichier SQLNET.ORA du client ressemble en tout point à celui du serveur.
L'emplacement du Wallet (DIRECTORY) peut naturellement varier selon
l'environnement.
Dans TNSNAMES.ORA:
sales.office_ag.com =
(DESCRIPTION =
(ADRESS_LIST =
(ADRESS = (PROTOCOL = TCPS)
(HOST = tcsec_sales (PORT = 2481)))
(CONNECT_DATA =
(STD = SALES))
(SECURITY =
(SSL_SERVER_CERT_DN = "cn=sales, c=ch, o=office"))
Le paramètre SSL_SERVER_CERT_DN est facultatif. Il est toutefois conseillé de
l'utiliser pour éviter ainsi les dangers d'un service simulé.
83
Annexe IX : Audit des opérations sur la base
5.1. Mise en route de l'audit
On peut consulter le statut de l'audit d'Oracle par la commande show parameter
audit
Pour mettre en route l'audit il faut positionner le paramètre de démarrage
AUDIT_TRAIL dans le fichier INIT.ORA de la base. On peut assigner à ce paramètre
trois valeurs possibles:
- NONE : invalide l'audit (valeur par défaut),
- DB : valide l'audit et stocke les résultats dans la table d'audit,
- OS : valide l'audit et stocke les résultats dans un fichier externe (un autre
paramètre : AUDIT_FILE_DEST précise le répertoire de destination...).
Il faut cependant noter que cette opération nécessite l'arrêt / démarrage de la
base et ne démarre pas l'audit.
5.2 Déclenchement effectif de l'audit (ciblé)
Il existe quatre niveaux d'audit :
- connexion / déconnexion : surveille les connexions
- ordre SQL : audit par type d'ordre SQL utilisé
- privilège : audit d'un privilège SYSTEM (SELECT ANY, DROP ANY, CREATE
ANY, * ANY...)
- objet : un ordre SQL particulier sur un objet particulier (audit SELECT sur
SCOTT.EMP)
A chaque niveau d'audit, on peut de plus surveiller aussi bien les succès que les
échecs, et avoir une entrée d'audit par commande utilisateur ou globalement pour la
session.
Le déclenchement de l'audit effectif se fait par la commande AUDIT avec une, ou
des options, qui précisent :
- le type d'action à auditer,
- si l'on veut les tentatives réussies ou échouées,
- pour une session globale ou pour chaque ordre SQL
84
Exemples
AUDIT CONNECT WHENEVER NOT SUCCESSFULL
Surveille toutes les tentatives de connexions infructueuses
AUDIT CREATE ANY PROCEDURE
BY ACCESS
WHENEVER SUCCESSFULL
Audit système : surveille les création de procédures réussies sur toute la
base, une entrée par commande passée.
AUDIT SELECT TABLE, DELETE TABLE
BY SESSION
WHENEVER NOT SUCCESSFUL
Surveille les select et insert infructueux sur n'importe quelle table, une
entrée seulement par session.
AUDIT INSERT ON olivier.dept
Audit objet : surveille les insertion (réussies ou échouées) sur la table DEPT
de OLIVIER.
5.3Selection des résultats dans les vues d'audit
Pour consulter les résultats des audits, il suffit de faire une requête SELECT sur
%_AUDIT_OBJECT ou %_AUDIT_SESSION ou %_AUDIT_STATEMENT
Exemple :
select OS_USERNAME, USERNAME, TERMINAL, TIMESTAMP
FROM dba_audit_session;
85
Annexe X : Une équipe chargée de la sécurité:
Le tableau suivant dresse la liste des types d'administrateurs impliqués dans le
système de sécurisation des données.
Tableau A.3.:Liste des types d'administrateurs
Individus Responsabilités
Utilisateur Utilisation du système pour des intentions légitimes,
protection des données sensibles auxquelles il a accès, et
gestion de ses mots de passe de façon sécurisée.
Administrateur de base
de données
Création et gestion des utilisateurs des bases de données,
assigner des rôles, des privilèges système et objet.
Administrateur du
système d'exploitation
Maintien de la sécurité du système d'exploitation
Administrateur réseau Assurer la sécurité des données pendant leur transfert
Administrateurs
d'application
Déployer des applications de façon à assurer la sécurité
Trusted-Application
Administrator
Création et administration des utilisateurs de "trusted
applications", et les privilèges y afférant
Enterprise Security
Manager
Maintien de la sécurité et implémentation centralisée de la
sécurité des utilisateurs au sein de l'entreprise.
Annexe XI : niveaux de certification TCSEC
L'Agence Nationale de Sécurité américaine (NSA -NationarSecurity Agency),
issue du ministère de la défense américain (DoD -Department of Defense), a fondé un
centre de sécurité informatique, Je NCSC (National ComputerSecurity Center) , qui
établit les niveaux de certification TCSEC (Trusted Computer Systems Evaluation
Criteria). Les quatre principaux niveaux d'évaluation sont: D - Minima{Protection
(sécurité minimale), C -Discretionary Protection (niveaux intérmédiaires C1, C2), B -
Mandatory Protection (niveaux intermédiaires B1, B2, B3), A -Verified Protection
(sécurité maximale).
Oracle est certifié C2.
86
Annexe XII : Produits Oracle assurant la sécurité
Tableau A.4 : Matrice des problèmes et des sécurités
Problèmes Soluti ons Mécanismes mis en
oeuvre Produits Oracle et caractéristiques
Utilisateurs non autorisés
Connaître les utilisateurs
Authentification Oracle9i Standard Edition, et Oracle9i Enterprise Edition: Passwords, Password management. Oracle Advanced Security: Tokens, smart cards, Kerberos, ...
Accès non autorisé aux données
Limiter l'accès aux données
Contrôle d'accès Oracle9i Standard Edition Oracle9i Enterprise Edition: Virtual Private Database feature.
Modification des requêtes dynamiques
Contrôle d'accès granuleux
Oracle9i Enterprise Edition: Virtual Private Database feature
Limiter l'accès sur les lignes et colonnes
Contrôle d'accès étiqueté
Oracle Label Security
Crypter les données
Cryptage des données
Oracle9i Standard Edition, et Oracle9i Enterprise Edition
Limiter les privilèges
Gestion des privilèges
Oracle9i Standard Edition: Roles, Privileges. Oracle9i Enterprise Edition: Secure Application Roles. Oracle Advanced Security: Enterprise Roles.
Espionnage des communications
Protéger le réseau
Cryptage sur le réseau
Oracle Advanced Security: Encryption. Secure Sockets Layer.
87
Corruption des données.
Protéger le réseau
Intégrité des données
Oracle Advanced Security: Checksumming.
Refus de service Contrôler l'accès aux ressources
Disponibilité Oracle9i Standard Edition et Oracle9i Enterprise Edition: UserProfiles
Difficultés pour les utilisateurs
Limiter le nombre de mots de passe
Single sign-on Oracle Advanced Security: Kerberos, DCE, Enterprise User Security Login Server: Web-Based SSO
Difficulté pour l'administrateur
Centralisation de la gestion
Enterprise user security
Oracle Advanced Security: Directory Integration Oracle Internet Directory
Manque de responsabilité
Contrôler les actions des utilisateurs
Audit Oracle9i Standard Edition: Auditing Oracle9i Enterprise Edition: Standard Auditing, Fine-Grained Auditing.
Accès trop large aux données
Modification des requêtes dynamiques
Contrôle d'accès granuleux
Oracle9i Enterprise Edition: Virtual Private Database Oracle Label Security
Compte d'utilisateurs trop nombreux
Gestion centralisée
Services d'annuaires, "LDAP-compliant" services d'annuaires
Oracle Internet Directory
Intrusions dans le système d'exploitation
Décrypter les données sensibles
Cryptage de données stockées
Oracle9i Standard Edition et Oracle9i Enterprise Edition: Data encryption
88
Annexe XIII : QUELQUES COMMANDES POUR ADMININISTRER LA BASE
XIII 1. :Affichage de toutes les tables dans la bas e de données :
SQL> SELECT OWNER, TABLE_NAME, TABLESPACE_NAME, NUM_ROWS,
BLOCKS, EMPTY_BLOCKS, LAST_ANALYZED FROM DBA_TABLES;
XIII 2. :Affichage de tous les utilisateurs avec le ur mot de passe crypté:
SQL> select USERNAME, USER_ID, DEFAULT_TABLESPACE,
TEMPORARY_TABLESPACE,
PASSWORD,ACCOUNT_STATUS, PROFILE, CREATED from
DBA_USERS
order by USERNAME;
XIII.3 Interdiction d’un utilisateur de se connecte r avec un outil spécifique:
Cette opération est réalisée par la création d’un trigger PL/SQL.
CREATE or REPLACE TRIGGEr interdire_toad AFTER LOGON ON DATABASE
DECLARE
v_sid sys.v_$session.sid%TYPE;
v_isdba sys.v_$session.username%TYPE;
v_program sys.v_$session.program%TYPE;
BEGIN
EXECUTE IMMEDIATE
'SELECT distinct sid FROM sys.v_$mystat' INTO v_sid;
EXECUTE IMMEDIATE
'SELECT PROGRAM FROM sys.v_$session WHERE sid = :b1' INTO
v_PROGRAM USING v_sid;
EXECUTE IMMEDIATE
'SELECT USERNAME FROM sys.v_$session WHERE SID = :b1' INTO
v_isdba USINGv_sid;
IF upper(v_program) like 'TOAD%' AND v_isdba = 'USERNAME'
THEN
RAISE_APPLICATION_ERROR
89
(-20001,'Connexion avec '||v_isdba||' sous TOAD interdite,contactez le DBA
',TRUE);
END IF;
END;
XIII.4 : Affichage des tablespaces et ses fichiers :
SQL> select FILE_ID, FILE_NAME, STATUS, TABLESPACE_NAME from
DBA_DATA_FILES order by FILE_ID;
XIII.5 :Affichage des espaces disques occupés par les objets Oracle:
SQL> COLUMN TABLE FORMAT A30
SQL> COLUMN Taille FORMAT A15
SQL> COLUMN TABLESPACE FORMAT A20
SQL> SELECT segment_name "TABLE", SUM(BYTES) /1024 || 'Ko' "Taille",
blocks "Blocs" , tablespace_name "TABLESPACE" FROM dba_segments
WHERE segment_type = 'TABLE' AND OWNER = 'FD'
GROUP BY segment_name, tablespace_name, blocks
ORDER BY segment_name ;
XIII.6. : Affichage des noms des fichiers de contrôle :
SELECT VALUE FROM V$PARAMETER WHERE NAME='control_files';
XIII.7. : Sauvegarde du fichier de contrôle en un fichier binaire :
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
La vue V$CONTROLFILE affiche tous les noms des fichiers de contrôle et leur
statut qui peut être NULL ou INVALID :
SELECT * FROM V$CONTROLFILE;
Plusieurs commandes SQL et SQL*PLUS peuvent être utilisées pour administrer
la base de données Oracle et ses différents constituants.
90
ANNEXE XIV : Les processus d'arrière plan dans Orac le
Les différents processus d’arrière plan servent à l’écriture dans les fichiers de la
base de données et à la gestion des différents buffers.
Tableau A 5. Description des processus d’arrière plan dans Oracle
Processus Fonctions
SMON (System
MONitor)
- Vérifie la cohérence de la base de données
- Restauration de la base lors du démarrage de l’instance en synchronisant
les données et les transactions par lecture des fichiers redo log.
- Nettoyage des segments temporaires après leur utilisation.
PMON (Process
MONitor)
- Nettoyage et gestion des ressources et les processus utilisateurs non
utilisés
DBWr (DataBase
Writer)
- Ecriture des données stockées temporairement dans le tampon de
données vers les fichiers de données correspondants.
- Vérification en permanence de la taille des blocs libre dans le tampon de
données afin de prévoir un espace pour une nouvelle écriture en tampon
LGWR (Log
Writer)
Ecriture des contenus du tampon dans les fichiers redo log quand :
Une transaction est terminée avec un COMMIT.
Les REDO LOG Buffer est au 1/3 plein (peut dépendre de vos propres
paramètres).
La taille de stockage du redo log Buffer dépasse 1 Mo.
Avant que DBWn n'écrive le contenu du Database Buffer Cache dans les
fichiers du disque dur.
CKPT ou
Chekpoint
- Mise à jour des en têtes des fichiers de données et fichiers de contrôle.
- Il se déclenche quand :
Un changement de groupe s’effectue dans les REDO LOG FILE
La base s’arrête de façon anormale (sans l’option ABORT par exemple)
Il y a une demande explicite de l’administrateur
91
ARCH En mode ARCHIVELOG, ce processus copie le fichier REDO LOG à un
autre emplacement et change automatiquement le groupe de REDO LOG
FILE.
RECO - Résolution les transactions interrompues brutalement dans un système de
bases de données distribuées
92
REFERENCES
[1] : http://www.oracle.com : Site web official d’oracle [2] : http://scheirkyerbouti.developpez.com : Oracle et PL/SQL [3] : http://sql.developpez.com : Oracle et SQL [4] : http://otn.oracle.com : Oracle Security Overview [5] : http://www.supinfo.com : Architécture Réseau Oracle 9i [6] : http://otn.oracle.com : Oracle Advanced Security
Auteur : RASOLOARISON Ilalaina Francis Olivier
Titre : ADMINISTRATION D’UNE BASE DE DONNEES ORACLE :
GESTION DES UTILISATEURS ET SECURISATION DES DONNEES
Nombre de pages : 92
Nombre de figures : 35
Nombre de tableaux : 8
RESUME
L'objectif visé par le présent mémoire étant l'étude d'un SGBD particulier, en
l'occurrence Oracle. Ceci s'est fait d'une part, par une argumentation théorique en
faveur de celui-ci; et d'autre part, par une réalisation pratique servant d'appui à la
théorie.
Oracle, en question, est doté d'un certain nombre de qualités non négligeables
que ce soit en matière de stockage des données, de gestion des ressources et des
utilisateurs, de mise en réseau ou de sécurisation. D'ailleurs, toutes ces
caractéristiques lui ont valu d'être le SGBD le plus prisé sur le marché en raison de sa
fiabilité, de sa performance et de sa sécurité. On a ici une justification du fait que les
informations les plus délicates d'une entreprise se trouvent être stockées dans des
serveurs de bases de données tels que Oracle.
Mots-clés : Informatique, Bases de Données, Oracle, Sécurisation, Gestion
des utilisateurs, SQL, PL/SQL.
Rapporteur : Monsieur RAKOTONDRASOA Justin
Coordonnées : [email protected] - 032 80 255 20