Sécurité Oracle Gérard Schaller Gerard.Schaller@trivadis.com. Grifes 28 Octobre 2003



Documents pareils
Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Gestion des utilisateurs et de leurs droits

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Notes de cours : bases de données distribuées et repliquées

Le Langage SQL version Oracle

TP Contraintes - Triggers

Bases de données et sites WEB

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Sécuriser les bases de données ORACLE

WDpStats Procédure d installation

Sécurité de bout en bout Une solution complète pour protéger les données et prévenir les risques

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Gestion des droits d accès. Quelques exemples de vulnérabilité

Auto-évaluation Oracle: cours de base

SQL Historique

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Bases de données avancées

Les déclencheurs. Version 1.0. Grégory CASANOVA

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Cours Bases de données 2ème année IUT

Introduction à la sécurité sous Oracle

Historisation des données

Rootkits sous Oracle

Partie II Cours 3 (suite) : Sécurité de bases de données

Administration des bases de données. Jean-Yves Antoine

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

Configurer la supervision pour une base MS SQL Server Viadéis Services

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Bases de données et sites WEB Licence d informatique LI345

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite)

Bases de Données Avancées PL/SQL

Olivier Mondet

Devoir Data WareHouse

S8 - Sécurité IBM i : nouveautés 6.1 et 7.1

OpenPaaS Le réseau social d'entreprise

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Sécurité des applications web. Daniel Boteanu

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Optimisation SQL. Quelques règles de bases

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

La citadelle électronique séminaire du 14 mars 2002

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Cours Bases de données 2ème année IUT

Bases de Données relationnelles et leurs systèmes de Gestion

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Intégrité des données

CREATION WEB DYNAMIQUE

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Bases de Données Réparties

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Paginer les données côté serveur, mettre en cache côté client

Encryptions, compression et partitionnement des données

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Sécurité des réseaux wi fi

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Langage SQL : créer et interroger une base

Lieberman Software Corporation

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Installation des moteurs SQL Pour Micro-SESAME

Présentation Windows Azure Hadoop Big Data - BI

Pratique et administration des systèmes

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

SERVEUR DÉDIÉ DOCUMENTATION

PERFORMANCE BASE DE DONNÉES

PHP et les Bases de données - Généralités

//////////////////////////////////////////////////////////////////// Administration bases de données

Acronymes et abréviations. Acronymes / Abbréviations. Signification

Plateforme PAYZEN. Définition de Web-services

Définition des Webservices Ordre de paiement par . Version 1.0

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

EJBCA PKI Open Source

Manuel des logiciels de transferts de fichiers File Delivery Services

L objet de cet article est de présenter succinctement ces possibilités.

Gestion de base de données

Imprimantes et partage réseau sous Samba avec authentification Active Directory

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

How to Login to Career Page

Attaques applicatives

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

SSH, le shell sécurisé

La Sécurité des Données en Environnement DataCenter

Les Protocoles de sécurité dans les réseaux WiFi. Ihsane MOUTAIB & Lamia ELOFIR FM05

INTRODUCTION AUX SGBD/R LUW

Partie 0 : Gestion des tablespace et des utilisateurs... 3

SSL ET IPSEC. Licence Pro ATC Amel Guetat

Corrigés détaillés des exercices

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation.

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

TP11 - Administration/Tuning

Transcription:

Sécurité Oracle Gérard Schaller Gerard.Schaller@trivadis.com Grifes 28 Octobre 2003

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row Level Security, Label security 2

Marketing Oracle Oracle9i addresses your security vulnerabilities by securing data transmitted from client to application server to database, encrypting sensitive data within the database, restricting user access at the row-level, providing a single point of entry to all authorized applications and quickly detecting data misuse. Plus you have concrete assurance against break-ins, having built upon 15 successfully completed security evaluations. IBM and Microsoft can't compete. 3

Quels sont les risques dans la transmission? Utilisateur SQL*Net DB Server Hacker 4

Problèmes Fondamentaux de Sécurité Trust Integrity Listening Modifying Authentication Non-Repudiation? Falsifying Not Sent Who is right? Received 5

