Vous êtes sur la page 1sur 17

Administration et sécurité des BD

I. Architecture
1. Base de données

Catégories d’une BD :
- BD transactionnelles (ou OLTP pour OnLine Transaction Processing)
- DB décisionnelles (ou DSS pour Decision Support Systems)
- Mixtes (qui sont à la fois OLTP et DSS)
Fichiers de contrôle :
Contient les infos de contrôle sur la BD
- Nom de la BD
- Date de création de la BD
- Le nom des fichiers constitutifs de la base
- La taille de bloc de données par défaut
- Les noms de espaces de disques logiques …

Fichier de journalisation (redo LOG)


- Ils enregistrent toutes les modifications apportées à la BD
- Ils sont dans des groupes circulaire, les infos sont périodiquement écrasées
- Ils sont très importants pour la sécurité de la BD
Fichier de données :
- Ils contiennent les données (tables et index notamment), ils sont logiquement regroupés
en tablespaces
- Un tablespace peut être constitué de plusieurs fichier.dbf
- Une BD contient au minimum deux fichiers de données appartenant à deux tablespaces
(SYSTEM et SYSAUX).
Organisation du stockage
- Les fichiers de données sont découpés en blocs d’une taille donnée (4 Ko, 8 Ko, …)
- L’espace occupé par un objet dans un tablespace est désigné par le terme générique de
segment (4 types : Segment de table, d’index, d’annulation, temporaires)
- Un segment appartient à un tablespace et il est constitué d’extensions.
- Une extension est un ensemble de blocs contigus dans un fichier de donnée

2. L’instance
Elle est constituée :
-D’une zone de mémoire partagée appelée System Global Area (SGA)
-Background process ayant chacune un rôle
-Server process chargé de traiter les requêtes des utilisateurs

La SGA (System Global Area):


