SlideShare ist ein Scribd-Unternehmen logo
1 von 93
PL/SQL
et
Sécurité de la base
de données
Préparé par:
Meryem MOUSSAMI
Wafaa HARKATI
Salma GHAOUTA
Encadré par:
M.HANOUNE
le langage PL/SQL
Administration de base de données
Plan
• Introduction
• Langage PL/SQL
• Les objets PL/SQL
• Options de configuration PL/SQL
• conclusion
Le langage PL/SQL est un langage de programmation
de quatrième génération, propriétaire
Oracle, qui fournit des extensions procédurales du
langage SQL. Il offre un environnement de
programmation commun pour les bases de données et
applications Oracle, quel que soit le
système d'exploitation ou la plate-forme matérielle.
Il permet de :
définir un ensemble de commandes contenues dans
ce que l'on appelle un "bloc" PL/SQL. Un bloc PL/SQL
peut lui-même contenir des sous-blocs.
Le PL/SQL peut être utilisé sous 3 formes :
un bloc de code, exécuté comme une commande
SQL.
un fichier de commande PL/SQL
un programme stocké
Définition : Procedural Language / Structured Query Language
Structured’unblocPL
Comment créer un bloc PL/SQL
Syntaxe :
Partie DECLARE et
EXCEPTION sont
optionnel
DECLARE
Variables, curseurs, exceptions définies
BEGIN
Instructions SQL & PL/SQL
EXCEPTION
Action à réaliser quand une exception est
levée
END;
/
Traitement d’un bloc PL/SQL
Administrer les objets PL/SQL
Un DBA doit pouvoir:
• Identifier les Objets PL/SQL
• Recommander l’utilisation appropriée du
langage PL/SQL
• Charger les objets PL/SQL dans la base de
données
• Assister les développeurs PL/SQL dans la
résolution des problèmes
Objets PL/SQL
Il existe de nombreux types d’objet de base de
données PL/SQL:
• Fonction
• Procédure
• Package
• Corps de Package
• Déclencheur
Les fonctions
 Une fonction est un bloc PL/SQL nommé qui
renvoie obligatoirement une valeur.
 Une fonction peut être stockée dans la base de
données, comme objet de base de données, en vue
d'exécutions répétées.
 Une fonction peut être appelée en tant que
partie d'une expression
Définition
Structured’unefonction
Comment créer une fonction
Syntaxe :
CREATE [OR REPLACE] FUNCTION function_name
(parameter1 [mode1] datatype1,
parameter2 [mode2] datatype2,. . .)
RETURN datatype
IS
PL/SQL Bloc;
Le bloc PL/SQL doit y
avoir au moins une
instruction return
Exemple :
CREATE OR REPLACE FUNCTION get_sal (v_id IN emp.empno%TYPE)
RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SELECT sal
INTO v_salary
FROM emp
WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
/
 Une fonction peut comporter un ou plusieurs paramètres IN, mais ne doit
retourner qu'une seule valeur.
 Le code d'une fonction PL/SQL doit contenir une instruction RETURN.
A noter
 Elle accepte des paramètres en
entrée (listes des arguments).
 Une procédure est un bloc
PL/SQL nommé qui effectue une
action spécifique.
Définition Procédure
Syntaxepourlacréationd’une
procédure Comment est ce qu’on peut créer une
procédure ?
La Syntaxe :
Une procédure est
appelée à l’aide de la
commande CALL .
CREATE [OR REPLACE] PROCEDURE
procedure_name
(
parameter1 [mode1] datatype1,
parameter2 [mode2] datatype2,
…
)
IS | AS
Block PL/SQL;
CREATE OR REPLACE PROCEDURE Augmentation (v_Numemp IN
numéro de l'employé
EMP.empno%Type , v_Pourcent IN NUMBER )
pourcentage d’augmentation
Is
BEGIN -- augmentation de l'employé
Update EMP
Set sal = sal+ sal * v_Pourcent Where empno = v_Numemp ;
END;
/
Exemple
 D'une façon générale, les procédures ne devraient pas exécuter des
instructions de fin de transaction (COMMIT, ROLLBACK, Ordre DDL) .
 La décision d'enregistrer ou annuler la transaction en cours relève du
programme appelant.
A noter
 Un paquetage/package est un ensemble de procédures et
fonctions regroupées dans un objet nommé. Par exemple :
Le paquetage Oracle DBMS_LOB.
Le paquetage UTL_FILE.
Définition Package
Un paquetage est organisé en deux parties distinctes :
 Une partie spécification
qui permet de spécifier à la fois les fonctions et procédures publiques ainsi que les
déclarations des types, variables, constantes, exceptions et curseurs utilisés dans le
paquetage et visibles par le programme appelant.
 Une partie corps
