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...
Structured’unblocPL
Comment créer un bloc PL/SQL
Syntaxe :
Partie DECLARE et
EXCEPTION sont
optionnel
DECLARE
Variables, c...
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 d...
Objets PL/SQL
Il existe de nombreux types d’objet de base de
données PL/SQL:
• Fonction
• Procédure
• Package
• Corps de P...
Les fonctions
 Une fonction est un bloc PL/SQL nommé qui
renvoie obligatoirement une valeur.
 Une fonction peut être stockée dans la b...
Structured’unefonction
Comment créer une fonction
Syntaxe :
CREATE [OR REPLACE] FUNCTION function_name
(parameter1 [mode1]...
Exemple :
CREATE OR REPLACE FUNCTION get_sal (v_id IN emp.empno%TYPE)
RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SE...
 Une fonction peut comporter un ou plusieurs paramètres IN, mais ne doit
retourner qu'une seule valeur.
 Le code d'une f...
 Elle accepte des paramètres en
entrée (listes des arguments).
 Une procédure est un bloc
PL/SQL nommé qui effectue une
...
Syntaxepourlacréationd’une
procédure Comment est ce qu’on peut créer une
procédure ?
La Syntaxe :
Une procédure est
appelé...
CREATE OR REPLACE PROCEDURE Augmentation (v_Numemp IN
numéro de l'employé
EMP.empno%Type , v_Pourcent IN NUMBER )
pourcent...
 D'une façon générale, les procédures ne devraient pas exécuter des
instructions de fin de transaction (COMMIT, ROLLBACK,...
 Un paquetage/package est un ensemble de procédures et
fonctions regroupées dans un objet nommé. Par exemple :
Le paqueta...
Un paquetage est organisé en deux parties distinctes :
 Une partie spécification
qui permet de spécifier à la fois les fo...
Package
Syntaxepourlacréationd’un
package Comment est ce qu’on peut créer un package ?
La Syntaxe pour la spécification:
CREATE [O...
Package
Syntaxepourlacréationd’un
package(suite) Comment est ce qu’on peut créer un package ?
La Syntaxe pour le corps:
CREATE [OR...
Corps du package
Les avantages de pl/sql package
Une meilleur performance
Information en cachette
Une conception facile de l’application
La...
Les packages PL/SQL intégrés fournis avec Oracle Database 10g
permettent l'accès à des fonctionnalités de base de données ...
• Les packages utilisés par un administrateur
dépendent du type d'application que la base de
données exécute.
• Voici quel...
Le package PL/SQL intégrés
• DBMS_STATS permet de collecter, modifier, consulter,
exporter et supprimer les statistiques r...
Le package DBMS_OUTPUT
 Get_line (ligne out varchar2, statut
out integer) : extrait une ligne du
tampon de sortie.
 Get_...
Les déclencheurs
• Un déclencheur est un bloc PL/SQL associé à une vue
ou une table, qui s'exécutera lorsqu'une instructio...
Caractéristiques d'un Trigger
• Le traitement est exprimé en PL/SQL. Il peut lui-même faire appel à des procédures
et des ...
Syntaxe pour la création d’un trigger
Create or replace trigger <trigger_name>
before/after
insert or update of <colonne1>...
Exemple pour la création d’un trigger
CREATE OR REPLACE TRIGGER myFirstTrigger
2 BEFORE UPDATE OF ename ON emp
3 FOR EACH ...
Résolution multi-événements
• Un Trigger peut répondre à plusieurs événements.
• Dans ce cas, il est possible d'utiliser l...
Exemple pour la création d’un trigger
CREATE OR REPLACE TRIGGER myFirstTrigger
AFTER UPDATE OR INSERT ON emp
FOR EACH ROW
...
Maintenance des déclencheurs
• Activation/désactivation d'un déclencheur:
ALTER TRIGGER nom_déclencheur DISABLE
ALTER TRIG...
Maintenance des déclencheurs
(Suite)
• Les informations sur les déclencheurs sont visibles à travers les vues du
dictionna...
Options de configuration PL/sql
• Certaines règles devront être mise en place et/ou
avancées pour donner aux développeurs ...
Options de configuration PL/sql
• PL/SQL gestion des erreurs en Oracle 10g permet d’opter pour un code propre
sans bug et ...
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...
Introduction
Assurer la sécurité d’une BD c’est maintenir :
la confidentialité
l’intégrité
et la disponibilité des données.
Sécurisa...
Objectif:
Protéger le dictionnaire de données
Révoquer les privilèges non nécessaires de PUBLIC
Limiter les répertoires...
Protégez le dictionnaire de données en prenant soin d’affecter la valeur
FALSE au paramètre d’initialisation suivant :
07_...
 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 ...
 Les commandes sont les suivantes :
-REVOKE EXECUTE ON utl_tcp FROM PUBLIC;
-REVOKE EXECUTE ON utl_smtp FROM PUBLIC;
-REV...
UTL_FILE_DIR est le paramètre de configuration qui:
Désigne les répertoires disponibles pour les E/S de fichiers PL/SQL
Pe...
Limite les types de privilège suivants:
Octroi des privilèges système et objet
Connexions dotées des privilèges SYS: SYS...
Exemple: Répertorier tous les utilisateurs avec le rôle
DBA
• Pour déterminer les utilisateurs auxquels le privilège
SYSDB...
Désactiver l’authentification à distance
par le système d’exploitation
• L’authentification à distance ne doit être utilis...
Gérer les comptes utilisateur par défaut
• L’assistant DBCA provoque l’expiration et le verrouillage
de tous les comptes, ...
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 m...
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...
Historique des mots de passe
PASSWORD_REUSE_TIME : Ce paramètre défini en
nombre de jours, permet de définir le délai entr...
Vérification des mots de passe
Si les fonctions sont personnalisés , elles doivent utiliser la spécification suivante
pour...
Fonction de vérification de mots de passe
 Il s’agit de la fonction « VERIFY_FUNCTION ».
 Elle applique les restrictions...
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’administ...
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
surven...
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
Utilisati...
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
...
Les types d’Audit(2)
L’audit basé sur les données
Audite les modifications
apportées aux données.
Il capture non seulement...
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 ...
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,
UPDA...
L'audit détaillé (FGA)
• Les options d'audit détaillé peuvent être ciblées par colonnes
individuelles d'une table ou d'une...
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ét...
Package DBMS_FGA
Sous programme Description
ADD_POLICY Crée une stratégie d’audit à l’aide du
prédicat fourni en tant que ...
Activer et désactiver une stratégie d’audit détaillé
• Désactiver une stratégie:
Dbms_fga.disable_policy(
object_schema =>...
Activer et désactiver une stratégie d’audit détaillé
• activer une stratégie:
Dbms_fga.enable_policy(
object_schema =>’hr’...
Supprimer une stratégie d’audit détaillé
• Supprimer une stratégie:
Dbms_fga.drop_policy(
object_schema =>’hr’,
object_nam...
Déclencher des événements d’audit:
• Les instructions SQL
suivantes provoquent
un audit
SELECT Count(*)
FROM hr.employee
W...
Déclencher des événements d’audit:
• L’ instruction SQL
suivante ne provoque
pas d’audit:
SELECT last_name
FROM hr.employe...
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...
Règles relatives à l’audit détaillé:
 Pour auditer toutes les instructions, utilisez une condition null.
89
 Si vous ten...
Auditer les utilisateurs SYSDBA et SYSOPER:
Les utilisateurs dotés des privilèges SYSDBA ou SYSOPER peuvent se connecter
a...
Mises à jour de sécurité
 Oracle publie les alertes de sécurité sur le web
Oracle Technology Network, à l’adresse suivant...
Récapitulation
• Appliquer le principe du moindre privilège
• Désactiver l’authentification à distance par le système
• Im...
FIN
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
PL/Sql et Sécurité des bases de données
Prochain SlideShare
Chargement dans…5
×

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

345 vues

Publié le

Deux présentations: 1) pl/sql 2) la sécurité des bases de données

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
345
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
53
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Detailler les 2 exemples de package
  • 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
  • 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
  • Detailler les 2 exemples de package
  • 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
  • BODY
  • BODY
  • 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
  • Detailler les 2 exemples de package
  • Detailler les 2 exemples de package
  • 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 
  • Donner une petite definition sur la securité et l importance des data des entreprises !!
  • Les options d’audit selon les evemenment audités sui sont 4  afficher dipo suivant
  • 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
  • Les options d’audit selon les evemenment audités sui sont 4  afficher dipo suivant
  • L'audit détaillé (FGA) permet de capturer les informations sur l'instruction ayant provoqué une opération.
  • de sorte que les informations d'audit ne
    soient capturées que si certaines conditions définies par l'administrateur sont réunies.
  • 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.
  • PL/Sql et Sécurité des bases de données

    1. 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. 2. le langage PL/SQL Administration de base de données
    3. 3. Plan • Introduction • Langage PL/SQL • Les objets PL/SQL • Options de configuration PL/SQL • conclusion
    4. 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. 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; /
    6. 6. Traitement d’un bloc PL/SQL
    7. 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. 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
    9. 9. Les fonctions
    10. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
    20. 20. Package
    21. 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;
    22. 22. Package
    23. 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 ; /
    24. 24. Corps du package
    25. 25. Les avantages de pl/sql package Une meilleur performance Information en cachette Une conception facile de l’application La modularité
    26. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 40. FIN
    41. 41. Plan • Introduction • Langage PL/SQL • Les objets PL/SQL • Options de configuration PL/SQL • conclusion
    42. 42. Sécurité de la base de donnée Administration de base de données
    43. 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
    44. 44. Introduction
    45. 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. 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. 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. 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. 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. 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. 51. 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
    52. 52. 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 :
    53. 53. 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
    54. 54. 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
    55. 55. Implémenter des fonctionnalités standard de sécurité des mots de passe
    56. 56. 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
    57. 57. 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.
    58. 58. 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.
    59. 59. 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.
    60. 60. 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.
    61. 61. Créer un profil de mot de passe
    62. 62. Affecter des utilisateurs à un profil de mot de passe
    63. 63. 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.
    64. 64. Les types d’Audit Oracledatabase10goffre L’audit de base de données standard L’audit basé sur les données L’audit détaillé
    65. 65. 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
    66. 66. Audit de base de données standard
    67. 67. 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
    68. 68. Afficher les options d’audit ALL_DEF_AUDIT_OPTS ALL_STMT_AUDIT_OPTS ALL_PRIV_AUDIT_OPTS ALL_OBJ_AUDIT_OPTS
    69. 69. 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
    70. 70. 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
    71. 71. 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.
    72. 72. Audit basé sur les données
    73. 73. Les types d’Audit(3) L’audit détaillé Capturer les instructions SQL qui ont été exécutées
    74. 74. 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
    75. 75. 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.
    76. 76. Stratégie d'audit détaillé
    77. 77. 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.
    78. 78. 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
    79. 79. 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’);
    80. 80. 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’);
    81. 81. 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’);
    82. 82. 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
    83. 83. 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 ;
    84. 84. 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
    85. 85. 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.
    86. 86. 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).
    87. 87. 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
    88. 88. 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é
    89. 89. FIN

    ×