C’est une zone de mémoire partagé par les différents processus de l’instance.
Elle est composée de :
-Database Buffer Cache : cache de données
-Redo Log Buffer : mémoire tampon pour l’enregistrement des modifications apportées à la
BD
-Shared Pool : zone de partage des requêtes et du DD Oracle. Elle permet de stocker les
dernières instructions SQL exécutées et les dernières définitions de données utilisées. Elle
est constituée de deux structures mémoire clés liées aux performances (Cache Library et
cache du dictionnaire de données)
-Java Pool : mémoire utilisée par la machine virtuelle Java intégrée
-Large Pool : zone mémoire optionnelle utilisée par différents processus dans des
configurations particulières. Elle réduit la charge de la zone de mémoire partagée.
-Streams Pool : zone de mémoire utilisée par la fonctionnalité Streams (fonctionnalité qui
permet de faire circuler des informations entre processus
Cache Library :
-Conserve des infos sur les dernières instruction SQL et PL/SQL utilisées
-Permet le partage des instructions fréquemment utilisées
-Géré par un algo LRU (Least Recently Used)
Cache Dictionary :
-Contient les dernières définitions utilisées dans la base
-Contient des infos sur les fichiers, tables, index, colonnes …
-Au cours de l’analyse, le processus serveur recherche les infos dans le cache du dictionnaire
pour résoudre les noms d’objet et valider l’accès
Redo Log Buffer (tampo de journalisation)
-Enregistre toutes les modifications apportées aux blocs de données de la base
-Sa principale fonction est la récupération de données
-Les entrées de journalisation contiennent des infos permettant de reconstruire des
modifications
Mémoire PGA
- Mémoire réservée à chaque processus utilisateur qui se connecte
- Elle est allouée lorsqu’un processus est créé et elle est libérée à la fin du processus
- Elle n’est utilisée que par un processus
Zone de tri
- Une zone de tri est associée à un serveur pour traiter des ordres nécessitants de tris
(group by, ordre by, join,…)

*****************Questions page 31 !!!********************


SELECT name, value FROM V$PARAMETER WHERE name IN ('db_block_size',
'db_cache_size', 'shared_pool_size', 'log_buffer', 'sga_max_size');

3. Processus utilisateur
- Programme qui demande une interaction avec le serveur Oracle.
-Ce processus doit d'abord établir une connexion
-Il n'entre pas directement en interaction avec le serveur Oracle.
4. Processus serveur
Programme qui entre directement en interaction avec le serveur Oracle, il répond aux
appels générés et renvoie les résultats (serveur dédié ou partagé).
-Processus d’arrière-plan obligatoires : DBWn, PMON, CKPT, LGWR, SMON
-Processus d’arrière-plan facultatifs : ARCn, LMDn, RECO, CJQ0, LMON, Snnn, Dnnn, Pnnn,
LCKn, QMNn

DBWn (Database Writer) écrit dans ces cas :


-Point de reprise
-Seuil des tampons ‘’Dirty’’ atteint
-Aucune mémoire tampon disponible
-Temps imparti dépassé
-Demande de ping RAC
-Tablespace hors ligne ou en lecture seule

LGWR (Log Writer) écrit dans ces cas :


-Validation
-Un tiers du cache est occupé
-La journalisation atteint 1 Mo
-Toutes les secondes
-Avant que le processus DBWn ne procède à une opération d’écriture
CKPT (Checkpoint) chargé de :
-Signaler DBWn aux points de reprise
-Màj les en-têtes de fichiers de données avec les informations sur le point de reprise
-Màj les fichiers de contrôle avec les infos sur le point de reprise
ARCn (Processus d’archivage) chargé de :
-En mode ARCHIVELOG, il archive automatiquement les fichiers de journalisation en ligne
-Il enregistre toutes les modifications apportées à la base de données
SMON (System Monitor) chargé de :
-Récupération de l’instance
-Réimplémente des modifications dans les fichiers de journalisation
-Ouvre la BD pour permettre l'accès aux utilisateurs
-Annule les transactions non validées
-Fusion de l'espace libre
-Libération des segments temporaires segments
PMON (Process Monitor) suite à l'échec de processus, PMON exécute des opérations de
nettoyage :
-Annule la transaction
-Libère des verrous et d’autres ressources
-Redémarre les répartiteurs interrompus
*********************Questions page 44**************************
II. Dictionnaire de données
1. Description
-La correspondance entre les différents niveaux est assurée par la présence d’un dictionnaire
intégré au SGBD
-Il est appelé également métabase (il est dynamique, manipuler par le noyau)
-Il est vital pour toute base de données oracle.
-Il décrit la base de données et ses objets
-Il contient des tables et des vues en lecture seule
- Il est stocké dans le tablespace SYSTEM
-Le propriétaire est l’utilisateur SYS
-Sa Màj est effectuée par le serveur Oracle
-Il est accessible avec le privilège SELECT
Le dictionnaire de données est composé de 2 parties :
- Tables de base
Contiennent la description de la base de données et elles sont créées à l’aide de la
commande CREATE DATABASE
-Vues du dictionnaire de données
Simplifient les infos contenues dans les tables de base, elles sont accessibles par des
synonymes publics et elles sont créés à l’aide du script catalog.sql
2. Contenu du dictionnaire de données
-La structure logique et physique de la BD
-Les définitions d’objets et l’espace alloué aux objets
-Les contraintes d’intégrité
-Les utilisateurs
-Les rôles
-Les privilèges
-Les fonctions d’audit
3. Utilisation du dictionnaire de données
Principaux types d’utilisation :
-Le serveur Oracle l’utilise pour rechercher dans info sur les utilisateurs, les objets de
schéma et les structures de stockage.
-Le serveur Oracle le modifie l’es qu’une instruction LDD est exécutée
-Les utilisateurs et les admins de la BD l’utilisent comme référence en lecture seule pour
obtenir des infos relatives à la BD.
4. Catégories de vues du dictionnaire de données
Trois principaux ensembles de vues statique que les ont distingués par leur portée :
-DBA : contenu de tous les schémas
-ALL : éléments auxquels l’utilisateur a accès
-USER : contenu du schéma d’utilisateur

5. Exemples de vues du dictionnaire de données


Présentation générale
-Dictionary, dict_columns
Objets de schéma
-DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS, DBA_CONSTRAINTS
Allocation d’espace
-DBA_SEGEMNTS, DBA_EXTENTS
Structure de BD
-DBA_TABLESPACES, DBA_DATA_FILES

6. Tables dynamiques des performances


Tables virtuelles :
-Enregistrent l’activité en cours de la base de données
-Sont constamment Màj lorsque la BD est active
-Les infos sont lues à partir de la mémoire et du fichier de contrôle
-Permettent de surveiller et de régler la BD
Le propriétaire est l’utilisateur SYS
Les synonymes commencent par le préfixe V$
Sont répertoriées dans la vue V$FIXED_TABLE
Exemples des tables : V$CONTROLFILE, V$DATABASE, V$INSTANCE, V$TABLESPACE …
III. Sécurité
1. Objectifs
………..
2. Gestion de la sécurité et des ressources
Administrateurs du BD :
-On a 2 admins automatiquement créés :
 SYS/change_on_install:
- Propriétaire du dictionnaire de données
- L’utilisateur le plus puissant de la base
- Il possède tous les objets internes constituant la base
 SYSTEM/manager:
- Propriétaire de tables internes supplémentaires utilisées par Oracle
- Il crée la plupart des objets
- Il ne peut pas administrer l’instance
PS : pour administrer une instance il faut avoir l’un des privilèges suivants : SYSDBA ou
SYSOPER.

Utilisateurs
-Utilisateurs finaux : se connectent à la BD pour interagir avec les données.
-Applications : facilitent les tâches aux utilisateurs finaux
-Administrateurs : surveillent et maintiennent la BD (haut niveau de privilèges).
Privilèges systèmes et privilèges objets
-Un privilège donne le droit d’exécuter certaines commandes SQL ou le droit d’accéder à
certaines ressources
-Un privilège peut être affecté (retiré) à un utilisateur, rôle, ou tous les utilisateurs (public)
https://www.dba-oracle.com/t_with_grant_admin_privileges.htm

 Les Privilèges Systèmes (PS)


Oracle possède près de 127 privilèges Systèmes, après CONNECT, Resource et
DBA, on trouve :

Affectation d’un PS :
PS : WITH ADMIN OPTION veut dire qui reçoit le rôle ou le privilège système peut
le redistribué.

Révocation d’un PS :

NB : Supposant qu’un utilisateur U1 attribut un privilège P1 "WITH ADMIN


OPTION" à un utilisateur U2 et que U2 l'attribut à son tour à U3. La révocation de
P1 à U2 n'entraîne pas la révocation de P1 à U3. (Pas de cascade)
 Les privilèges Objets (PO)
- Ils Contrôlent l’accès aux objets des tables, vues, séquences, procédures, vues
matérialisées.
- Classification selon les types d’objets.

Affectation d’un PO :
Révocation d’un PS :
Les Rôles
Un rôle est un concept oracle qui permet de regrouper plusieurs privilèges et/ou un rôle
afin de les affecter ou retirer en bloc à un utilisateur
-L’affectation d’un rôle à un utilisateur peut se faire sur Oracle ou à travers l’OS
-On peut assigner un mot de passe à un rôle
-Rôle par défaut : connect, resource, dba, exp_full_database, imp_full_data, …

 Création :
Pour créer un rôle, Il faut avoir le privilège “create role”
CREATE ROLE name [ {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY |
GLOBALLY | USING package}]
- NOT IDENTIFIED : permet de créer un rôle sans mot de passe
- EXTERNALLY : mot de passe est contrôlé au niveau de l'OS (Identifié de manière
externe)
- GLOBALLY : Rôle autorisé au niveau de l’annuaire
- USING package : Rôle applicatif

 Modification :