qui contient les blocs et les spécifications de tous les objets publics listés dans la
partie spécification.
Cette partie peut inclure des objets qui ne sont pas listés dans la partie
spécification, et sont donc privés.
Cette partie peut également contenir du code qui sera exécuté à chaque invocation
du paquetage par l'utilisateur.
Définition
Package
Syntaxepourlacréationd’un
package Comment est ce qu’on peut créer un package ?
La Syntaxe pour la spécification:
CREATE [OR REPLACE] PACKAGE nom_package
As
Définition des fonctions , procédure …
End nom_package ;
/
Exemple :
CREATE PACKAGE clients
AS
PROCEDURE insere_client (no INTEGER, nom VARCHAR2, ...);
PROCEDURE supprime_client (no INTEGER);
...
END;
Package
Syntaxepourlacréationd’un
package(suite) Comment est ce qu’on peut créer un package ?
La Syntaxe pour le corps:
CREATE [OR REPLACE] PACKAGE BODY nom_package
As
Définition des fonctions
BEGIN
…
END;
Définition procédure
BEGIN
…
END;
…..
End nom_package ;
/
Corps du package
Les avantages de pl/sql package
Une meilleur performance
Information en cachette
Une conception facile de l’application
La modularité
Les packages PL/SQL intégrés fournis avec Oracle Database 10g
permettent l'accès à des fonctionnalités de base de données .
Ils comprennent également de nombreux utilitaires d'administration et
de maintenance.
Packages intégrés
• Les packages utilisés par un administrateur
dépendent du type d'application que la base de
données exécute.
• Voici quelques-uns des packages d'administration
et de maintenance les plus courants
Le package PL/SQL intégrés
• DBMS_STATS permet de collecter, modifier, consulter,
exporter et supprimer les statistiques relatives à vos
tables.
• DBMS_TTS : validation des tablespaces transportables .
• DBMS_SESSION : accès PL/SQL aux instructions ALTER
SESSION et SET ROLE
Le package DBMS_OUTPUT
 Get_line (ligne out varchar2, statut
out integer) : extrait une ligne du
tampon de sortie.
 Get_lines (lignes out varchar2, n
in out integer) : extrait à partir du
tampon de sortie un tableau de n
lignes.
• New_line : place un marqueur de
fin de ligne dans le tampon de
sortie.
• Put (variable|conatante in
{varchar2|number|date} :
combinaison de put et new_line.
•
• Enable (taille tampon in integer
default 2000) : permet de mettre
en route le mode trace dans une
procédure ou une fonction.
• Disable : permet de désactiver le
mode trace dans une procédure ou
une fonction.
Ce package permet de stocker de l’information dans un tampon avec les procédures
PUT ou PUT_LINE.
Il est possible de récupérer l’information grâce aux procédures GET et GET_LINE
Les déclencheurs
• Un déclencheur est un bloc PL/SQL associé à une vue
ou une table, qui s'exécutera lorsqu'une instruction du
langage de manipulation de données (DML) sera
exécutée
• Il est utilisé pour implémenter des règles de gestion
complexes et pour étendre les règles d’intégrité
référentielle associée à table lors de leur création de cette
dernière
Caractéristiques d'un Trigger
• Le traitement est exprimé en PL/SQL. Il peut lui-même faire appel à des procédures
et des fonctions écrites en PL ou Java.
• Son code est stocké dans la base de données.
• Un déclencheur peut être actif ou non
• Si un déclencheur aboutit, la transaction qui l'a appelé peut se poursuivre
• Le déclenchement peut se propager en cascade, tout en respectant le principe
d'atomicité d'une transaction OPEN_CURSORS
• Un déclencheur s'exécute dans le cadre d'une transaction. Il ne peut donc pas
contenir d'instruction COMMIT ou ROLLBACK ou toute instruction générant une fin
de transaction implicite (ordre DDL)
Syntaxe pour la création d’un trigger
Create or replace trigger <trigger_name>
before/after
insert or update of <colonne1>, <colonne2>, ...
or delete
on <tab_name>
[for each row [when (<trigger_condition>)]]
[declare
types, constantes ou variables ´eventuelles]
begin
texte du trigger
end;
Comment est ce qu’on peut créer un trigger ?
Exemple pour la création d’un trigger
CREATE OR REPLACE TRIGGER myFirstTrigger
2 BEFORE UPDATE OF ename ON emp
3 FOR EACH ROW
4 BEGIN
5 DBMS_OUTPUT.ENABLE(20000);
6 DBMS_OUTPUT.PUT_LINE(:NEW.ENAME|| ‘ ‘
||:OLD.ENAME);
7 EXCEPTION
8 WHEN OTHERS THEN
9 DBMS_OUTPUT.PUT_LINE(SQLERRM);
10 END;
Comment est ce qu’on peut créer un trigger ?
Résolution multi-événements
• Un Trigger peut répondre à plusieurs événements.
• Dans ce cas, il est possible d'utiliser les prédicats
intégrés INSERTING, UPDATING ou DELETING pour
exécuter une séquence particulière du traitement
en fonction du type d'événement
Exemple pour la création d’un trigger
CREATE OR REPLACE TRIGGER myFirstTrigger
AFTER UPDATE OR INSERT ON emp
FOR EACH ROW
BEGIN
DBMS_OUTPUT.ENABLE(20000);
IF INSERTING THEN
DBMS_OUTPUT.PUT_LINE(' INSERT ');
END IF;
IF UPDATING('ENAME') THEN
DBMS_OUTPUT.PUT_LINE(' UPDATED ' || :NEW.ENAME);
END IF;
END;
/
Comment est ce qu’on peut créer un trigger ?
Maintenance des déclencheurs
• Activation/désactivation d'un déclencheur:
ALTER TRIGGER nom_déclencheur DISABLE
ALTER TRIGGER nom_déclencheur ENABLE
ALTER TABLE nom_table DISABLE ALL TRIGGERS
ALTER TABLE nom_table ENABLE ALL TRIGGERS
Maintenance des déclencheurs
(Suite)
• Les informations sur les déclencheurs sont visibles à travers les vues du
dictionnaire de données
 USER_TRIGGERS pour les déclencheurs appartenant au schéma.
 ALL_TRIGGERS pour les déclencheurs appartenant aux schémas
accessibles
 DBA_TRIGGERS pour les déclencheurs appartenant à tous les schémas .
La colonne BASE_OBJECT_TYPE permet de savoir si le déclencheur est basé
sur une table, une vue, un schéma ou la totalité de la base
La colonne TRIGGER_TYPE permet de savoir s'il s'agit d'un déclencheur
BEFORE, AFTER ou INSTEAD OF,si son mode est FOR EACH ROW ou non
s'il s'agit d'un déclencheur évènementiel ou non
La colonne TRIGGERING_EVENT permet de connaître l'événement
concerné par le déclencheur
La colonne TRIGGER_BODY contient le code du bloc PL/SQL
Options de configuration PL/sql
• Certaines règles devront être mise en place et/ou
avancées pour donner aux développeurs des
opportunités de production, et de ce fait des
meilleures performances.
• Pour cela, la base de données devra prendre en
compte certaines procédure PL/SQL:
• - PLSQL_WARNING
• - PLSQL_DEBUG
• - PLSQL_OPTIMIZE_MODE
• - PLSQL_CODE_TYPE
Options de configuration PL/sql
• PL/SQL gestion des erreurs en Oracle 10g permet d’opter pour un code propre
sans bug et sans erreur. En général on rend DISABLE cette gestion en production.
ALTER SYSTEM SET plsql_warnings= ‘DISABLE :ALL’
SCOPE=BOTH ;
• PLSQL debug interprète en incluant les données de débug. En général on rend
DISABLE cette gestion en production.
ALTER SYSTEM SET plsql_debug=FALSE SCOPE=BOTH ;
PLSQL_OPTIMIZE_MODE introduit en 10g, pour l’activer :
ALTER SYSTEM SET plsql_optimize_mode=2 SCOPE=BOTH ;
Le paramètre PLSQL_CODE_TYPE définit si le compilateur PL/SQL
interprète le code où utilise le code natif machine
FIN
Plan
• Introduction
• Langage PL/SQL
• Les objets PL/SQL
• Options de configuration PL/SQL
• conclusion
Sécurité de la base de
donnée
Administration de base de données
Plan
• Introduction
• Appliquer le principe du moindre privilège
• Désactiver l’authentification à distance par le système
• Implémenter les fonctionnalités standards de sécurité du mot de passe
• Vérification des mots de passe
• Les outils et options d’audit
• Affichage des résultats de l’audit
• Audit détaillé(FGA)
• Stratégie d’audit détaillé
• Mise à jour de sécurité
• Conclusion
Introduction
Assurer la sécurité d’une BD c’est maintenir :
la confidentialité
l’intégrité
et la disponibilité des données.
Sécurisation d’une BD : objectifs
Objectif:
Protéger le dictionnaire de données
Révoquer les privilèges non nécessaires de PUBLIC
Limiter les répertoires accessibles par les utilisateurs
Limiter les utilisateurs dotés de privilèges d’administration
Limiter l’authentification à distance auprès de la base de données
Appliquer le Principe De moindre privilège
Protégez le dictionnaire de données en prenant soin d’affecter la valeur
FALSE au paramètre d’initialisation suivant :
07_DICTIONARY_ACCESSIBILITY=FALSE
Cette configuration empêche les utilisateurs dotés du privilège système ANY
TABLE d’accéder aux tables de base du dictionnaire de données.
La valeur FALSE empêche également l’utilisateur SYS de se connecter sous
un autre compte que SYSDBA.
Protéger le dictionnaire de donnée
 Révoquer tous les privilèges et rôles non nécessaire du groupe d’utilisateurs
PUBLIC du serveur de base de données
 De nombreux packages intégrés accordent le privilège EXECUTE à PUBLIC
 Le privilège d’ exécution sur les packages suivants doit toujours être révoqué de
PUBLIC:
 UTL_TCP
UTL_SMTP
UTL_HTTP
 UTL_FILE
 DBMS_OBFUSCATION et DBMS_CRYPTO
Révoquer les privilèges non nécessaires de PUBLIC
 Les commandes sont les suivantes :
-REVOKE EXECUTE ON utl_tcp FROM PUBLIC;
-REVOKE EXECUTE ON utl_smtp FROM PUBLIC;
-REVOKE EXECUTE ON utl_http FROM PUBLIC;
-REVOKE EXECUTE ON utl_file FROM PUBLIC;
-REVOKE EXECUTE ON dbms_obfuscation FROM PUBLIC;
-REVOKE EXECUTE ON dbms_crypto FROM PUBLIC;
Exemple
UTL_FILE_DIR est le paramètre de configuration qui:
Désigne les répertoires disponibles pour les E/S de fichiers PL/SQL
Permet aux utilisateurs de la base de lire ou d’écrire dans ces répertoires,
sur le serveur de base de données
Limiter les répertoires du système d’exploitation
accessibles par l’utilisateur
Limite les types de privilège suivants:
Octroi des privilèges système et objet
Connexions dotées des privilèges SYS: SYSDBA et SYSOPER
Privilèges de type DBA, tels que DROP ANY TABLE
Permissions lors de l’exécution
Limiter les utilisateurs dotés de privilèges d’administration
Exemple: Répertorier tous les utilisateurs avec le rôle
DBA
• Pour déterminer les utilisateurs auxquels le privilège
SYSDBA ou SYSOPER a été accordé, on utilise
l’interrogation suivante :
Désactiver l’authentification à distance
par le système d’exploitation
• L’authentification à distance ne doit être utilisée que
lorsque vous faites confiance à tous les clients pour
authentifier de manière appropriés les utilisateurs
• Processus d’authentification à distance:
 L’utilisateur de base de données est authentifié en externe
 Le système distant authentifie l’utilisateur
 L’utilisateur se connecte à la base de données sans authentification
complémentaire
Pour la désactiver, vérifier que la valeur par défaut est affectée
au paramètre d’initialisation d’instance suivant :
REMONTE_OS_AUTHENT =FALSE
Gérer les comptes utilisateur par défaut
• L’assistant DBCA provoque l’expiration et le verrouillage
de tous les comptes, à l’exception des suivants:
 SYS
SYSTEM
SYSMAN
DBSNMP
Dans le cas d’une base de données crée manuellement,
vous devez procéder au verrouillage et à l’expiration de
tous les comptes non utilisés
Implémenter des fonctionnalités standard de
sécurité des mots de passe
Verrouillage des comptes suite à un mot de passe
erroné
FAILED_LOGIN_ATTEMPTS : Ce paramètre permet de
définir le nombre maximal de tentatives de
connexion.
PASSWORD_LOCK_TIME : Ce paramètre permettra de
définir la durée de verrouillage du compte utilisateur
après avoir bloqué le compte avec le paramètre
FAILED_LOGIN_ATTEMPTS
Expiration et durée de vie des mots de passe
PASSWORD_LIFE_TIME : Ce paramètre permet de
définir la durée d'utilisation du même mot de passe.
PASSWORD_GRACE_TIME :Ce paramètre permet de
définir en jours le temps de GRACE qui vous sera
alloué pour changer votre mot de passe après son
expiration.
Historique des mots de passe
PASSWORD_REUSE_TIME : Ce paramètre défini en
nombre de jours, permet de définir le délai entre deux
utilisations du même mot de passe.
PASSWORD_REUSE_MAX : Ce paramètre permet de
définir le nombre de fois de changements du mot de
passe requis avant réutilisation du mot de passe
actuel.
Vérification des mots de passe
Si les fonctions sont personnalisés , elles doivent utiliser la spécification suivante
pour déclarer les variables d’entrée :
Function_name ( userid_param IN VARCHAR2 , passwrd_param IN VARCHAR2,
old_passwrd_param IN VARCHAR2)
Return BOOLEAN
Les fonctions de vérification des mots de passe doivent :
 Appartenir à l’utilisateur SYS.
 Renvoyer une valeur booléenne.
Fonction de vérification de mots de passe
 Il s’agit de la fonction « VERIFY_FUNCTION ».
 Elle applique les restrictions suivantes:
i. La longueur minimale est de 4 caractères.
ii. Le mot de passe ne peut pas être identique au nom d’utilisateur.
iii. Le mot de passe doit comporter au moins un caractère alphabétique , un chiffre et
un caractère spécial.
iv. La différence entre le mot de passe et le précédent doit être d’au moins 3 lettres.
Créer un profil de mot de passe
Affecter des utilisateurs à un profil de mot de passe
Surveiller les activités suspectes
 La surveillance doit faire partie
intégrante des procédures de
sécurité.
 L’administrateur peut auditer toutes
les actions qui ont eu lieu dans la
base de données.
 L’audit doit être ciblé de telle sorte
que seuls les événements présentant
un intérêt soient capturés.
Les types d’Audit
Oracledatabase10goffre L’audit de base de données
standard
L’audit basé sur les données
L’audit détaillé
Les types d’Audit(1)
L’audit de base de données
standard
Capture plusieurs
informations sur un
événement audité: la
survenue de l’événement,
l’instant auquel il s’est
produit, l’utilisateur qu’il a
provoqué, ainsi que
l’ordinateur client que
l’utilisateur employait lors
de l’événement .
Il est activé via le
paramètre AUDIT_TRALL
Audit de base de données standard
Audit de base de données standard (Evénements audités)
Evénement
de
connexion
Utilisation
des
privilèges
système
Utilisation
des
privilèges
objet
Utilisation
d’instruction
SQL
Afficher les options d’audit
ALL_DEF_AUDIT_OPTS ALL_STMT_AUDIT_OPTS
ALL_PRIV_AUDIT_OPTS ALL_OBJ_AUDIT_OPTS
Afficher les résultats de l’audit
DBA_AUDIT_TRALL
DBA_AUDIT_EXISTS
DBA_AUDIT_OBJECT
DBA_AUDIT_SESSION
DBA_AUDIT_STATEMENT
Toutes les entées
de la trace d’audit
Enregistrements
concernant AUDIT
EXISTS/NOT EXISTS
Enregis. concernant
les objets de schéma
Toutes les entées de
connexion et
déconnexion
Enregis. D’audit des
instructions
Les types d’Audit(2)
L’audit basé sur les données
Audite les modifications
apportées aux données.
Il capture non seulement
la survenue de
l’événement audité, mais
également les valeurs
insérées, mises à jours ou
supprimées.
Il est implémenté par
l’intermédiaire de triggers
de base de données
Audit basé sur les données
» L’audit de base de données enregistre le fait que des opérations d’insertion,
de mise à jour ou de suppression ont été effectuées sur les objets audités,
mais il ne capture pas les valeurs proprement dites qui ont changé.
» L’audit basé sur les données étend l’audit de base de données en capturant
les valeurs modifiées.
» L’audit basé sur les données utilise des déclencheurs de base de données.
» Il a généralement un impact plus important que l’audit de base de données
standard sur les performances, car le code du déclencheur d’audit doit être
exécuté chaque fois que l’opération d’insertion, de mise à jour ou de
suppression a lieu.
» Le degré de dégradation dépend de l’efficacité du code du déclencheur.
Audit basé sur les données
Les types d’Audit(3)
L’audit détaillé
Capturer les instructions
SQL qui ont été exécutées
Audit détaillé (FGA)
 Surveille l’accès aux données en fonction
du contenu
 Audite les opérations SELECT ou INSERT,
UPDATE,DELETE
 Peut être lié à une table ou à une vue
 Peut exécuter une procédure
 Est administré via le package DBMS_FGA
L'audit détaillé (FGA)
• Les options d'audit détaillé peuvent être ciblées par colonnes
individuelles d'une table ou d'une vue et peuvent même être
conditionnelles
• Contrairement à l'audit basé sur les données l'audit détaillé ne
nécessite pas l'utilisation de déclencheurs de base de données
et son impact sur les performances est similaire à celui de l'audit
de base de données standard.
• L'administrateur utilise le package DBMS_FGA PL/SQL pour
créer une stratégie d'audit sur la table ou la vue cible.
Stratégie d'audit détaillé
Package DBMS_FGA
• Sous-programme
• description
Le package DBMS_FGA est l'outil d'administration des
fonctions d'audit détaillé.
Des privilèges d'exécution sur DBMS_FGA sont
nécessaires pour administrer les stratégies d'audit.
Etant donné que la trace d'audit détaillé peut contenir
des informations sensibles, les privilèges d'exécution
sur ce package doivent être réservés aux seuls
administrateurs.
Package DBMS_FGA
Sous programme Description
ADD_POLICY Crée une stratégie d’audit à l’aide du
prédicat fourni en tant que condition
d’audit
DROP_POLICY Supprime une stratégie d’audit
ENAB LE_POLICY Active une stratégie d’audit
DISABLE_POLICY Désactive une stratégie d’audit
Activer et désactiver une stratégie d’audit détaillé
• Désactiver une stratégie:
Dbms_fga.disable_policy(
object_schema =>’hr’,
object_name =>’employee’,
policy_name =>’audit_emps_salary’);
Activer et désactiver une stratégie d’audit détaillé
• activer une stratégie:
Dbms_fga.enable_policy(
object_schema =>’hr’,
object_name =>’employee’,
policy_name =>’audit_emps_salary’);
Supprimer une stratégie d’audit détaillé
• Supprimer une stratégie:
Dbms_fga.drop_policy(
object_schema =>’hr’,
object_name =>’employee’,
policy_name =>’audit_emps_salary’);
Déclencher des événements d’audit:
• Les instructions SQL
suivantes provoquent
un audit
SELECT Count(*)
FROM hr.employee
WHERE departement_id=10
And Salary>v_salary
SELECT Salary
FROM hr.employee
Déclencher des événements d’audit:
• L’ instruction SQL
suivante ne provoque
pas d’audit:
SELECT last_name
FROM hr.employee
WHERE departement_id=10 ;
VUES DE DICTIONNAIRE DE DONNÉES:
88
Nom de la vue Description
DBA_FGA_AUDIT_TRAIL Tous les événements d’audit détaillé
ALL_AUDIT_POLICIES Toutes les stratégies d’audit détaillé pour
les objets auxquels l’utilisateur actuel
peut accéder
DBA_AUDIT_POLICIES Toutes les stratégies d’audit détaillé dans
la base de données
USER_AUDIT_POLICIES Toutes les stratégies d’audit détaillé pour
les objets du schéma de l’utilisateur actuel
Règles relatives à l’audit détaillé:
 Pour auditer toutes les instructions, utilisez une condition null.
89
 Si vous tentez d’ajouter une stratégie qui existe déjà, l’erreur ORA-28101 est
générée.
 La table ou la vue auditée doit déjà exister lorsque vous créez la stratégie.
 Si la syntaxe de la condition d’audit n’est pas valide, une erreur ORA-28112
est générée lors de l’accès à l’objet audité.
 Si la colonne d’audit n’existe pas dans la table, aucune ligne n’est auditée.
 Si le gestionnaire d’événement n’existe pas, aucune erreur n’est renvoyés et
les enregistrements d’audit sont quand même crées.
Auditer les utilisateurs SYSDBA et SYSOPER:
Les utilisateurs dotés des privilèges SYSDBA ou SYSOPER peuvent se connecter
alors que la base de données est fermée.
90
 La trace d’audit doit être stockée à l’extérieur de la base de données.
 La connexion en tant que SYSDBA ou SYSOPER est toujours auditée.
 Activer l’audit complémentaire des actions SYSDBA ou SYSOPER avec
audit_eye_opertaions.
 Contrôlez l’emplacement de la trace d’audit avec audit_file_dest. l’emplacement
par défaut est le suivant:
Journal des événements (windows).
$ORACLE_BCME/rdbms/audit(UNIX/Linu).
Mises à jour de sécurité
 Oracle publie les alertes de sécurité sur le web
Oracle Technology Network, à l’adresse suivante :
http://otn.oracle.com/deploy/security/alerts.htm
 Les administrateurs de base de données et les
développeurs Oracle peuvent également s’abonner
afin d’ être informés par e-mail des alertes de
sécurité, en cliquant sur le lien « Subscribe to
Security Alerts Here ».
91
Récapitulation
• Appliquer le principe du moindre privilège
• Désactiver l’authentification à distance par le système
• Implémenter les fonctionnalités standards de sécurité du mot de passe
• Vérification des mots de passe
• Les outils et options d’audit
• Affichage des résultats de l’audit
• Audit détaillé(FGA)
• Stratégie d’audit détaillé
• Mise à jour de sécurité
FIN

Weitere ähnliche Inhalte

Was ist angesagt?

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSyrine Ben aziza
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatMohamed Ben Bouzid
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web servicesmohammed addoumi
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHPInes Ouaz
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de ThèseLilia Sfaxi
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 

Was ist angesagt? (20)

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Présentation cloud computing
Présentation cloud computingPrésentation cloud computing
Présentation cloud computing
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Java - Lombok
Java - LombokJava - Lombok
Java - Lombok
 
Introduction aux web services
Introduction aux web servicesIntroduction aux web services
Introduction aux web services
 
Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHP
 
Présentation de Thèse
Présentation de ThèsePrésentation de Thèse
Présentation de Thèse
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 

Andere mochten auch

Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...rim elaire
 
SQL Server et la sécurité
SQL Server et la sécuritéSQL Server et la sécurité
SQL Server et la sécuritéDavid Barbarin
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)Alphorm
 
Présentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctionsPrésentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctionsFrédéric Sagez
 
Présentation Oracle DataBase 11g
Présentation Oracle DataBase 11gPrésentation Oracle DataBase 11g
Présentation Oracle DataBase 11gCynapsys It Hotspot
 
Bases de données réparties
Bases de données répartiesBases de données réparties
Bases de données répartiesAbdelouahed Abdou
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratiqueAbdelouahed Abdou
 
Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...
Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...
Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...Hugo Vallet
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oraclewebreaker
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQLAlphorm
 
Journées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePointJournées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePointBenoit Jester
 
Sauvegardes de base de données
Sauvegardes de base de donnéesSauvegardes de base de données
Sauvegardes de base de donnéesSoukaina Boujadi
 
Soutenance mémoire de fin d'études
Soutenance mémoire de fin d'étudesSoutenance mémoire de fin d'études
Soutenance mémoire de fin d'étudesFabrice HAUHOUOT
 

Andere mochten auch (19)

Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...
 
SQL Server et la sécurité
SQL Server et la sécuritéSQL Server et la sécurité
SQL Server et la sécurité
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
 
Présentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctionsPrésentation de l'Architecture de Développement du projet TRANS@ctions
Présentation de l'Architecture de Développement du projet TRANS@ctions
 
