Administration Et Sécurité Des Bd-Partie 4
Administration Et Sécurité Des Bd-Partie 4
Administration Et Sécurité Des Bd-Partie 4
2
Utilisateurs et sécurité
Verrouillage Tablespace
de compte par défaut
Mécanisme
Tablespace
d'authen-
temporaire
tification
Domaine de
sécurité
Privilèges Quotas de
de rôle tablespace
Privilèges Limites
directs relatives aux
ressources
4
Liste de contrôle pour la création des utilisateurs
– Créer un utilisateur.
5
Création d’un utilisateur
Syntaxe :
Utilisez la commande suivante pour créer un utilisateur :
CREATE USER user
IDENTIFIED {BY password | EXTERNALLY}
[ DEFAULT TABLESPACE tablespace ]
[ TEMPORARY TABLESPACE tablespace ]
[ QUOTA {integer [K | M ] | UNLIMITED } ON
tablespace
[ QUOTA {integer [K | M ] | UNLIMITED } ON
tablespace ]...]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK }]
[ PROFILE { profile | DEFAULT }]
6
Où :
• BY password indique que l'utilisateur est authentifié par la base de données et qu'il doit fournir
un mot de passe pour se connecter.
• EXTERNALLY indique que l'utilisateur est authentifié par le système d'exploitation.
• GLOBALLY AS indique que l'utilisateur est authentifié de façon globale.
• DEFAULT TABLESPACE ou TEMPORARY TABLESPACE désigne le tablespace par défaut ou le
tablespace temporaire de l'utilisateur.
• QUOTA définit l'espace maximum alloué aux objets détenus par l'utilisateur dans le tablespace (le
quota peut être défini par un entier représentant des octets ou des kilo-octets et des mégaoctets.
Le mot-clé UNLIMITED permet d'indiquer que les objets détenus par l'utilisateur peuvent utiliser
l'ensemble de l'espace disponible du tablespace. Par défaut, aucun quota de tablespace n'est
affecté aux utilisateurs).
• PASSWORD EXPIRE force l'utilisateur à réinitialiser le mot de passe lorsqu'il se connecte à la base
de données à l'aide de SQL*Plus
• ACCOUNT LOCK/UNLOCK permet de verrouiller ou de déverrouiller explicitement le compte de
l'utilisateur (la valeur par défaut est UNLOCK).
• PROFILE permet de contrôler l'utilisation des ressources et de définir le mécanisme de contrôle
par mot de passe à appliquer à l'utilisateur.
• Vous devez impérativement utiliser une méthode d'authentification par mot de passe. Si vous
définissez un mot de passe, celui-ci est géré par le serveur Oracle dans le dictionnaire de données.
Les mécanismes de contrôle par mot de passe fournis par le serveur Oracle sont disponibles
lorsque les utilisateurs sont authentifiés par le serveur.
7
Création d’un utilisateur : authentification par la
base de données
• Définir le mot de passe initial
8
Créer un utilisateur : authentification par le système
d'exploitation
• Le paramètre d'initialisation OS_AUTHENT_PREFIX indique le format des
noms utilisateur.
• Sa valeur par défaut est OPS$.
CREATE USER aaron
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE temp
QUOTA 15m ON data
PASSWORD EXPIRE;
9
Modifier les quotas de tablespace d'un utilisateur
On peut modifier les quotas de tablespace d'un utilisateur dans les cas
suivants :
- lorsque la taille des tables appartenant à l'utilisateur augmente de manière
imprévue;
- lorsqu'une application est étendue et nécessite des tables ou des index
supplémentaires;
- lorsque les objets sont réorganisés et placés dans des tablespaces
différents.
On Procède comme suit pour modifier le quota de tablespace d'un
utilisateur :
ALTER USER aaron QUOTA 0 ON USERS;
11
Supprimer un utilisateur
Remarque : Vous ne pouvez pas supprimer les utilisateurs qui sont connectés au
serveur Oracle.
12
Obtenir des informations sur les utilisateurs
• Interrogez les vues suivantes pour obtenir des informations sur les
utilisateurs :
– DBA_USERS
– DBA_TS_QUOTAS
Exemples :
13
Gestion des privilèges
14
Privilèges
15
Gérer les privilèges
16
Privilèges système
17
Privilèges système : exemples
Catégorie Exemples
INDEX CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
TABLE CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
SESSION CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
TABLESPACE CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE
18
Accorder des privilèges système
19
Accorder des privilèges système
• On utilise l'instruction SQL GRANT pour accorder des privilèges système
aux utilisateurs.
• Le bénéficiaire peut ensuite accorder un privilège système à d'autres
utilisateurs avec l'option ADMIN, mais cette opération doit s'effectuer
avec précaution, car ces privilèges sont généralement réservés aux
administrateurs de la sécurité.
GRANT {system_privilege|role}
[, {system_privilege|role} ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]
Où :
– system_privilege : désigne le privilège système à accorder.
– role : désigne le nom du rôle à accorder.
– PUBLIC : accorde le privilège système à tous les utilisateurs.
– WITH ADMIN OPTION : autorise le bénéficiaire à accorder son
privilège ou son rôle à d'autres utilisateurs ou rôles.
20
Privilèges SYSDBA et SYSOPER
Catégorie Exemples
SYSOPER STARTUP
SHUTDOWN
ALTER DATABASE OPEN | MOUNT
ALTER DATABASE BACKUP CONTROLFILE TO
RECOVER DATABASE
ALTER DATABASE ARCHIVELOG
RESTRICTED SESSION
SYSDBA SYSOPER PRIVILEGES WITH ADMIN OPTION
CREATE DATABASE
ALTER TABLESPACE BEGIN/END BACKUP
RESTRICTED SESSION
RECOVER DATABASE UNTIL
21
Restrictions relatives aux privilèges système
Le paramètre O7_DICTIONARY_ACCESSIBILITY contrôle les restrictions
relatives aux privilèges système.
23
Révoquer des privilèges système
24
Révoquer des privilèges système
25
Révoquer des privilèges système accordés avec
l'option ADMIN OPTION
DBA Jeff Emi
GRANT
26
Scénario/Révoquer des privilèges système
27
Privilèges objet
Un privilège objet est un droit autorisant la réalisation d'une action sur un objet ( table, vue,
séquence, procédure…). Le tableau répertorie les privilèges correspondant aux différents objets.
28
Accorder des privilèges objet
On accorder des privilèges objet à l’aide de la commande :
GRANT { object_privilege [(column_list)]
[, object_privilege [(column_list)] ]...
|ALL [PRIVILEGES]}
ON [schema.]object
TO {user|role|PUBLIC}[, {user|role|PUBLIC} ]...
[WITH GRANT OPTION]
Où :
L'objet doit se trouver dans votre schéma ou vous devez avoir reçu le
privilège avec l'option GRANT OPTION.
Exemples :
30
Révoquer des privilèges objet
L'instruction REVOKE permet de révoquer des privilèges objet. L'utilisateur
qui révoque un privilège objet doit être celui qui l'a accordé :
REVOKE { object_privilege
[, object_privilege ]...
| ALL [PRIVILEGES] }
ON [schema.]object
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[CASCADE CONSTRAINTS]
31
Révoquer des privilèges objet
Où :
– object_privilege désigne le privilège objet à révoquer.
– ALL révoque tous les privilèges objet accordés à l'utilisateur.
– ON désigne l'objet sur lequel les privilèges objet doivent être révoqués.
– FROM identifie les utilisateurs ou les rôles dont les privilèges objet sont
révoqués.
– CASCADE CONSTRAINTS supprime toutes les contraintes d'intégrité
référentielle définies à l'aide du privilège REFERENCES ou ALL.
Restriction :
Les utilisateurs qui accordent des privilèges objet peuvent les révoquer
uniquement aux utilisateurs auxquels ils les ont accordés.
Exemple :
REVOKE SELECT ON emi.orders FROM jeff;
32
Révoquer les privilèges objet accordés avec
l'option WITH GRANT OPTION
Bob Jeff Emi
GRANT
33
Révoquer des privilèges objet accordés avec
l'option WITH GRANT OPTION
La révocation de privilèges objet accordés avec l'option WITH GRANT
OPTION provoque également un effet de cascade.
Scénario
Jeff reçoit le privilège objet SELECT sur la table EMPLOYEES avec
l'option GRANT OPTION.
Jeff accorde ce privilège sur la table EMPLOYEES à Emi.
Par la suite, le privilège SELECT de Jeff est révoqué en entraînant la
révocation du privilège d'Emi.
34
Obtenir des informations sur les privilèges
Interrogez les vues suivantes pour obtenir des informations sur les
privilèges :
36
Avantages des rôles
37
Avantages des rôles
38
Création des rôles
Pour créer un rôle
- Non identifié :
CREATE ROLE oe_clerk;
39
Rôles prédéfinis
Rôles Description
Il regroupe les privilèges System : ALTER
SESSION, CREATE CLUSTER, CREATE
CONNECT DATABASE LINK, CREATE SEQUENCE,
CREATE SESSION, CREATE SYNONYM,
CREATE TABLE, CREATE VIEW
CREATE CLUSTER, CREATE INDEXTYPE,
RESOURCE CREATE OPERATOR, CREATE PROCEDURE,
CREATE SEQUENCE, CREATE TABLE,
CREATE TRIGGER, CREATE TYPE
DBA Tous les privilèges System avec l’option
ADMIN
40
Rôles prédéfinis
Rôles Description
EXP_FULL_DATABASE Privilèges d'export de la base de données
IMP_FULL_DATABASE Privilèges d'import de la base de données
DELETE_CATALOG_ROLE Privilèges DELETE sur les tables du
dictionnaire de données
EXECUTE_CATALOG_ROLE Privilège EXECUTE sur les packages du
dictionnaire de données
SELECT_CATALOG_ROLE Privilège SELECT sur les tables du
dictionnaire de données
41
Modifier des rôles
42
Accorder des privilèges à un rôle
43
Révoquer des privilèges d’un rôle
44
Accorder des rôles
46
Rôles par défaut
Si un rôle est déclaré par défaut, les autres rôles ne sont plus considérés
comme des rôles par défaut.
47
Etablir des rôles par défaut
• Un utilisateur peut recevoir un grand nombre de rôles par défaut.
48
Activer et désactiver les rôles
• On peut désactiver un rôle accordé à un utilisateur pour le révoquer
temporairement;
49
Activer et désactiver les rôles
50
Révoquer des rôles accordés à des
utilisateurs
La révocation d'un rôle accordé à un utilisateur requiert l'option
ADMIN OPTION ou le privilège GRANT ANY ROLE.
• Pour révoquer un rôle, on utilise la syntaxe suivante :
51
Suppression des rôles
• Lorsque on supprime un rôle :
– il est retiré à tous les utilisateurs et rôles auxquels il était accordé;
– il est supprimé de la base de données.
• La suppression d'un rôle requiert l'option ADMIN OPTION ou le
privilège DROP ANY ROLE.
• Pour supprimer un rôle, on utilise la syntaxe suivante :
52
Obtenir des informations sur les rôles
Pour obtenir des informations sur les rôles, interrogez les
vues suivantes du dictionnaire de données :
53
Gestion des Profils
54
Les profils
55
Les profils
56
Les profils
57
Le profil DEFAULT
58
Création des profils
CREATE PROFILE nom_profil LIMIT
[SESSION_PER_USER {entier|UNLIMITED|DEFAULT}]
[CPU_PER_SESSION {entier|UNLIMITED|DEFAULT}]
[CPU_PER_CALL {entier|UNLIMITED|DEFAULT}]
[CONNECT_TIME {entier|UNLIMITED|DEFAULT}]
[IDLE_TIME {entier|UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_SESSION {entier|UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_CALL {entier|UNLIMITED|DEFAULT}]
[COMPOSITE_LIMIT {entier|UNLIMITED|DEFAULT}]
[PRIVATE_SGA {entier [K|M]|UNLIMITED|DEFAULT}]
[FAILED_LOGIN_ATTEMPS {entier | UNLIMITED | DEFAULT}]
[PASSWORD_LIFETIME {entier | UNLIMITED | DEFAULT}]
[{PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX}
{entier | UNLIMITED | DEFAULT}]
[PASSWORD_LOCK_TIME {entier | UNLIMITED | DEFAULT}]
[PASSWORD_GRACE_TIME {entier | UNLIMITED | DEFAULT}]
[PASSWORD_VERIFY_FUNCTION {fonction | NULL | DEFAULT}];
59
Ces paramètres se répartissent en deux catégories, ceux qui définissent les
ressources allouées et ceux qui précisent les modalités de gestion des mots de
passe.
Paramètre Signification
SESSION_PER_ limite le nombre de sessions actives simultanément pour un
USER utilisateur.
CPU_PER_SESS indique la durée CPU maximale autorisée pour la session active,
ION exprimée en centièmes de seconde.
CPU_PER_CALL indique la durée CPU maximale autorisée pour un appel
(analyse, exécution ou extraction), exprimée en centièmes de
seconde.
CONNECT_TIME indique la durée maximale de connexion autorisée pour la
session active, exprimée en minutes.
IDLE_TIME exprime la durée maximale d’inactivité autorisée avant
fermeture automatique de la session, exprimée en minutes.
Remarque : Le CPU Time (durée de CPU) est le temps passé par un programme sur le
processeur.
60
Paramètre Signification
LOGICAL_READ indique le nombre maximum de blocs qui peuvent être
S_PER_SESSIO transférés durant une session.
N
LOGICAL_READ indique le nombre maximum de blocs qui peuvent être
S_PER_CALL transférés pour un appel (parse, execute ou fetch).
PRIVATE_SGA permet de gérer la taille allouée à la SGA privée, utilisé
uniquement avec l’architecture serveurs partagés.
COMPOSITE_LI permet de définir un coût global pour une session. Ce coût est
MIT exprimé comme la somme des poids de :
CPU_PER_SESSION
CONNECT_TIME
LOGICAL_READS_PER_SESSION
PRIVATE_SGA
61
Paramètre Signification
PASSWORD_LIFE_T durée maximale d'un mot de passe (période normale).
IME
PASSWORD_REUSE_ nombre de jours avant de pouvoir réutiliser un mot de
TIME passe périmé. (Par exemple si celui ci vaut 30 et que votre mot de
passe actuel est toto. Il vous faudra attendre 30 jours à compter de la
date de votre changement de mot de passe avant de pouvoir à nouveau
utiliser toto comme mot de passe.)
PASSWORD_REUSE_ nombre maximum de fois que le même mot de passe
MAX peur être réutilisé.
PASSWORD_LOCK_T nombre de jours de blocage du compte après un
IME FAILED_LOGIN_ATTEMPS.
PASSWORD_GRACE_ nombre de jours après la fin de période normale avant
TIME que le compte ne soit bloqué. (c’est délai supplémentaire à
l'utilisateur pour changer son mot de passe.)
PASSWORD_VERIFY permet de définir l'algorithme de vérification du mot de
_FUNCTION passe.
62
Création des profils
Exemples:
La commande suivante permet de créer un nouveau profil :
63
Modification d’un Profil
La modification d’un profil s’effectue par l’intermédiaire de l’ordre ALTER PROFILE
nom_profil
64
Suppression d’un Profil
La suppression d’un profil s’effectue par l’ordre
L’option CASCADE permet de supprimer le profil pour tous les utilisateurs concernés en le
remplaçant par le profil DEFAULT.
Pour visualiser les limites des profils il faut consulter les vues:
- DBA_USERS
- DBA_PROFILES
65
Activation et contrôle des limites
- Soit dans le fichier initSID.ora (PFILE), Ajouter :
RESOURCE_LIMIT = TRUE
66
Sauvegarde et Restauration
67
Sauvegarde et Restauration
Parmi les tâches d’un DBA
68
Sauvegarde et Restauration
La sauvegarde: est une opération de duplication rapide des données afin d`éviter
la perte.
69
Sauvegarde et Restauration
70
Les pannes et les échecs
Il existe différents types de pannes ou échecs amenant dans certains cas, une
restauration inévitable et donc une sauvegarde au préalable importante.
- Un échec de rapport :
qui se produit lorsqu’un utilisateur tente d’écrire là où il n’a pas le privilège ou alors
lorsque son quota est atteint par exemple.
71
Les pannes et les échecs
- Un échec d’instance :
Lorsque le serveur plante ou subit des problèmes et/ou fermé par l’ OS.
Remarque :
Les pannes qui amènent en général la restauration complète ou partielle de la base
sont les erreurs d’utilisateurs ou les pannes matérielles.
72
Rappel: Les redo logs
Les fichiers redo logs permettent à la base de garder une trace de toutes les
altérations de données, ainsi en cas de crash de la base, ils permettent de rejouer
les modifications apportées à la base.
73
Les redo logs
Les requêtes suivantes permettent de s’interroger sur les fichiers redo logs:
- Pour voir l'état des archives logs :
ARCHIVE LOG LIST;
SELECT name, log_mode FROM v$database;
SELECT archiver FROM v$instance;
74
Les redo logs
75
Les redo logs
76
Sauvegarde totale
77
Sauvegarde partielle
• Les Tablespace
• Les fichiers de données
• Les fichiers de contrôles
• Les fichiers Redo Log
78
Sauvegarde de la base à froid (Cold Backup)
• Une fois l'activité est interrompue, ces fichiers peuvent être copiés sans
corruption de données.
79
Sauvegarde de la base à froid (Cold Backup)
Démarche :
• On arrête l’instance par la commande :
SHUTDOWN IMMEDIATE
- redolog files
copier chemin/*.log dans Cold_Backup/*.log
- control files
copier chemin/*.ctrl dans Cold_Backup/*.dbf
- fichier de paramètre
copier chemin/init_mabase.ora dans Cold_Backup
80
Restauration des données
• La restauration est très simple. Il suffit de recréer une instance avec le même
SID (si cela est nécessaire).
82
Restauration partielle
83
Sauvegarde de la base à chaud (Hot Backup)
• Une sauvegarde à chaud est une sauvegarde qui se fait lorsque la base est
ouverte.
84