Pour modifier un rôle, Il faut avoir le privilège “alter any role”

ALTER ROLE name {NOT IDENTIFIED | IDENTIFIED {BY password | EXTERNALLY |


GLOBALLY | USIN PACKAGE}
 Suppression:
Pour supprimer un rôle, Il faut avoir le privilège “drop any role” et soit son créateur
ou soit avoir le rôle avec WITH ADMIN OPTION.

DROP ROLE name


 Affectation des privilèges aux rôles ou un rôle à un autre :
GRANT create session TO role1
GRANT SELECT ON table1 TO role1
GRANT role1 TO role2;

NB : Les privilèges systèmes tels que UNLIMITED TABLESPACE et les privilèges


objets tels que INDEX et REFERENCES ne peuvent pas être affectés à un rôle.
 Affectation d’un rôle à un utilisateur :
GRANT role1 to user1 [WITH ADMIN OPTION]

L’utilisateur ayant reçu le rôle avec WITH ADMIN OPTION peut le réaffecter,
supprimer ou modifier.

 Informations sur les rôles :


Interrogez les vues suivantes du dictionnaire de données :
DBA_ROLES : Tous les rôles qui existent dans la base de données
DBA_ROLE_PRIVS : Rôles accordés à des utilisateurs et à des rôles
ROLE_ROLE_PRIVS : Rôles accordés à des rôles
DBA_SYS_PRIVS : Privilèges système accordés à des utilisateurs et à des rôles
ROLE_SYS_PRIVS : Privilèges système accordés à des rôles
ROLE_TAB_PRIVS : Privilèges objet accordés à des rôles
SESSION_ROLES : Rôles activés par l'utilisateur

Liste de tous les rôles de la base


SELECT * FROM sys.dba_roles;

Liste des rôles affectés à un rôle ou un user.


SELECT * FROM sys.dba_role_privs WHERE grantee = 'nom_utilisateur' ;

Liste des rôles actifs pour la session


SELECT * FROM session_roles ;
Profils
-Un concept Oracle qui permet à l’admin d’une BD de contrôler la consommation des
ressources systèmes et des mots de passes.
-Le profile DEFAULT est affecté par défaut à l’utilisateur lors de sa création, ses limites sont
positionnées à UNLIMITED et peuvent être modifiées. Ce profil ne peut pas être
supprimé.
 Création :
 Affectation d’un profil à un utilisateur :

 Modification d’un profil :


- Privilège requis : ALTER PROFILE
ALTER PROFILE profil1 … ;

 Modification d’un profil :


- Privilèges requis : DROP PROFILE
- En cas de suppression d'un profil existant affecté à un utilisateur, ce
dernier se verra automatiquement attribué le profile DEFAULT
DROP PROFILE profil1 [CASCADE] ;

NB : Sans l'option CASCADE, si des utilisateurs sont encore associés au profil que
vous essayez de supprimer, la commande DROP PROFILE générera une erreur car
Oracle ne permet pas la suppression d'un profil auquel des utilisateurs sont
toujours associés. En utilisant l'option CASCADE, Oracle supprimera le profil cible
ainsi que toutes les associations entre ce profil et les utilisateurs, libérant ainsi les
utilisateurs de l'association avec ce profil
 Informations sur les profils :

Vous aimerez peut-être aussi