Sql
SqlSql
Sql
 
Présentation Oracle DataBase 11g
Présentation Oracle DataBase 11gPrésentation Oracle DataBase 11g
Présentation Oracle DataBase 11g
 
Bases de données réparties
Bases de données répartiesBases de données réparties
Bases de données réparties
 
Bases de données réparties par la pratique
Bases de données réparties par la pratiqueBases de données réparties par la pratique
Bases de données réparties par la pratique
 
Oracle Essentials Oracle Database 11g
Oracle Essentials   Oracle Database 11gOracle Essentials   Oracle Database 11g
Oracle Essentials Oracle Database 11g
 
11g R2 Live Part 1
11g R2 Live Part 111g R2 Live Part 1
11g R2 Live Part 1
 
Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...
Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...
Fiche de données de sécurité France Liquide de Frein Marchal DOT4 Basse Visco...
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracle
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
 
Le sql pour les nuls
Le sql pour les nulsLe sql pour les nuls
Le sql pour les nuls
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQL
 
Journées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePointJournées SQL Server - Optimisation SQL Server pour SharePoint
Journées SQL Server - Optimisation SQL Server pour SharePoint
 
Sauvegardes de base de données
Sauvegardes de base de donnéesSauvegardes de base de données
Sauvegardes de base de données
 
Soutenance mémoire de fin d'études
Soutenance mémoire de fin d'étudesSoutenance mémoire de fin d'études
Soutenance mémoire de fin d'études
 

Ähnlich wie PL/Sql et Sécurité des bases de données

Plsql triggers
Plsql triggersPlsql triggers
Plsql triggersAz Za
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et TriggersAffinitic
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfRihabBENLAMINE
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryneuros
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôleAbdelouahed Abdou
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdfImaneZoubir1
 
Plsql
PlsqlPlsql
PlsqlAz Za
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
"Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?""Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?"o2sources
 
7 Programmation PL-SQL Oracle.pdf
7 Programmation PL-SQL Oracle.pdf7 Programmation PL-SQL Oracle.pdf
7 Programmation PL-SQL Oracle.pdfuser2023moi
 