Ce qu offre Oracle Utilisateur Réseau Server Oracle Advanced Security Option Authentification Kerberos Certificat (SSL) RADIUS CyberSafe Encryption/intégrité Encryption - DES / 3DES / RC4 / AES - SSL Integrité - MD5 / SHA1 - SSL Authentification Kerberos Certificat (SSL) RADIUS CyberSafe 6

Integrité Utilisateur Réseau Server sqlnet.ora sqlnet.ora Integrité 7

Contrôle de l intégrité Le chiffrement à lui seul n est pas suffisant pour l intégrité! Pour le contrôle d intégrité Oracle détecte: La modification de paquets de données La perte de paquets de données L ajout de paquet de données (i.e. Replay Attacks) La protection de chaque paquet est faite par: Un numéro de séquence Un checksum (Hash) L association d une master clé liée à la session Checksum faux Numéro de séquence faux déconnection Oracle dispose de 2 procédés MD5 Message Digest 5 (128 Bit) SHA-1 Secure Hash Algorithm (160 Bit) 8

Configuration du crypto_checksum_* Server et Client Parameter doivent être en accord DEFAULT: Accepted pas de contrôle de l intégrité Server CRYPTO_CHECKSUM _SERVER Client REJECTED ACCEPTED REQUESTED REQUIRED CRYPTO_CHECKSUM_CLIENT REJECTED ACCEPTED REQUESTED REQUIRED OFF OFF OFF Client demande, Server refuse PAS de Session Client requiert, Server refuse OFF OFF Ni le serveur ni le client ne demande!!! ON Client demande, Server accept ON Client requiert, Server accepte OFF Server demande, Client refuse ON Server demande, Client accepte ON Client/Server demandent et acceptent ON Client requiert, Server demande, les 2 acceptent PAS de Session Server requiert, Client refuse ON Server demande, Client accepte ON Server requiert, Client demande, les 2 acceptent ON Client et Server requièrent et acceptent 9

Exemple de configuration: sqlnet.ora SQLNET.ORA Client (extrait) SQLNET.CRYPTO_CHECKSUM_CLIENT required SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT (SHA1) SQLNET.ORA Server (extrait) SQLNET.CRYPTO_CHECKSUM_SERVER required SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER (SHA1) 10

Encryption Utilisateur Réseau Server sqlnet.ora sqlnet.ora Encryption 11

Encryption - Parameter sqlnet.ora Parameter PARAMETER VALUES SQLNET.ENCRYPTION_SERVER SQLNET.ENCRYPTION_CLIENT SQLNET.ENCRYTION_TYPES_SERVER SQLNET.ENCRYTION_TYPES_CLIENT SQLNET.CRYPTO_SEED REJECTED ACCEPTED REQUESTED REQUIRED (RC4_256, RC4_128, RC4_56, RC4_40, AES256, AES192, AES128, DES, DES40, 3DES168, 3DES112) 10 à 70 caractères i.e 4fhfguweotc3adssafjkdsfqp5 12

Configuration des paramètres encryption_* Les paramètres sur le Server et le Client doivent être en accord DEFAULT: Accepted Server SQLNET.ENCRYPTION_SERVER Client REJECTED ACCEPTED REQUESTED REQUIRED SQLNET.ENCRYPTION_CLIENT REJECTED ACCEPTED REQUESTED REQUIRED OFF OFF OFF Client demande, Server refuse PAS de Session Client requière, Server refuse OFF OFF Ni le serveur ni le client ne demande!!! ON Client demande, Server accept ON Client requière, Server accepte OFF Server demande, Client refuse ON Server demande, Client accepte ON Client/Server demandent et acceptent ON Client requière, Server demande, les 2 acceptent PAS de Session Server requière, Client refuse ON Server demande, Client accepte ON Server requière, Client demande, les 2 acceptent ON Client et Server requièrent et acceptent 13

Encryption via SSL Client Réseau Server SSL Wallet sqlnet.ora tnsnames.ora Wallet listener.ora CLIENT - Authentification Encryption / Integrité SERVER - Authentification 14

Encryption avec SSL Standard d Internet Utilisé sur les pages Web avec des données sensibles Résoud plusieurs problèmes Authentification (Server et Client) Chiffrement Intégrité A besoin d une Public Key Infrastructure ou au minimum de certificat 15