05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...Hamza SAID
 

Ähnlich wie PL/Sql et Sécurité des bases de données (20)

oracle : le PL-SQL
oracle : le PL-SQLoracle : le PL-SQL
oracle : le PL-SQL
 
Plsql triggers
Plsql triggersPlsql triggers
Plsql triggers
 
cours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhouminecours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhoumine
 
Plsql2
Plsql2Plsql2
Plsql2
 
Plpython et Triggers
Plpython et TriggersPlpython et Triggers
Plpython et Triggers
 
PLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdfPLSQL-Complements-4p.pdf
PLSQL-Complements-4p.pdf
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôle
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Sql
SqlSql
Sql
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Plsql
PlsqlPlsql
Plsql
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Plsql
PlsqlPlsql
Plsql
 
Interfaces controlesbasededonné
Interfaces controlesbasededonnéInterfaces controlesbasededonné
Interfaces controlesbasededonné
 
Les03.ppt
Les03.pptLes03.ppt
Les03.ppt
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
 
"Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?""Un module Prestashop, comment ca marche?"
"Un module Prestashop, comment ca marche?"
 
7 Programmation PL-SQL Oracle.pdf
7 Programmation PL-SQL Oracle.pdf7 Programmation PL-SQL Oracle.pdf
7 Programmation PL-SQL Oracle.pdf
 
05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...
 