Composants de Oracle SSL Certificat (incl. Clé privée) Authentification des Servers Authentification des Clients (seulement si le client possède un certificat) Oracle Wallet Fichier Standard PKCS#12 - Contient les clés privées-publiques ainsi que le certificat - Nécessite un password pour y accéder Est administré avec le Wallet Manager Oracle Net Implémentation de SSL pour SQL*Net 16

sqlnet.ora Exemple Server (extrait) WALLET_LOCATION WALLET_LOCATION (SOURCE (SOURCE (METHOD (METHOD FILE) FILE) (METHOD_DATA (METHOD_DATA (DIRECTORY (DIRECTORY /etc/oracle/wallets/oracle) ) ) SSL_CIPHER_SUITES (SSL_RSA_WITH_RC4_128_MD5) SSL_CLIENT_AUTHENTICATION FALSE FALSE SSL_VERSION SSL_VERSION 0...... Client (extrait)...... SSL_CIPHER_SUITES (SSL_RSA_WITH_RC4_128_MD5) SSL_CLIENT_AUTHENTICATION FALSE FALSE SSL_VERSION SSL_VERSION 0...... 17

ASO SSL Performance Coût de l encryption et de l intégrité Exemple d un test: Sun Ultra5/10, UltraSparc IIi 333MHz, SunOS 5.8, Oracle 9.0.1 Client et Server sur le même serveur, connection via Net8 select * from BIG_EMP (Table avec 1 Mio Rows) Output-Spool est d env. 40MB Sans encryption: Ø 2 min 58 sec Avec encryption / Hash (SSL_RSA_WITH_RC4_128_MD5): Ø 3 min 37 sec (22% de plus) Les performances 9i sont nettement supérieures à celles de la version 8.1.7 (plus de 47%) 18

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row Level Security, Label security 19

Web Services - HTTP - WebDAV FTP - XDB A l installation de Oracle un serveur apache est automatiquement installé et démarré! Par défaut tout le monde est administrateur ( en 8i l url n est pas protégée!) Doit être modifié manuellement dans le fichier wdbsvr.app [PLSQL_GATEWAY] [PLSQL_GATEWAY] administrators administrators all all adminpath adminpath /admin_/ /admin_/ ;admindad ;admindad ;debugmodules ;debugmodules defaultdad defaultdad simpledad simpledad ;upload_as_long_raw ;upload_as_long_raw ;upload_as_blob ;upload_as_blob ;enablesso ;enablesso ;stateful ;stateful ;custom_auth ;custom_auth ;error_style ;error_style [DAD_simpledad] [DAD_simpledad] ;exclusion_list ;exclusion_list dbms* dbms* 20

Web Services - HTTP - WebDAV FTP - XDB En 8i Il est possible d invoquer des procédures stockées et en particulier les packages Web Toolkit installé dans le schéma de sys (anciennement dans le schema OAS_PUBLIC pour OAS) Exemples: - http://hostname/pls/dad_name/owa_util.showsource?cnameprocedure_name Donne le code source de la procédure - http://hostname/pls/dad_name/owa_util.cellsprint?p_thequeryselect+*+from+scott.emp Liste le contenu de la table EMP du schema de Scott En 9i Possible si le paramètre exclusion_list est renseigné sans spécifier sys.* 21

Web Services - HTTP - WebDAV FTP - XDB En créant une standard database 9i avec l assistant de création de DB les services suivants seront activés: FTP sur le port 2100 HTTP/WebDAV sur le port 8080 Ces services donnent accès à la partie XML DB d Oracle Recommandations: N installer que les options que vous désirez utiliser! Désactiver les services non utilisé en les assignants au port 0 : exemple pour ftp CALL CALL DBMS_XDB.CFG_UPDATE(UPDATEXML DBMS_XDB.CFG_UPDATE(UPDATEXML (DBMS_XDB.CFG_GET,'/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftpport/text()', 0')); (DBMS_XDB.CFG_GET,'/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftpport/text()', 0')); 22

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row Level Security, Label security 23

Identification des applications se connectant à la base de données Oracle offre depuis 8i un mécanisme d authentification des applications se connectant à la base. Ceci se fait via la table product_user_profile Exemple: PRODUCT USERID ATTRIBUTE SCOPE VALUE ------------------ ---------- -------- ------- ---------- --------- SQL*PLUS SCOTT CONNECT DISABLED Le user scott n est pas autorisé à se connecter avec l outil SQL*PLUS On peut restreindre l usage d une partie des commandes sql à l outil ou contrôler le rôle de l utilisateur : ALTER AUDIT CREATE DELETE DROP GRANT INSERT LOCK NOAUDIT RENAME REVOKE SELECT UPDATE VALIDATE Seul quelques outils Oracle peuvent être contrôlés (SQL*PLUS, REPORT, etc ). On ne peut pas empêcher une connection via un ODBC!! 24

Identification des applications se connectant à la base de données Dans la vue v$session: OSUSER OSUSER MACHINE MACHINE USERNAME USERNAME SID SID SERIAL# SERIAL# PROGRAM PROGRAM ----------------- ----------------- ------------------ ------------------ ------------ ------------ ------ ------ ----------- ----------- -------------- -------------- LTGES02\ges LTGES02\ges MSHOME\LTGES02 MSHOME\LTGES02 SCOTT SCOTT 28 28 2930 2930 EXCEL.EXE EXCEL.EXE LTGES02\ges LTGES02\ges MSHOME\LTGES02 MSHOME\LTGES02 SYS SYS 29 29 60 60 sqlplus.exe sqlplus.exe SYSTEM SYSTEM MSHOME\LTGES02 MSHOME\LTGES02 SYS SYS 30 30 158 158 dbsnmp.exe dbsnmp.exe LTGES02\ges LTGES02\ges MSHOME\LTGES02 MSHOME\LTGES02 SCOTT SCOTT 31 31 28 28 sqlplusw.exe sqlplusw.exe LTGES02\ges LTGES02\ges MSHOME\LTGES02 MSHOME\LTGES02 SYS SYS 32 32 4197 4197 SQLNav4.exe SQLNav4.exe On peut déclencher un trigger ON LOGON qui identifiera le programme utilisé pour se connecter. Un autre programme décidera si l utilisateur est autorisé et de l action à entreprendre. Si le nom de l exécutable est changé il ne sera pas possible de l identifier! 25

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row level security, Label security 26

Rôles et Privilèges Privilèges: Sur des objects: grant select, update, etc System: connect, create table Schema FIBU GRANT of object privileges ROLE_FIBU_30 ROLE_FIBU_20 GRANT of roles to the user SCOTT Les privilèges peuvent être donnés directement à un utilisateur ou via un rôle ROLE_FIBU_10 KING On associe à un rôle un ensemble de privilèges system ou objet Schema PERSONAL ROLE_PERS_30 ROLE_PERS_20 BLAKE 27

Compte utilisateurs venant avec la DB Compte DBA RESOURCE (unlimited tablespace) execute any procedure select any table select any dictionary exempt access policy alter system CTXSYS DBSNMP LBACSYS OLAPDBA OLAPSVR OLAPSYS ORDPLUGINS ORDSYS OUTLN MDSYS WKSYS XDB 28

Comptes utilisateurs Certains utilisateurs viennent par défaut avec la base de données avec de hauts privilèges (i.e outln) A partir de 9i seulement l assistant de création de DB bloque ces comptes et force le changement des passwords de SYS et SYSTEM. 29

Comptes utilisateurs Outln a le privilège execute any procedure et peut par exemple donner le rôle DBA au user SCOTT: CONNECT CONNECT outln/outln outln/outln CREATE CREATE OR OR REPLACE REPLACE PROCEDURE PROCEDURE grant_dba_to_scott grant_dba_to_scott IS IS cur cur INTEGER; INTEGER; BEGIN BEGIN cur cur : : DBMS_SQL.open_cursor; DBMS_SQL.open_cursor; -- -- uid uid 0 0 SYS SYS SYS.DBMS_SYS_SQL.parse_as_user SYS.DBMS_SYS_SQL.parse_as_user (cur, (cur, 'GRANT 'GRANT DBA DBA TO TO SCOTT', SCOTT', DBMS_SQL.native,0); DBMS_SQL.native,0); DBMS_SQL.close_cursor DBMS_SQL.close_cursor (cur); (cur); END; END; / / execute execute grant_dba_to_scott; grant_dba_to_scott; Le password d un DBLINK est visible dans la table SYS.LINK$ 30

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row level security, Label security 31

Standard Oracle9i Auditing (1) Oracle9i permet un auditing standard sur 3 niveaux (comme en Oracle8i) Auditing de Statements Permet d auditer les commandes DML ou DDL. Exemples: - AUDIT TABLE audit toutes les commandes CREATE TABLE ou DROP TABLE - SELECT TABLE audit tous les select sur des tables/vues indépendamment de la table. SQL> SQL> AUDIT AUDIT SELECT SELECT TABLE; TABLE; Peut être restreint à un utilisateur SQL> SQL> AUDIT AUDIT UPDATE UPDATE TABLE TABLE by byscott,adams; 32

Oracle Standard Auditing (2) System privileges Audit tous les statements faisant appel à un privilège particulier: i.e SELECT ANY TABLE SQL> SQL> AUDIT AUDIT SELECT SELECT ANY ANY TABLE, TABLE, ALTER ALTER ANY ANY TABLE; TABLE; Object Audit certaines opérations sur des objets particuliers SQL> SQL> AUDIT AUDIT INSERT, INSERT, UPDATE, UPDATE, DELETE DELETE on on HR.EMPLOYEES; HR.EMPLOYEES; 33

Auditing par trigger DML triggers: auditing des modifications Database Event Trigger Possibilité de logger les connections à la base (qui, quand, d où) CREATE CREATE OR OR REPLACE REPLACE TRIGGER TRIGGER LOGON_EMPLOYEE LOGON_EMPLOYEE AFTER AFTER LOGON LOGON ON ON DATABASE DATABASE DECLARE DECLARE PRAGMA PRAGMA AUTONOMOUS_TRANSACTION; AUTONOMOUS_TRANSACTION; BEGIN BEGIN IF IF ( ( sys_context('userenv','sessionid') sys_context('userenv','sessionid')!! 0 0 ) ) then then INSERT INSERT INTO INTO system.logon_events system.logon_events ( ( SELECT SELECT USER, USER, sys_context('userenv','sessionid'), sys_context('userenv','sessionid'), sys_context('userenv','os_user'), sys_context('userenv','os_user'), sys_context('userenv','host'), sys_context('userenv','host'), sys_context('userenv','ip_address'), sys_context('userenv','ip_address'), program, program, sysdate sysdate FROM FROM sys.v_$session sys.v_$session WHERE WHERE AUDSID AUDSID sys_context('userenv','sessionid') sys_context('userenv','sessionid') ); ); COMMIT; COMMIT; END END IF; IF; END; END; 34

Fine Grained Auditing Les résultats d un SELECT statement ne peuvent pas être audité par un audit standard Le Fine Grained Auditing permet de définir des conditions fines pour l auditing. Le FGA est constitué de 2 parties: L Audit Event Condition définit la condition qui doit être vérifiée pour que le statement soie audité. Exemple: DEPTNO20 sur la colonne SAL signifie que l on audit les statements qui accèdent au salaire des employés du département 20. L Event Handler Le nom d une procédure qui sera exécutée lorsque l Audit Event Condition est vérifiée. Par exemple: envoyé un mail d alerte, insérer dans une table le nom du user, etc Chaque Audit Event Condition peut avoir son propre Event Handler 35

DBMS_FGA Exemple: on veut auditer les requêtes recherchant le salaire des employés du dept20 CREATE CREATE OR OR REPLACE REPLACE PROCEDURE PROCEDURE ins_audit_message( ins_audit_message( p_schema p_schema VARCHAR2, VARCHAR2, p_table p_table VARCHAR2, VARCHAR2, p_policy p_policy VARCHAR2) VARCHAR2) IS IS BEGIN BEGIN INSERT INSERT INTO INTO audit_messages audit_messages VALUES( VALUES( SYSDATE, SYSDATE, p_schema '.' p_table '.' p_policy); p_schema '.' p_table '.' p_policy); END; END; / / BEGIN BEGIN DBMS_FGA.ADD_POLICY( DBMS_FGA.ADD_POLICY( object_schema> object_schema> 'SCOTT', 'SCOTT', object_name object_name > > 'EMP', 'EMP', policy_name policy_name > > 'DEPTNO20_SAL', 'DEPTNO20_SAL', audit_condition audit_condition > > 'DEPTNO 'DEPTNO 20', 20', audit_column audit_column > > 'SAL', 'SAL', handler_schema handler_schema > > 'SYSTEM', 'SYSTEM', handler_module handler_module > > 'INS_AUDIT_MESSAGE', 'INS_AUDIT_MESSAGE', enable enable > > true); true); END; END; 36

Fine Grained Auditing DBA_FGA_AUDIT_TRAIL: SQL> SQL> SELECT SELECT session_id,timestamp,db_user,os_user,object_schema,object_name, session_id,timestamp,db_user,os_user,object_schema,object_name, 2 2 policy_name,scn,sql_text policy_name,scn,sql_text 3 3 FROM FROM dba_fga_audit_trail dba_fga_audit_trail 4 4 WHERE WHERE policy_name policy_name 'DEPTNO20_SAL' 'DEPTNO20_SAL' 5 5 ORDER ORDER BY BY scn scn DESC DESC 6 6 / / SESSION_ID SESSION_ID TIMESTAMP TIMESTAMP DB_USER DB_USER OS_USER OS_USER OBJECT_SCH OBJECT_SCH OBJECT_NAM OBJECT_NAM POLICY_NAME POLICY_NAME ---------- ---------- --------- --------- -------- -------- --------- --------- ---------- ---------- ---------- ---------- ----------- ----------- SCN SCN SQL_TEXT SQL_TEXT ---------- ---------- ------------------------------------------------------------ ------------------------------------------------------------ 186 186 13-AUG-01 13-AUG-01 SCOTT SCOTT reb reb SCOTT SCOTT EMP EMP DEPTNO20_SAL DEPTNO20_SAL 358210 358210 SELECT SELECT 6,DEPTNO,ENAME,SAL 6,DEPTNO,ENAME,SAL FROM FROM EMP EMP WHERE WHERE DEPTNO DEPTNO 20 20 186 186 13-AUG-01 13-AUG-01 SCOTT SCOTT reb reb SCOTT SCOTT EMP EMP DEPTNO20_SAL DEPTNO20_SAL 358189 358189 SELECT SELECT 1,DEPTNO,ENAME,SAL 1,DEPTNO,ENAME,SAL FROM FROM EMP EMP 37

Fine Grained Auditing Fine grained auditing est supporté seulement pour le cost-based optimizer Attention le rule based optimiser génère des entrées fausses d auditing! 38

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row level security, Label security 39

Chiffrement dans Oracle A partir de Oracle 8.1.6, Oracle offre la possibilité d encrypté le contenu dans la base avec un nouveau package: DBMS_OBFUSCATION_TOOLKIT Peut-être utilisé comme une procédure ou une fonction et supporte le DES3 depuis 8.1.7. (DES3Encrypt et DES3Decrypt) La chaîne de caractères en entrée doit avoir une longueur multiple de 8. Une clé doit-être passée pour réalisé l encryption et vice versa. Où stocker cette clé? Une fonction de hachage (non réversible ) MD5 est aussi fournie et pourrait être utilisée pour l encryption de password. 40

Chiffrement dans Oracle Exemple d une fonction générant l encryption Voir article http://www.trivadis.com/publikationen/f/encryption_dans_oracle_f.htm FUNCTION crypt ( input_string IN varchar2) return varchar2 IS BEGIN DECLARE error_in_input_buffer_length EXCEPTION; PRAGMA EXCEPTION_INIT(error_in_input_buffer_length, -28232); INPUT_BUFFER_LENGTH_ERR_MSG VARCHAR2(100) : double_encrypt_not_permitted EXCEPTION; PRAGMA EXCEPTION_INIT(double_encrypt_not_permitted, -28233); DOUBLE_ENCRYPTION_ERR_MSG VARCHAR2(100) : encrypted_string encrypted_raw key_string raw_input raw_key VARCHAR2(2048); RAW(2048); VARCHAR2(16) : 'thisisthekeytext'; RAW(128) : UTL_RAW.CAST_TO_RAW(input_string); RAW(128) : UTL_RAW.CAST_TO_RAW(key_string); BEGIN dbms_obfuscation_toolkit.des3encrypt( input > raw_input, key > raw_key, encrypted_data > encrypted_raw ); RETURN UTL_RAW.CAST_TO_VARCHAR2(encrypted_raw); EXCEPTION WHEN error_in_input_buffer_length THEN dbms_output.put_line('> ' INPUT_BUFFER_LENGTH_ERR_MSG); END; END; 41

Agenda Introduction Sécurité entre les clients et le serveur Authentification - Intégrité - Chiffrement (SSL) Web Services - HTTP - WebDAV FTP - XDB Identification des applications se connectant à la base de données Sécurité dans la base de données Concept de sécurité : Compte / mot de passe / rôles / privilèges Auditing : Standard, Triggered, Fine Grained Auditing Chiffrement dans Oracle Row level security, Label security 42

Row Level Security (RLS) Depuis 8i on peut implémenter une policy de sécurité au niveau du row. On crée une fonction retournant une clause de restriction: CREATE CREATE OR OR REPLACE REPLACE FUNCTION FUNCTION emp_restrict(schema emp_restrict(schema IN IN varchar2, varchar2, tab tab IN IN varchar2) varchar2) RETURN RETURN VARCHAR2 VARCHAR2 AS AS BEGIN BEGIN RETURN RETURN '''' '''' sys_context('userenv','session_user') sys_context('userenv','session_user') '''ename'; '''ename'; END END emp_restrict; emp_restrict; / / On associe cette fonction en tant que policy à une table EXEC EXEC dbms_rls.add_policy('scott','emp','emp_policy','secusr','emp_restrict'); dbms_rls.add_policy('scott','emp','emp_policy','secusr','emp_restrict'); 43

Virtual Private Database - Roles Le Virtual Private Database (9i) est une extension du Row Level Security Jusqu à Oracle8i les rôles peuvent être protégés par un password A partir de Oracle9i un role peut être lié a une invoker s right stored procedure Ceci permet de s assurer qu un rôle ne peut être activé que par un programme particulier. 44

Virtual Private Database - Roles CREATE CREATE ROLE ROLE sales_role sales_role IDENTIFIED IDENTIFIED USING USING system.sales_security_procedure; system.sales_security_procedure; CREATE CREATE PROCEDURE PROCEDURE sales_security_procedure sales_security_procedure AUTHID AUTHID CURRENT_USER CURRENT_USER IS IS network_protocol network_protocol VARCHAR2(30); VARCHAR2(30); BEGIN BEGIN SELECT SELECT SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') INTO INTO network_protocol network_protocol FROM FROM dual; dual; IF IF upper(network_protocol) upper(network_protocol)!! 'TCPS' 'TCPS' THEN THEN raise_application_error(-20000, raise_application_error(-20000, 'Only 'Only secure secure connections connections allowed'); allowed'); ELSE ELSE dbms_session.set_role('sales_role'); dbms_session.set_role('sales_role'); END END IF; IF; END; END; / / 45

Virtual Private Database Label security a été introduit à partir de 9i release 1 Un Label security permet de restreindre l accès à des données en lecture/écriture seulement aux utilisateurs qui ont les privilèges appropriés Le modèle de sécurité a 3 dimensions/components. Le label pour les données ou les utilisateurs est constitués de 3 parties Level (e.g. confidential C, secret S, top secret T) Compartment (e.g. engineering EN, finance FI) Group (e.g. D, CH, FL) Les rows avec le label S:EN:CH peuvent être lues que par les utilisateurs ayant le label T:EN:CH, mais pas de ceux ayant C:FI:D Complexe a mettre en œuvre! 46

Conclusions Oracle offre un grand nombre de features permettant de : sécuriser la communication entre les clients et les bases de données protéger les données contenues dans la base auditer les accès aux données Ne pas utiliser d installation par défaut (comptes utilisateurs, options etc) pour des environnements de production! 47