PL/Sql et Sécurité des bases de données

  • 1. PL/SQL et Sécurité de la base de données Préparé par: Meryem MOUSSAMI Wafaa HARKATI Salma GHAOUTA Encadré par: M.HANOUNE
  • 2. le langage PL/SQL Administration de base de données
  • 3. Plan • Introduction • Langage PL/SQL • Les objets PL/SQL • Options de configuration PL/SQL • conclusion
  • 4. Le langage PL/SQL est un langage de programmation de quatrième génération, propriétaire Oracle, qui fournit des extensions procédurales du langage SQL. Il offre un environnement de programmation commun pour les bases de données et applications Oracle, quel que soit le système d'exploitation ou la plate-forme matérielle. Il permet de : définir un ensemble de commandes contenues dans ce que l'on appelle un "bloc" PL/SQL. Un bloc PL/SQL peut lui-même contenir des sous-blocs. Le PL/SQL peut être utilisé sous 3 formes : un bloc de code, exécuté comme une commande SQL. un fichier de commande PL/SQL un programme stocké Définition : Procedural Language / Structured Query Language
  • 5. Structured’unblocPL Comment créer un bloc PL/SQL Syntaxe : Partie DECLARE et EXCEPTION sont optionnel DECLARE Variables, curseurs, exceptions définies BEGIN Instructions SQL & PL/SQL EXCEPTION Action à réaliser quand une exception est levée END; /
  • 7. Administrer les objets PL/SQL Un DBA doit pouvoir: • Identifier les Objets PL/SQL • Recommander l’utilisation appropriée du langage PL/SQL • Charger les objets PL/SQL dans la base de données • Assister les développeurs PL/SQL dans la résolution des problèmes
  • 8. Objets PL/SQL Il existe de nombreux types d’objet de base de données PL/SQL: • Fonction • Procédure • Package • Corps de Package • Déclencheur
  • 10.  Une fonction est un bloc PL/SQL nommé qui renvoie obligatoirement une valeur.  Une fonction peut être stockée dans la base de données, comme objet de base de données, en vue d'exécutions répétées.  Une fonction peut être appelée en tant que partie d'une expression Définition
  • 11. Structured’unefonction Comment créer une fonction Syntaxe : CREATE [OR REPLACE] FUNCTION function_name (parameter1 [mode1] datatype1, parameter2 [mode2] datatype2,. . .) RETURN datatype IS PL/SQL Bloc; Le bloc PL/SQL doit y avoir au moins une instruction return
  • 12. Exemple : CREATE OR REPLACE FUNCTION get_sal (v_id IN emp.empno%TYPE) RETURN NUMBER IS v_salary emp.sal%TYPE :=0; BEGIN SELECT sal INTO v_salary FROM emp WHERE empno = v_id; RETURN (v_salary); END get_sal; /
  • 13.  Une fonction peut comporter un ou plusieurs paramètres IN, mais ne doit retourner qu'une seule valeur.  Le code d'une fonction PL/SQL doit contenir une instruction RETURN. A noter
  • 14.  Elle accepte des paramètres en entrée (listes des arguments).  Une procédure est un bloc PL/SQL nommé qui effectue une action spécifique. Définition Procédure
  • 15. Syntaxepourlacréationd’une procédure Comment est ce qu’on peut créer une procédure ? La Syntaxe : Une procédure est appelée à l’aide de la commande CALL . CREATE [OR REPLACE] PROCEDURE procedure_name ( parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, … ) IS | AS Block PL/SQL;
  • 16. CREATE OR REPLACE PROCEDURE Augmentation (v_Numemp IN numéro de l'employé EMP.empno%Type , v_Pourcent IN NUMBER ) pourcentage d’augmentation Is BEGIN -- augmentation de l'employé Update EMP Set sal = sal+ sal * v_Pourcent Where empno = v_Numemp ; END; / Exemple
  • 17.  D'une façon générale, les procédures ne devraient pas exécuter des instructions de fin de transaction (COMMIT, ROLLBACK, Ordre DDL) .  La décision d'enregistrer ou annuler la transaction en cours relève du programme appelant. A noter
  • 18.  Un paquetage/package est un ensemble de procédures et fonctions regroupées dans un objet nommé. Par exemple : Le paquetage Oracle DBMS_LOB. Le paquetage UTL_FILE. Définition Package
  • 19. Un paquetage est organisé en deux parties distinctes :  Une partie spécification qui permet de spécifier à la fois les fonctions et procédures publiques ainsi que les déclarations des types, variables, constantes, exceptions et curseurs utilisés dans le paquetage et visibles par le programme appelant.  Une partie corps qui contient les blocs et les spécifications de tous les objets publics listés dans la partie spécification. Cette partie peut inclure des objets qui ne sont pas listés dans la partie spécification, et sont donc privés. Cette partie peut également contenir du code qui sera exécuté à chaque invocation du paquetage par l'utilisateur. Définition
  • 21. Syntaxepourlacréationd’un package Comment est ce qu’on peut créer un package ? La Syntaxe pour la spécification: CREATE [OR REPLACE] PACKAGE nom_package As Définition des fonctions , procédure … End nom_package ; / Exemple : CREATE PACKAGE clients AS PROCEDURE insere_client (no INTEGER, nom VARCHAR2, ...); PROCEDURE supprime_client (no INTEGER); ... END;
  • 23. Syntaxepourlacréationd’un package(suite) Comment est ce qu’on peut créer un package ? La Syntaxe pour le corps: CREATE [OR REPLACE] PACKAGE BODY nom_package As Définition des fonctions BEGIN … END; Définition procédure BEGIN … END; ….. End nom_package ; /
  • 25. Les avantages de pl/sql package Une meilleur performance Information en cachette Une conception facile de l’application La modularité
  • 26. Les packages PL/SQL intégrés fournis avec Oracle Database 10g permettent l'accès à des fonctionnalités de base de données . Ils comprennent également de nombreux utilitaires d'administration et de maintenance. Packages intégrés
  • 27. • Les packages utilisés par un administrateur dépendent du type d'application que la base de données exécute. • Voici quelques-uns des packages d'administration et de maintenance les plus courants
  • 28. Le package PL/SQL intégrés • DBMS_STATS permet de collecter, modifier, consulter, exporter et supprimer les statistiques relatives à vos tables. • DBMS_TTS : validation des tablespaces transportables . • DBMS_SESSION : accès PL/SQL aux instructions ALTER SESSION et SET ROLE
  • 29. Le package DBMS_OUTPUT  Get_line (ligne out varchar2, statut out integer) : extrait une ligne du tampon de sortie.  Get_lines (lignes out varchar2, n in out integer) : extrait à partir du tampon de sortie un tableau de n lignes. • New_line : place un marqueur de fin de ligne dans le tampon de sortie. • Put (variable|conatante in {varchar2|number|date} : combinaison de put et new_line. • • Enable (taille tampon in integer default 2000) : permet de mettre en route le mode trace dans une procédure ou une fonction. • Disable : permet de désactiver le mode trace dans une procédure ou une fonction. Ce package permet de stocker de l’information dans un tampon avec les procédures PUT ou PUT_LINE. Il est possible de récupérer l’information grâce aux procédures GET et GET_LINE
  • 30. Les déclencheurs • Un déclencheur est un bloc PL/SQL associé à une vue ou une table, qui s'exécutera lorsqu'une instruction du langage de manipulation de données (DML) sera exécutée • Il est utilisé pour implémenter des règles de gestion complexes et pour étendre les règles d’intégrité référentielle associée à table lors de leur création de cette dernière
  • 31. Caractéristiques d'un Trigger • Le traitement est exprimé en PL/SQL. Il peut lui-même faire appel à des procédures et des fonctions écrites en PL ou Java. • Son code est stocké dans la base de données. • Un déclencheur peut être actif ou non • Si un déclencheur aboutit, la transaction qui l'a appelé peut se poursuivre • Le déclenchement peut se propager en cascade, tout en respectant le principe d'atomicité d'une transaction OPEN_CURSORS • Un déclencheur s'exécute dans le cadre d'une transaction. Il ne peut donc pas contenir d'instruction COMMIT ou ROLLBACK ou toute instruction générant une fin de transaction implicite (ordre DDL)
  • 32. Syntaxe pour la création d’un trigger Create or replace trigger <trigger_name> before/after insert or update of <colonne1>, <colonne2>, ... or delete on <tab_name> [for each row [when (<trigger_condition>)]] [declare types, constantes ou variables ´eventuelles] begin texte du trigger end; Comment est ce qu’on peut créer un trigger ?
  • 33. Exemple pour la création d’un trigger CREATE OR REPLACE TRIGGER myFirstTrigger 2 BEFORE UPDATE OF ename ON emp 3 FOR EACH ROW 4 BEGIN 5 DBMS_OUTPUT.ENABLE(20000); 6 DBMS_OUTPUT.PUT_LINE(:NEW.ENAME|| ‘ ‘ ||:OLD.ENAME); 7 EXCEPTION 8 WHEN OTHERS THEN 9 DBMS_OUTPUT.PUT_LINE(SQLERRM); 10 END; Comment est ce qu’on peut créer un trigger ?
  • 34. Résolution multi-événements • Un Trigger peut répondre à plusieurs événements. • Dans ce cas, il est possible d'utiliser les prédicats intégrés INSERTING, UPDATING ou DELETING pour exécuter une séquence particulière du traitement en fonction du type d'événement
  • 35. Exemple pour la création d’un trigger CREATE OR REPLACE TRIGGER myFirstTrigger AFTER UPDATE OR INSERT ON emp FOR EACH ROW BEGIN DBMS_OUTPUT.ENABLE(20000); IF INSERTING THEN DBMS_OUTPUT.PUT_LINE(' INSERT '); END IF; IF UPDATING('ENAME') THEN DBMS_OUTPUT.PUT_LINE(' UPDATED ' || :NEW.ENAME); END IF; END; / Comment est ce qu’on peut créer un trigger ?
  • 36. Maintenance des déclencheurs • Activation/désactivation d'un déclencheur: ALTER TRIGGER nom_déclencheur DISABLE ALTER TRIGGER nom_déclencheur ENABLE ALTER TABLE nom_table DISABLE ALL TRIGGERS ALTER TABLE nom_table ENABLE ALL TRIGGERS
  • 37. Maintenance des déclencheurs (Suite) • Les informations sur les déclencheurs sont visibles à travers les vues du dictionnaire de données  USER_TRIGGERS pour les déclencheurs appartenant au schéma.  ALL_TRIGGERS pour les déclencheurs appartenant aux schémas accessibles  DBA_TRIGGERS pour les déclencheurs appartenant à tous les schémas . La colonne BASE_OBJECT_TYPE permet de savoir si le déclencheur est basé sur une table, une vue, un schéma ou la totalité de la base La colonne TRIGGER_TYPE permet de savoir s'il s'agit d'un déclencheur BEFORE, AFTER ou INSTEAD OF,si son mode est FOR EACH ROW ou non s'il s'agit d'un déclencheur évènementiel ou non La colonne TRIGGERING_EVENT permet de connaître l'événement concerné par le déclencheur La colonne TRIGGER_BODY contient le code du bloc PL/SQL
  • 38. Options de configuration PL/sql • Certaines règles devront être mise en place et/ou avancées pour donner aux développeurs des opportunités de production, et de ce fait des meilleures performances. • Pour cela, la base de données devra prendre en compte certaines procédure PL/SQL: • - PLSQL_WARNING • - PLSQL_DEBUG • - PLSQL_OPTIMIZE_MODE • - PLSQL_CODE_TYPE
  • 39. Options de configuration PL/sql • PL/SQL gestion des erreurs en Oracle 10g permet d’opter pour un code propre sans bug et sans erreur. En général on rend DISABLE cette gestion en production. ALTER SYSTEM SET plsql_warnings= ‘DISABLE :ALL’ SCOPE=BOTH ; • PLSQL debug interprète en incluant les données de débug. En général on rend DISABLE cette gestion en production. ALTER SYSTEM SET plsql_debug=FALSE SCOPE=BOTH ; PLSQL_OPTIMIZE_MODE introduit en 10g, pour l’activer : ALTER SYSTEM SET plsql_optimize_mode=2 SCOPE=BOTH ; Le paramètre PLSQL_CODE_TYPE définit si le compilateur PL/SQL interprète le code où utilise le code natif machine
  • 40. FIN
  • 41. Plan • Introduction • Langage PL/SQL • Les objets PL/SQL • Options de configuration PL/SQL • conclusion
  • 42. Sécurité de la base de donnée Administration de base de données
  • 43. Plan • Introduction • Appliquer le principe du moindre privilège • Désactiver l’authentification à distance par le système • Implémenter les fonctionnalités standards de sécurité du mot de passe • Vérification des mots de passe • Les outils et options d’audit • Affichage des résultats de l’audit • Audit détaillé(FGA) • Stratégie d’audit détaillé • Mise à jour de sécurité • Conclusion
  • 45. Assurer la sécurité d’une BD c’est maintenir : la confidentialité l’intégrité et la disponibilité des données. Sécurisation d’une BD : objectifs
  • 46. Objectif: Protéger le dictionnaire de données Révoquer les privilèges non nécessaires de PUBLIC Limiter les répertoires accessibles par les utilisateurs Limiter les utilisateurs dotés de privilèges d’administration Limiter l’authentification à distance auprès de la base de données Appliquer le Principe De moindre privilège
  • 47. Protégez le dictionnaire de données en prenant soin d’affecter la valeur FALSE au paramètre d’initialisation suivant : 07_DICTIONARY_ACCESSIBILITY=FALSE Cette configuration empêche les utilisateurs dotés du privilège système ANY TABLE d’accéder aux tables de base du dictionnaire de données. La valeur FALSE empêche également l’utilisateur SYS de se connecter sous un autre compte que SYSDBA. Protéger le dictionnaire de donnée
  • 48.  Révoquer tous les privilèges et rôles non nécessaire du groupe d’utilisateurs PUBLIC du serveur de base de données  De nombreux packages intégrés accordent le privilège EXECUTE à PUBLIC  Le privilège d’ exécution sur les packages suivants doit toujours être révoqué de PUBLIC:  UTL_TCP UTL_SMTP UTL_HTTP  UTL_FILE  DBMS_OBFUSCATION et DBMS_CRYPTO Révoquer les privilèges non nécessaires de PUBLIC
  • 49.  Les commandes sont les suivantes : -REVOKE EXECUTE ON utl_tcp FROM PUBLIC; -REVOKE EXECUTE ON utl_smtp FROM PUBLIC; -REVOKE EXECUTE ON utl_http FROM PUBLIC; -REVOKE EXECUTE ON utl_file FROM PUBLIC; -REVOKE EXECUTE ON dbms_obfuscation FROM PUBLIC; -REVOKE EXECUTE ON dbms_crypto FROM PUBLIC; Exemple
  • 50. UTL_FILE_DIR est le paramètre de configuration qui: Désigne les répertoires disponibles pour les E/S de fichiers PL/SQL Permet aux utilisateurs de la base de lire ou d’écrire dans ces répertoires, sur le serveur de base de données Limiter les répertoires du système d’exploitation accessibles par l’utilisateur
  • 51.
  • 52.
  • 53.
  • 54.
  • 55. Limite les types de privilège suivants: Octroi des privilèges système et objet Connexions dotées des privilèges SYS: SYSDBA et SYSOPER Privilèges de type DBA, tels que DROP ANY TABLE Permissions lors de l’exécution Limiter les utilisateurs dotés de privilèges d’administration
  • 56. Exemple: Répertorier tous les utilisateurs avec le rôle DBA • Pour déterminer les utilisateurs auxquels le privilège SYSDBA ou SYSOPER a été accordé, on utilise l’interrogation suivante :
  • 57. Désactiver l’authentification à distance par le système d’exploitation • L’authentification à distance ne doit être utilisée que lorsque vous faites confiance à tous les clients pour authentifier de manière appropriés les utilisateurs • Processus d’authentification à distance:  L’utilisateur de base de données est authentifié en externe  Le système distant authentifie l’utilisateur  L’utilisateur se connecte à la base de données sans authentification complémentaire Pour la désactiver, vérifier que la valeur par défaut est affectée au paramètre d’initialisation d’instance suivant : REMONTE_OS_AUTHENT =FALSE
  • 58. Gérer les comptes utilisateur par défaut • L’assistant DBCA provoque l’expiration et le verrouillage de tous les comptes, à l’exception des suivants:  SYS SYSTEM SYSMAN DBSNMP Dans le cas d’une base de données crée manuellement, vous devez procéder au verrouillage et à l’expiration de tous les comptes non utilisés
  • 59. Implémenter des fonctionnalités standard de sécurité des mots de passe
  • 60. Verrouillage des comptes suite à un mot de passe erroné FAILED_LOGIN_ATTEMPTS : Ce paramètre permet de définir le nombre maximal de tentatives de connexion. PASSWORD_LOCK_TIME : Ce paramètre permettra de définir la durée de verrouillage du compte utilisateur après avoir bloqué le compte avec le paramètre FAILED_LOGIN_ATTEMPTS
  • 61. Expiration et durée de vie des mots de passe PASSWORD_LIFE_TIME : Ce paramètre permet de définir la durée d'utilisation du même mot de passe. PASSWORD_GRACE_TIME :Ce paramètre permet de définir en jours le temps de GRACE qui vous sera alloué pour changer votre mot de passe après son expiration.
  • 62. Historique des mots de passe PASSWORD_REUSE_TIME : Ce paramètre défini en nombre de jours, permet de définir le délai entre deux utilisations du même mot de passe. PASSWORD_REUSE_MAX : Ce paramètre permet de définir le nombre de fois de changements du mot de passe requis avant réutilisation du mot de passe actuel.
  • 63. Vérification des mots de passe Si les fonctions sont personnalisés , elles doivent utiliser la spécification suivante pour déclarer les variables d’entrée : Function_name ( userid_param IN VARCHAR2 , passwrd_param IN VARCHAR2, old_passwrd_param IN VARCHAR2) Return BOOLEAN Les fonctions de vérification des mots de passe doivent :  Appartenir à l’utilisateur SYS.  Renvoyer une valeur booléenne.
  • 64. Fonction de vérification de mots de passe  Il s’agit de la fonction « VERIFY_FUNCTION ».  Elle applique les restrictions suivantes: i. La longueur minimale est de 4 caractères. ii. Le mot de passe ne peut pas être identique au nom d’utilisateur. iii. Le mot de passe doit comporter au moins un caractère alphabétique , un chiffre et un caractère spécial. iv. La différence entre le mot de passe et le précédent doit être d’au moins 3 lettres.
  • 65. Créer un profil de mot de passe
  • 66. Affecter des utilisateurs à un profil de mot de passe
  • 67. Surveiller les activités suspectes  La surveillance doit faire partie intégrante des procédures de sécurité.  L’administrateur peut auditer toutes les actions qui ont eu lieu dans la base de données.  L’audit doit être ciblé de telle sorte que seuls les événements présentant un intérêt soient capturés.
  • 68. Les types d’Audit Oracledatabase10goffre L’audit de base de données standard L’audit basé sur les données L’audit détaillé
  • 69. Les types d’Audit(1) L’audit de base de données standard Capture plusieurs informations sur un événement audité: la survenue de l’événement, l’instant auquel il s’est produit, l’utilisateur qu’il a provoqué, ainsi que l’ordinateur client que l’utilisateur employait lors de l’événement . Il est activé via le paramètre AUDIT_TRALL
  • 70. Audit de base de données standard
  • 71. Audit de base de données standard (Evénements audités) Evénement de connexion Utilisation des privilèges système Utilisation des privilèges objet Utilisation d’instruction SQL
  • 72. Afficher les options d’audit ALL_DEF_AUDIT_OPTS ALL_STMT_AUDIT_OPTS ALL_PRIV_AUDIT_OPTS ALL_OBJ_AUDIT_OPTS
  • 73. Afficher les résultats de l’audit DBA_AUDIT_TRALL DBA_AUDIT_EXISTS DBA_AUDIT_OBJECT DBA_AUDIT_SESSION DBA_AUDIT_STATEMENT Toutes les entées de la trace d’audit Enregistrements concernant AUDIT EXISTS/NOT EXISTS Enregis. concernant les objets de schéma Toutes les entées de connexion et déconnexion Enregis. D’audit des instructions
  • 74. Les types d’Audit(2) L’audit basé sur les données Audite les modifications apportées aux données. Il capture non seulement la survenue de l’événement audité, mais également les valeurs insérées, mises à jours ou supprimées. Il est implémenté par l’intermédiaire de triggers de base de données
  • 75. Audit basé sur les données » L’audit de base de données enregistre le fait que des opérations d’insertion, de mise à jour ou de suppression ont été effectuées sur les objets audités, mais il ne capture pas les valeurs proprement dites qui ont changé. » L’audit basé sur les données étend l’audit de base de données en capturant les valeurs modifiées. » L’audit basé sur les données utilise des déclencheurs de base de données. » Il a généralement un impact plus important que l’audit de base de données standard sur les performances, car le code du déclencheur d’audit doit être exécuté chaque fois que l’opération d’insertion, de mise à jour ou de suppression a lieu. » Le degré de dégradation dépend de l’efficacité du code du déclencheur.
  • 76. Audit basé sur les données
  • 77. Les types d’Audit(3) L’audit détaillé Capturer les instructions SQL qui ont été exécutées
  • 78. Audit détaillé (FGA)  Surveille l’accès aux données en fonction du contenu  Audite les opérations SELECT ou INSERT, UPDATE,DELETE  Peut être lié à une table ou à une vue  Peut exécuter une procédure  Est administré via le package DBMS_FGA
  • 79. L'audit détaillé (FGA) • Les options d'audit détaillé peuvent être ciblées par colonnes individuelles d'une table ou d'une vue et peuvent même être conditionnelles • Contrairement à l'audit basé sur les données l'audit détaillé ne nécessite pas l'utilisation de déclencheurs de base de données et son impact sur les performances est similaire à celui de l'audit de base de données standard. • L'administrateur utilise le package DBMS_FGA PL/SQL pour créer une stratégie d'audit sur la table ou la vue cible.
  • 81. Package DBMS_FGA • Sous-programme • description Le package DBMS_FGA est l'outil d'administration des fonctions d'audit détaillé. Des privilèges d'exécution sur DBMS_FGA sont nécessaires pour administrer les stratégies d'audit. Etant donné que la trace d'audit détaillé peut contenir des informations sensibles, les privilèges d'exécution sur ce package doivent être réservés aux seuls administrateurs.
  • 82. Package DBMS_FGA Sous programme Description ADD_POLICY Crée une stratégie d’audit à l’aide du prédicat fourni en tant que condition d’audit DROP_POLICY Supprime une stratégie d’audit ENAB LE_POLICY Active une stratégie d’audit DISABLE_POLICY Désactive une stratégie d’audit
  • 83. Activer et désactiver une stratégie d’audit détaillé • Désactiver une stratégie: Dbms_fga.disable_policy( object_schema =>’hr’, object_name =>’employee’, policy_name =>’audit_emps_salary’);
  • 84. Activer et désactiver une stratégie d’audit détaillé • activer une stratégie: Dbms_fga.enable_policy( object_schema =>’hr’, object_name =>’employee’, policy_name =>’audit_emps_salary’);
  • 85. Supprimer une stratégie d’audit détaillé • Supprimer une stratégie: Dbms_fga.drop_policy( object_schema =>’hr’, object_name =>’employee’, policy_name =>’audit_emps_salary’);
  • 86. Déclencher des événements d’audit: • Les instructions SQL suivantes provoquent un audit SELECT Count(*) FROM hr.employee WHERE departement_id=10 And Salary>v_salary SELECT Salary FROM hr.employee
  • 87. Déclencher des événements d’audit: • L’ instruction SQL suivante ne provoque pas d’audit: SELECT last_name FROM hr.employee WHERE departement_id=10 ;
  • 88. VUES DE DICTIONNAIRE DE DONNÉES: 88 Nom de la vue Description DBA_FGA_AUDIT_TRAIL Tous les événements d’audit détaillé ALL_AUDIT_POLICIES Toutes les stratégies d’audit détaillé pour les objets auxquels l’utilisateur actuel peut accéder DBA_AUDIT_POLICIES Toutes les stratégies d’audit détaillé dans la base de données USER_AUDIT_POLICIES Toutes les stratégies d’audit détaillé pour les objets du schéma de l’utilisateur actuel
  • 89. Règles relatives à l’audit détaillé:  Pour auditer toutes les instructions, utilisez une condition null. 89  Si vous tentez d’ajouter une stratégie qui existe déjà, l’erreur ORA-28101 est générée.  La table ou la vue auditée doit déjà exister lorsque vous créez la stratégie.  Si la syntaxe de la condition d’audit n’est pas valide, une erreur ORA-28112 est générée lors de l’accès à l’objet audité.  Si la colonne d’audit n’existe pas dans la table, aucune ligne n’est auditée.  Si le gestionnaire d’événement n’existe pas, aucune erreur n’est renvoyés et les enregistrements d’audit sont quand même crées.
  • 90. Auditer les utilisateurs SYSDBA et SYSOPER: Les utilisateurs dotés des privilèges SYSDBA ou SYSOPER peuvent se connecter alors que la base de données est fermée. 90  La trace d’audit doit être stockée à l’extérieur de la base de données.  La connexion en tant que SYSDBA ou SYSOPER est toujours auditée.  Activer l’audit complémentaire des actions SYSDBA ou SYSOPER avec audit_eye_opertaions.  Contrôlez l’emplacement de la trace d’audit avec audit_file_dest. l’emplacement par défaut est le suivant: Journal des événements (windows). $ORACLE_BCME/rdbms/audit(UNIX/Linu).
  • 91. Mises à jour de sécurité  Oracle publie les alertes de sécurité sur le web Oracle Technology Network, à l’adresse suivante : http://otn.oracle.com/deploy/security/alerts.htm  Les administrateurs de base de données et les développeurs Oracle peuvent également s’abonner afin d’ être informés par e-mail des alertes de sécurité, en cliquant sur le lien « Subscribe to Security Alerts Here ». 91
  • 92. Récapitulation • Appliquer le principe du moindre privilège • Désactiver l’authentification à distance par le système • Implémenter les fonctionnalités standards de sécurité du mot de passe • Vérification des mots de passe • Les outils et options d’audit • Affichage des résultats de l’audit • Audit détaillé(FGA) • Stratégie d’audit détaillé • Mise à jour de sécurité
  • 93. FIN

Hinweis der Redaktion

  1. Detailler les 2 exemples de package
  2. La déclaration de la partie spécification d'un paquetage s'effectue avec l'instruction CREATE [OR REPLACE] PACKAGE Celle de la partie corps avec l'instruction CREATE [OR REPLACE] PACKAGE BODY
  3. La déclaration de la partie spécification d'un paquetage s'effectue avec l'instruction CREATE [OR REPLACE] PACKAGE Celle de la partie corps avec l'instruction CREATE [OR REPLACE] PACKAGE BODY
  4. Detailler les 2 exemples de package
  5. La déclaration de la partie spécification d'un paquetage s'effectue avec l'instruction CREATE [OR REPLACE] PACKAGE Celle de la partie corps avec l'instruction CREATE [OR REPLACE] PACKAGE BODY
  6. BODY
  7. BODY
  8. Il est possible de désactiver un déclencheur avec la commande suivante et de l'activer avec la commande suivante De la même façon, on peut désactiver tous les déclencheurs définis sur une table et de les activer avec la commande suivante
  9. Detailler les 2 exemples de package
  10. Detailler les 2 exemples de package
  11. Introduire Les bases de données stockent des données extrêmement précieuses et confidentielles. Un nombre croissant de conformités réglementaires oblige les entreprises à auditer l'accès aux données sensibles et à les protéger contre les attaques et les comportements malveillants. Ou bien La Base de Données est le coeur de l'entreprise. C’est là que résident les actifs immatériels qui sont la base de l'activité : données financières, informations client, fichiers RH ... La valeur de ces données en fait une cible évidente et une attaque peut impacter l'entreprise et dégrader son image, voire entraîner la responsabilité personnelle du responsable des traitements 
  12. Donner une petite definition sur la securité et l importance des data des entreprises !!
  13. Les options d’audit selon les evemenment audités sui sont 4  afficher dipo suivant
  14. L’audit basé sur les données ne doit être utilisé que lorsque les informations capturées par l’audit de base d edonnées standard est insuffisant
  15. Les options d’audit selon les evemenment audités sui sont 4  afficher dipo suivant
  16. L'audit détaillé (FGA) permet de capturer les informations sur l'instruction ayant provoqué une opération.
  17. de sorte que les informations d'audit ne soient capturées que si certaines conditions définies par l'administrateur sont réunies.
  18. Mises à jour de sécurité Les alertes de sécurité Oracle contiennent une brève description de la vulnérabilité, une évaluation du risque et du degré d'exposition associés à la vulnérabilité, ainsi que les solutions ou patches applicables. Oracle indique également la personne ou l'organisation nous ayant informé de la vulnérabilité. Les alertes de sécurité sont publiées sur le site Web Oracle Technology Network et sur OracleMetaLink (MetaLink). Bien que les alertes de sécurité puissent être consultées librement, seuls les clients disposant d'un numéro CSI (Customer Support Identification) peuvent télécharger les patches. Oracle apprécie votre coopération concernant la sécurité de ses produits et permet une notification rapide, complète et confidentielle des vulnérabilités potentielles. Si vous découvrez une telle vulnérabilité concernant un produit Oracle, merci de nous en informer en soumettant une demande de service via MetaLink ou en envoyant un message électronique à l'adresse secalert_us@oracle.com.