Chapitre V: Administration Basique d’une base de données Oracle

Slides:



Advertisements
Présentations similaires
Active Directory Windows 2003 Server
Advertisements

Programme Introduction aux BD et aux SGBD Le modèle relationnel
GPO Group Policy Object
Vue d'ensemble Création de comptes d'utilisateurs
La politique de Sécurité
La sécurité par le contrôle d’accès
Plan de formation Chapitre 1 : Présentation de SAP
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Sécurité Informatique
Initiation au système d’information et aux bases de données
Les contraintes d’integrité
Initiation au système d’information et aux bases de données
Active Directory Windows 2003 Server
Développement d’applications web
Contrôles d'accès aux données
Rappel sur les bases de données et le vocabulaire
Module 1 : Préparation de l'administration d'un serveur
Gérer les tablespaces et les fichiers de données
Serveurs Partagés Oracle
Chap 4 Les bases de données et le modèle relationnel
Administration Des Utilisateurs
Module 2 : Préparation de l'analyse des performances du serveur
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Les transactions.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Introduction.
SQL partie 4. SQL est un langage de protections d'accès Il est possible avec SQL de définir des permissions au niveau des utilisateurs d'une base de données.
Gérer la sécurité des mots de passe et les ressources
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Gérer les privilèges.
Créer des packages.
GESTION DES UTILISATEURS ET DES GROUPES
Copyright  Oracle Corporation, All rights reserved. 19 Gestion des Privilèges.
(Ou groupes d ’utilisateurs)
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Structure de stockage et relations
Copyright  Oracle Corporation, All rights reserved. 20 Gestion des Rôles ( ou regroupement des privilèges)
Gérer les rôles.
Les Contraintes.
Module 3 : Création d'un domaine Windows 2000
Gérer les utilisateurs
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
En route vers le déploiement . . .
Création et Gestion de Tables
Module 1 : Vue d'ensemble de Microsoft SQL Server
Initiation à Oracle Server
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Objectifs A la fin de ce chapitre, vous pourrez :
4 Copyright © Oracle Corporation, Tous droits réservés. Gérer les sous-programmes.
Les vues Une vue: c’est une relation virtuelle. Définie par:
13 Copyright © Oracle Corporation, Tous droits réservés. Gérer l'intégrité des données.
Module 7 : Restauration de bases de données
Initiation aux SGBD Frédéric Gava (MCF)
Le Langage de Contrôle de Données LCD. 2 Contrôle des Données Notion de Sous–Schéma –Restriction de la vision –Restriction des actions Privilèges –Systèmes.
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
Les bases de données Séance 8 Jointures.
Le langage SQL.
MARS 2015V0.1 DOC-DEPOT La Consigne Numérique Solidaire Support Formation Acteur Social (compte bénéficiaire)
INTRODUCTION AUX BASES DE DONNEES
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Introduction Module 1.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Le Langage de Manipulation de Données LMD Module 6.
FACTORY systemes Module 2 Section 1 Page 2-3 Installation d’Industrial SQL FORMATION InSQL 7.0.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Chapitre 3 Administration des accès aux ressources
Transcription de la présentation:

Chapitre V: Administration Basique d’une base de données Oracle Dictionnaire de Données Oracle Securité d’une base de données Gestion des utilisateurs Privilère , Roles et Profiles utilisateurs

Dictionnaire de Données Oracle Définition: C’est un certain nombre de tables et vues qui contient un ensemble d’information liée à l’activité et au fonctionnement de la base de donnée Et ce pour: Récupérer les information nécessaire à l’exploitation et à l’administration de la base de donnée Oracle

Dictionnaire de Données Oracle Caractéristiques Appartient à l’utilisateur SYS  Stocke les informations sur: La base de données (structure logique et physique) Le nom et les définitions des différents objets crées Les contraintes sur les objets Les users de connexions et leur caractéristiques (ex: privilèges) L’audit sur une base de données

Dictionnaire de Données Oracle Toutes les informations contenues dans les tables système du dictionnaire des données et accessibles au travers de vues sont codées en MAJUSCULES. Exp: selecte * from all_table where table_name like ‘JOBS’; Le dictionnaire des données est mis automatiquement à jour après chaque instruction SQL du LMD (INSERT, UPDATE, DELETE, …). Majuscule

Dictionnaire de Données Oracle  Les vues du dictionnaire de données sont :  DBA_* : informations sur les objets de tous les schémas  USER_* : informations sur les objets appartenant au compte connecté  ALL_* : informations des vues USER_* et des informations sur les objets pour lesquels des privilèges ont été octroyés au groupe PUBLIC ou à l’utilisateur courant  Liste des vues du dictionnaire • DICTIONARY ou DICT

Dictionnaire de Données Oracle Démarche à suivre La démarche à suivre afin d’interroger correctement le dictionnaire des données à propos d’un objet est la suivante : Étape 1 : trouver le nom de la vue en consultant DICTIONARY Étape 2 : choisir les colonnes de la vue à sélectionner (utiliser DESC) ; Étape 3 : interroger la vue en exécutant une requête SELECT contenant les colonnes intéressantes. NB : Étape 1 peut être omise si on connaît déjà le nom de la vue (ce sera le cas pour les vues usuelles que vous aurez déjà utilisées à plusieurs reprises).

Dictionnaire de Données Oracle Recherche du nom d’une vue L’extraction du nom des vues qui concernent un objet est rendue possible par l’interrogation de la vue DICTIONARY (de synonyme DICT) SQL>DESC DICTIONARY Nom NULL Type ---------- ---- -------------- TABLE_NAME VARCHAR2(30) COMMENTS VARCHAR2(4000) SELECT * FROM DICTIONARY WHERE table_name LIKE '%SEQUENCE%'; TABLE INDEX IRIGGER VIEW CONSTRAINT TABLE_NAME COMMENTS ---------------- ------------------------- ALL_ SEQUENCES Description of SEQUENCEs accessible to the user DBA_ SEQUENCES Description of all SEQUENCEs in the database USER_ SEQUENCES Description of the user's own SEQUENCEs

Dictionnaire de Données Oracle Interroger la vue L’interrogation de la vue sur la base des colonnes choisies est l’étape finale de la recherche de données dans le dictionnaire  Interrogeons le dictionnaire des données à travers les quatre premières colonnes de la vue USER_SEQUENCES pour retrouver les caractéristiques de ces deux séquences.  La valeur courante de la séquence n’est pas stockée dans cette vue, elle est, en revanche, accessible via la fonction CURRVAL. SEQUENCE_NAM MIN_VAL, MAX_VAL, INCREMENT_BY DEPARTMENTS_SEQ 1 9990 10 EMPLOYEES_SEQ 1 9999999999 1 LOCATIONS_SEQ 1 9900 100 MA_SEQUENCE 1 999999999 1 MA_SEQUENCE2 1 9999999999 2 SQ_ID_TRANSACTION 1 10000 1 SQL> SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY FROM USER_SEQUENCES ;

Dictionnaire de Données Oracle Recherche d’un code source Le code source PL/SQL des packages, procedure, triggers, fonction est maintenu est peut être consulté par les tables de dictionnaire de données USER_SOURCE et ALL_SOURCE. Pour consulter le code source de Specification : SELECT text FROM user_source WHERE name = 'COMM_PKG' AND type = 'PACKAGE'; Pour consulter le code source de body : SELECT text FROM user_source WHERE name = 'COMM_PKG' AND type = 'PACKAGE BODY';

Dictionnaire de Données Oracle Principales vues du dictionnaire des données Nature de l’objet Vues ----------------------- ------ ------------------------------- Objets (au sens général) USER_OBJECTS : objets appartenant à l’utilisateur (synonyme OBJ). USER_ERRORS : erreurs après compilation des objets PL/SQL stockés (procédures, fonctions, paquetages, déclencheurs). USER_STORED_SETTINGS : paramètres des objets PL/SQL stockés. USER_SOURCE : source des objets PL/SQL stockés. Tables USER_TABLES : description des tables relationnelles de l’utilisateur (synonyme TABS). USER_ALL_TABLES : description des tables relationnelles et objets de l’utilisateur. Colonnes USER_TAB_COLUMNS : colonnes des tables et vues (synonyme COLS). USER_UNUSED_COL_TABS : colonnes éliminées des tables. Index USER_INDEXES : description des index (synonyme IND). USER_IND_EXPRESSIONS : expressions fonctionnelles des index. USER_IND_COLUMNS : colonnes qui composent les index. Contraintes USER_CONSTRAINTS : définition des contraintes de tables. USER_CONS_COLUMNS : composition des contraintes (colonnes).

Dictionnaire de Données Oracle Principales vues du dictionnaire des données Nature de l’objet Vues ----------------------- ------ ------------------------------- Vues USER_VIEWS : description des vues de l’utilisateur Synonymes USER_SYNONYMS : description des synonymes privés d’un utilisateur DBA_SYNONYMS et ALL_SYNONYMS : description de tous les synonymes (privés et publics). Séquences Déjà étudié en début de section. Commentaires USER_TAB_COMMENTS : commentaires à propos des tables ou vues. USER_COL_COMMENTS : commentaires à propos des colonnes des tables et vues. Utilisateurs USER_USERS : caractéristiques de l’utilisateur courant. DBA_USERS et ALL_USERS : caractéristiques de tous les utilisateurs. .

Dictionnaire de Données Oracle Principales vues du dictionnaire des données Privilèges USER_TAB_GRANTS : liste des autorisations sur les tables et les vues pour lesquelles l’utilisateur est le propriétaire, ou ayant donné ou reçu l’autorisation. USER_TAB_GRANTS_MADE : liste des autorisations sur les objets appartenant à l’utilisateur. USER_COL_GRANTS : colonnes autorisées à l’accès USER_COL_GRANTS_MADE : liste des autorisations sur les colonnes des tables ou des vues appartenant à l’utilisateur. USER_COL_PRIVS_MADE : informations sur les colonnes pour lesquelles l’utilisateur est propriétaire ou bénéficiaire. USER_TAB_GRANTS_RECD : liste des objets pour lesquels l’utilisateur a reçu une autorisation. USER_COL_PRIVS_RECD : informations sur les colonnes pour lesquelles l’utilisateur a reçu une autorisation. Rôles DBA_ROLES : tous les rôles existants. DBA_ROLE_PRIVS : rôles donnés aux utilisateurs et aux autres rôles. USER_ROLE_PRIVS : rôles donnés à l’utilisateur. ROLE_ROLE_PRIVS : rôles donnés aux autres rôles. ROLE_SYS_PRIVS : privilèges système donnés aux rôles. ROLE_TAB_PRIVS : privilèges sur les tables donnés aux rôles. SESSION_ROLES : rôles actifs à un instant t

Dictionnaire de Données Oracle Vues Dynamiques Identifiées avec le préfixe V_$ (synonym V$) • Accessible uniquement pour l’utilisateur SYS et pour les utilisateurs ayant le privilège SYSDBA  Liste des vues dynamiques • V$FIXED_TABLE

Sécurité de la base de Données Introduction Qu’est ce que une base de données pour les organismes ( société , établissement, ministère …) ? C’est un ensemble des informations et données centralisées qui sont intègres, confidentielles, disponibles, tracées et dont l’exploitation et utilisation sont conformes aux règles. C’est les 5 principes de la sécurité de l’information

Sécurité de la base de Données Introduction La sécurité de l’information est vitale. Elle conditionne l’activité économique des entreprises et la confiance dans les organismes publics • La divulgation volontaire ou accidentelle de données financières ou privées peut avoir des conséquences fâcheuses sur le plan • Economique, commercial et…juridique • 25 % des incidents sont le fait de personnels internes • 50 % sont consécutifs à des pertes ou des vols de matériels divers

Sécurité de la base de Données Principes Confidentialité :Empêcher la consultation de données sensibles par des personnes non autorisées • Qui a accès authentification ? • Quels sont les mécanismes de contrôle d’accès ? • Quid des utilisateurs à super privilèges ? • Les données sont-elles protégées par du chiffrement: • Lors de leur stockage ? • Durant leurs mouvements ?

Sécurité de la base de Données Principes Intégrité :Prévenir la modification des données par des personnes non autorisées Qui peut modifier l’information ? • Quels contrôles sont en place pour limiter les accès ? Pour donner les accès ? • Quels sont les mécanismes permettant de vérifier si l’information a été changée ? • Quels moyens sont utilisés par les applications pour contrôler la cohérence des informations ?

Sécurité de la base de Données Principes Traçabilité / Conformité Permettre de garder la trace des actions effectuées sur les systèmes, à des fins de prévention, de dissuasion et d’audit des incidents Qui a accédé ? Quelle information sur l’activité est capturée ? Comment sont protégés les référentiels d’audit ? Une exploitation systématique des audits est-elle en place ?

Sécurité de la base de Données Principes Disponibilité Les utilisateurs ayant le droit de faire certaines actions doivent pouvoir accéder aux données correspondantes. Les SGBD fournissent différents moyens pour garantir la sécurité : authentification, contrôle d’accès, mécanismes d’audit, vues.

Sécurité de la base de Données comment appliquer ces Principes Pour appliquer ces principe : il faut Authentification Autorisation

Sécurité de la base de Données Authentification Chaque BD Oracle possède une liste de noms d’utilisateurs, et un mot de passe associé. Vérifier quand un utilisateur veut utiliser des données, des ressources, des applications, par le système d’exploitation, le réseau, la base Oracle. Authentification dans Oracle : cryptage du mot de passe, verrouillage des comptes, expiration du mot de passe, vérification de la complexité du mot de passe. A la création d’un nouvel utilisateur, on définit un espace de stockage des tables par défaut (default tablespace), un espace de stockage de tables temporaire (temporary tablespace), des quotas sur ces espaces. Un profil délimitant l’accès aux ressources

Sécurité de la base de Données Autorisation Les autorisations reposent sur ce qui suit : Tous les éléments SQL ont un propriétaire. Un propriétaire d’un objet possède tous les droits (privilèges) sur cet objet. On peut donner des droits à d’autres utilisateurs pour accéder aux données, pour les modifier, pour obtenir des ressources, … Les droits sont accordés (ou refusés) à différents niveaux (objets, schémas, tables, tuples, CPU, …). On peut accorder des droits individuellement, ou par groupes.

Sécurité de la base de Données Administration de base de données Pour assurer L’authentification et l’autorisation, il faut être en mesure de bien gêner les : Utilisateurs Profiles Droits et privilèges Rôles On est bien dans l’administration des bases de données

Gestion des utilisateurs classification Les types d’utilisateurs, leurs fonctions et leur nombre peuvent varier d’une base à une autre. Néanmoins, on peut les classifier de la manière suivante : Le DBA (DataBase Administrator). Il en existe au moins un. Une petite base peut n’avoir qu’un seul administrateur. Une base importante peut en regrouper plusieurs qui se partagent les tâches suivantes : installation et mises à jour de la base et des outils éventuels ; Gestion de l’espace disque et des espaces pour les données (tablespaces) ; Gestion des utilisateurs et de leurs objets (s’ils ne les gèrent pas eux-mêmes) ; Optimisation des performances ; Sauvegardes, restaurations et archivages ; Contact avec le support technique d’Oracle.

Gestion des utilisateurs classification L’administrateur réseaux (qui peut être le DBA) se charge de la configuration de l’intergiciel (middleware) Oracle Net au niveau des postes clients. Les développeurs qui conçoivent et mettent à jour la base. Ils peuvent aussi agir sur leurs objets (création et modification des tables, index, séquences, etc.). Ils transmettent au DBA leurs demandes spécifiques (stockage, optimisation, sécurité). Les administrateurs d’applications qui gèrent les données manipulées par l’application ou les applications. Pour les petites et les moyennes bases, le DBA joue ce rôle. Les utilisateurs qui se connectent et interagissent avec la base à travers les applications ou à l’aide d’outils (interrogations pour la génération de rapports, ajouts, modifications ou suppressions d’enregistrements).

Gestion des utilisateurs création Syntaxe Complete La syntaxe SQL de création d’un utilisateur est la suivante : CREATE USER utilisateur IDENTIFIED { BY motdePasse EXTERNALLY | GLOBALLY AS 'nomExterne' } [ DEFAULT TABLESPACE nomTablespace [QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ] ] [TEMPORARY TABLESPACE nomTablespace [QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ].] [PROFILE nomProfil ] [PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ; Syntaxe Simple : CREATE USER utilisateur IDENTIFIED BY motdePasse

Gestion des utilisateurs création (suite) IDENTIFIED BY motdePasse permet d’affecter un mot de passe à un utilisateur local (cas le plus courant et le plus simple). IDENTIFIED BY EXTERNALLY permet de se servir de l’authenticité du système d’exploitation pour s’identifier à Oracle (cas des compte OPS$ pour Unix). ● IDENTIFIED BY GLOBALLY permet de se servir de l’authenticité d’un système d’annuaire. ● DEFAULT TABLESPACE nomTablespace associe un espace disque de travail (appelé tablespace) à l’utilisateur. ● TEMPORARY TABLESPACE nomTablespace associe un espace disque temporaire (dans lequel certaines opérations se dérouleront) à l’utilisateur. ● QUOTA permet de limiter ou pas chaque espace alloué. ● PROFILE nomProfil affecte un profil (caractéristiques système relatives au CPU et aux connexions) à l’utilisateur. ● PASSWORD EXPIRE pour obliger l’utilisateur à changer son mot de passe à la première connexion (par défaut il est libre). Le DBA peut aussi changer ce mot de passe. ● ACCOUNT pour verrouiller ou libérer l’accès à la base (par défaut UNLOCK).

Gestion des utilisateurs création (suite) En l’absence de clause sur les espaces disque, le tablespace SYSTEM est associé à l’utilisateur en tant qu’espace de travail et d’espace temporaire. Il existe d’autres tablespaces créés par Oracle, citons USERS (celui que vous devriez utiliser pour votre espace par défaut) et TEMP (celui que vous devriez employer pour votre espace temporaire). Vous pouvez aussi créer vos espaces via la console d’administration La clause ALTER USER permet d’affecter un espace de travail ou temporaire différent de celui du départ. En l’absence de profil, le profil DEFAULT est affecté à l’utilisateur.

Gestion des utilisateurs création (exemple ) Instruction SQL Resultat CREATE USER Paul IDENTIFIED BY Pokemon DEFAULT TABLESPACE USERS QUOTA 10M ON USERS TEMPORARY TABLESPACE TEMP QUOTA 5M ON TEMP PASSWORD EXPIRE; Paul est déclaré « utilisateur », ses objets (pas plus de 10 MO) seront stockés dans USERS, certaines de ses opérations nécessiteront de ranger des données dans TEMP (pas plus de 5 MO). Il devra changer son mot de passe à la première connexion. CREATE USER Paul2 ACCOUNT LOCK; Paul2 est déclaré « utilisateur », ses objets seront stockés dans USERS, son espace temporaire est SYSTEM. Le compte est pour l’instant bloqué Par défaut, les utilisateurs, une fois créés n’ont aucun droit sur la base de données sur laquelle ils sont connectés. La section « Privilèges » étudie ces droits.

Gestion des utilisateurs Modification d’un Utilisateur Pour Modifier le mot de passe de l’utilisateur (tache la plus utilisé) on utilise la commande suivante: ALTER USER. Nom_user IDENTIFIED BY nouveau_mot_pass Pour pouvoir modifier les caractéristiques d’un utilisateur (autres que celle du mot de passe) voila la Syntaxe. Elle contient instruction qui reprend les options étudiées lors de la création d’un utilisateur.

Gestion des utilisateurs Modification d’un Utilisateur (Suite) ALTER USER utilisateur [ IDENTIFIED { BY password [ REPLACE old_password ] | EXTERNALLY | GLOBALLY AS 'external_name' } ] [ DEFAULT TABLESPACE nomTablespace [QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ] ] [ TEMPORARY TABLESPACE nomTablespace [QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ].] [ PROFILE nomProfil ] [ DEFAULT ROLE { rôle1 [,rôle2]… | ALL [EXCEPT rôle1 [,rôle2]…] | NONE } [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ;

Gestion des utilisateurs Modification d’un Utilisateur (Suite) PASSWORD EXPIRE oblige l’utilisateur à changer son mot de passe à la prochaine connexion. DEFAULT ROLE affecte à l’utilisateur des rôles qui sont en fait des ensembles de privilèges (voir la section « Rôles »). Chaque utilisateur peut changer son propre mot de passe à l’aide de cette instruction. Les autres changements seront opérationnels aux prochaines sessions de l’utilisateur mais pas à la session courante (cas de l’utilisateur qui déclare un espace de travail alors qu’il est couramment connecté à un autre).

Gestion des utilisateurs Modification d’un Utilisateur (Exemples) Le tableau suivant décrit des modifications des utilisateurs créés auparavant : Instruction SQL Résultat ALTER USER Paul IDENTIFIED BY X_Men TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON TEMP; Paul a changé de mot de passe, son espace temporaire est illimité dans TEMP. Il ne devra plus changer son mot de passe à la première connexion. ALTER USER Paul2 DEFAULT TABLESPACE USERS QUOTA 10M ON USERS ACCOUNT UNLOCK; L’espace de travail de Paul2 est limité à 10 mégaoctets dans USERS. Le compte est débloqué.

Gestion des utilisateurs Suppression d’un utilisateur (DROP USER) Syntaxe La syntaxe SQL pour supprimer un utilisateur est la suivante : DROP USER utilisateur [CASCADE]; Oracle ne supprime pas par défaut un utilisateur s’il possède des objets (tables, séquences, index, déclencheurs, etc.). L’option CASCADE force la suppression et détruit tous les objets du schéma de l’utilisateur. Conséquences Les contraintes d’intégrité d’autres schémas qui référençaient des tables du schéma à détruire sont aussi supprimées. Les vues, synonymes, procédures ou fonctions cataloguées définis à partir du schéma détruit mais présents dans d’autres schémas ne sont pas supprimés mais invalidés. Les rôles définis par l’utilisateur à supprimer ne sont pas détruits par l’instruction DROP USER.

Les Profiles Introduction Un profil regroupe des caractéristiques système (ressources) qu’il est possible d’affecter à un ou plusieurs utilisateurs. Un profil est identifié par son nom. Un profil est créé par CREATE PROFILE, modifié par ALTER PROFILE et supprimé par DROP PROFILE. Il est affecté à un utilisateur lors de sa création par CREATE USER ou après que l’utilisateur est créé par ALTER USER. Le profil DEFAULT est affecté par défaut à chaque utilisateur si aucun profil défini n’est précisé. Création d’un profil (CREATE PROFILE) Pour pouvoir créer un profil vous devez posséder le privilège CREATE PROFILE. La syntaxe SQL est la suivante

Les Profiles Création -Syntaxe : CREATE PROFILE nomProfil LIMIT { ParamètreRessource | ParamètreMotdePasse } [ ParamètreRessource | ParamètreMotdePasse ]…; ParamètreRessource : { { SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL | CONNECT_TIME | IDLE_TIME | LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL | COMPOSITE_LIMIT } { entier | UNLIMITED | DEFAULT } | PRIVATE_SGA {entier[K|M] | UNLIMITED | DEFAULT}} ParamètreMotdePasse : { FAILED_LOGIN_ATTEMPTS | PASSWORD_LIFE_TIME |PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX | PASSWORD_LOCK_TIME | PASSWORD_GRACE_TIME } { expression | UNLIMITED | DEFAULT } }

Création – Options et paramètres Les Profiles Création – Options et paramètres Les options principales sont les suivantes : ● SESSIONS_PER_USER : nombre de sessions concurrentes autorisées. ● CPU_PER_SESSION : temps CPU maximal pour une session en centièmes de secondes. ● CPU_PER_CALL : temps CPU autorisé pour un appel noyau en centièmes de secondes. ● CONNECT_TIME : temps total autorisé pour une session en minutes (pratique pour les examens de TP minutés). ● IDLE_TIME : temps d’inactivité autorisé, en minutes, au sein d’une même session (pour les étudiants qui ne clôturent jamais leurs sessions). ● PRIVATE_SGA : espace mémoire privé alloué dans la SGA (System Global Area). ● FAILED_LOGIN_ATTEMPTS : nombre de tentatives de connexion avant de bloquer l’utilisateur (pour un code PIN, c’est trois). ● PASSWORD_LIFE_TIME : nombre de jours de validité du mot de passe (il expire s’il n’est pas changé au cours de cette période). ● PASSWORD_REUSE_TIME : nombre de jours avant que le mot de passe puisse être utilisé à nouveau. Si ce paramètre est initialisé à un entier, le paramètre PASSWORD_REUSE_MAX doit être passé à UNLIMITED.

Création – Options et paramètres (suite) Les Profiles Création – Options et paramètres (suite) PASSWORD_REUSE_MAX : nombre de modifications de mot de passe avant de pouvoir réutiliser le mot de passe courant. Si ce paramètre est initialisé à un entier, le paramètre PASSWORD_REUSE_TIME doit être passé à UNLIMITED. PASSWORD_LOCK_TIME : nombre de jours d’interdiction d’accès à un compte après que le nombre de tentatives de connexions a été atteint (pour la carte bleue, ça dépend de plein de choses, de toute façon vous en recevrez une autre toute neuve mais toute chère…). PASSWORD_GRACE_TIME : nombre de jours d’une période de grâce qui prolonge l’utilisation du mot de passe avant son changement (un message d’avertissement s’affiche lors des connexions). Après cette période le mot de passe expire. Les limites des ressources qui ne sont pas spécifiées sont initialisées avec les valeurs du profil DEFAULT. Par défaut toutes les limites du profil DEFAULT sont à UNLIMITED. Il est possible de visualiser chaque paramètre de tout profil en interrogeant certaines vues du dictionnaire des données (voir le chapitre suivant).

Les Profiles Création – Options et paramètres (suite) Exemple Le tableau suivant décrit la création d’un profil et l’explication de ses options : Instructions SQL Explication CREATE PROFILE profil_Etudiants LIMIT SESSIONS_PER_USER 3 CPU_PER_CALL 3000 CONNECT_TIME 45 LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 15K IDLE_TIME 40 FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 70 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10; • 3 sessions simultanées autorisées. • Un appel système ne peut pas consommer plus de 30 secondes de CPU. • Chaque session ne peut excéder 45 minutes. • Un appel système ne peut lire plus de 1 000 blocs de données en mémoire et sur le disque. • Chaque session ne peut allouer plus de 15 ko de mémoire en SGA. • Pour chaque session, 40 minutes d'inactivité maximum sont autorisées. • 5 tentatives de connexion avant blocage du compte. • Le mot de passe est valable pendant 70 jours et il faudra attendre 60 jours avant qu’il puisse être utilisé à nouveau. • 1 seul jour d’interdiction d’accès après que les 5 tentatives de connexion ont été atteintes. • La période de grâce qui prolonge l’utilisation du mot de passe avant son changement est de 10 jours.

Les Profiles Modification d’un profil (ALTER PROFILE) L’affectation de ce profil à l’utilisateur Paul est réalisée via l’instruction ALTER USER suivante : ALTER USER Paul PROFILE profil_Etudiants; Modification d’un profil (ALTER PROFILE) Pour pouvoir modifier un profil, vous devez posséder le privilège ALTER PROFILE. La syntaxe SQL est la suivante, elle utilise les options étudiées lors de la création d’un profil : ALTER PROFILE nomProfil LIMIT { ParamètreRessource | ParamètreMotdePasse } [ ParamètreRessource | ParamètreMotdePasse ]…; Il est plus prudent de restreindre certaines valeurs du profil DEFAULT à l’aide de cette commande (ALTER PROFILE DEFAULT LIMIT…).

Les Profiles Suppression d’un profil (DROP PROFILE) Pour pouvoir supprimer un profil, vous devez posséder le privilège DROP PROFILE. NB: Le profil DEFAULT ne peut pas être supprimé. La syntaxe ,SQL de suppression est la suivante : DROP PROFILE nomProfil [CASCADE] ; CASCADE permet de supprimer le profil même si des utilisateurs en sont pourvus (optiono bligatoire dans ce cas) et affecte le profil DEFAULT à ces derniers.

Privilèges Introduction (type de privilèges) Depuis le début du ce cours nous avons parlé de privilèges, il est temps à présent de préciser ce que recouvre ce terme. Un privilège) (sous-entendu utilisateur est un droit d’exécuter une certaine instruction SQL , ou un droit d’accéder à un certain objet d’un autre schéma Les privilèges système diffèrent sensiblement d’un SGBD à un autre. En revanche, les privilèges objets sont les mêmes et sont tous pris en charge via les instructions GRANT et REVOKE. Il y a deux type de privilèges : Privilège système : Est un droit d’exécuter une certaine instruction SQL Create Alter , DROP , Etc … Privilège objet): Droit d’accéder à un certain objet d’un autre schéma SELECT, DELETE, INSERT etc…

Privilèges Système Attribution de privilèges système (GRANT) La commande GRANT permet d’attribuer un ou plusieurs privilèges à un ou plusieurs bénéficiaires. Nous étudierons les rôles dans la section suivante. L’utilisateur qui exécute cette commande doit avoir reçu lui-même le droit de transmettre ces privilèges. Dans le cas des utilisateurs SYS et SYSTEM, la question ne se pose pas car ils ont tous les droits. La syntaxe est la suivante : GRANT { privilègeSystème | nomRôle | ALL PRIVILEGES } TO { utilisateur | nomRôle | PUBLIC [ IDENTIFIED BY motdePasse ] [ WITH ADMIN OPTION ] ;

Privilèges Système Attribution de privilèges système (suite) privilègeSystème : description du privilège système (exemple CREATE TABLE, CREATE SESSION, etc.). ALL PRIVILEGES : tous les privilèges système. PUBLIC : pour attribuer le(s) privilège(s) à tous les utilisateurs. IDENTIFIED BY désigne un utilisateur encore inexistant dans la base. Cette option n’est pas valide si le bénéficiaire est un rôle ou est PUBLIC. WITH ADMIN OPTION : permet d’attribuer aux bénéficiaires le droit de retransmettre le(s) privilège(s) reçu(s) à une tierce personne (utilisateur(s) ou rôle(s)). Grant connect to HR Grant create trigger to ORA_ESTM Grant create procedur e to TOTO Grant create session to HR Grant create vi ew to ORA_ESTM grant unlimited tablespace to HR

Privilèges Système Attribution de privilèges système (Exemple) Le tableau suivant décrit l’affectation de quelques privilèges système en donnant les explications associées : Administrateur Explication GRANT CREATE SESSION, CREATE SEQUENCE TO Paul; Paul peut se connecter à la base sous SQL*Plus par un outil (la console par exemple), par programme. Il peut créer des séquences. GRANT CREATE TABLE TO Paul with ADMIN OPTION Paul peut créer des tables dans son schéma et peut transmettre ce privilège à un tiers. CREATE ANY TABLE, DROP ANY TABLE TO Paul2; Paul2 peut se connecter à la base, créer et détruire des tables dans tout schéma.

Privilèges Système Retirer de privilèges système (REVOKE) Révocation de privilèges système (REVOKE) La révocation d’un ou de plusieurs privilèges est réalisée par l’instruction REVOKE. Cette commande permet d’annuler un privilège système ou un rôle d’un utilisateur ou d’un rôle. Nous verrons aussi que cette commande est opérationnelle pour les privilèges objets. Pour pouvoir révoquer un privilège ou un rôle, vous devez détenir au préalable ce privilège avec l’option WITH ADMIN OPTION. La syntaxe est la suivante : REVOKE { privilègeSystème | nomRôle | ALL PRIVILEGES } FROM { utilisateur | nomRôle | PUBLIC } [,{ utilisateur | nomRôle } ]… ; Les options sont les mêmes que pour la commande GRANT. ● ALL PRIVILEGES (valable si l’utilisateur ou le rôle ont tous les privilèges système). PUBLIC pour annuler les privilège à tout les utilisateur

Privilèges Système Retirer de privilèges système (Exemple de revoke) Le tableau suivant décrit la révocation de certains privilèges acquis des utilisateurs de notre exemple Administrateur Explication REVOKE CREATE SESSION FROM PUAL1, PAUL2; Paul et Paul2 ne peuvent plus se connecter à la base. Ils conservent néanmoins leurs autres privilèges. Un tiers peut ainsi créer par exemple des tables dans leur schéma (ils ont tous deux le privilège CREATE TABLE). REVOKE ALL PRIVILEGES FROM Paul2; Commande incorrecte car Paul2 n’a pas reçu tous les privilèges système.

Privilèges Objets Introduction Les privilèges objets sont relatifs aux données de la base et aux actions sur les objets (table,vue, séquence, procédure). Chaque type d’objet a différents privilèges associés comme l’indique le tableau suivant. Nous ne montrons ici que quelques-unes des possibilités de privilèges objets.

Privilèges Objets Syntaxe d’affectation de privilkège (Grant) Syntaxe générale GRANT { privilègeObjet | nomRôle | ALL PRIVILEGES } [(colonne1 [,colonne2]…)] [, { privilègeObjet | nomRôle | ALL PRIVILEGES }] [(colonne1 [,colonne2]…)]… ON { [schéma.]nomObjet | { DIRECTORY nomRépertoire | JAVA { SOURCE | RESOURCE } [schéma.]nomObjet } } TO { utilisateur | nomRôle | PUBLIC } [,{ utilisateur | nomRôle | PUBLIC } ]… [WITH GRANT OPTION] ; Syntaxe la plus utilisée Grant { privilègeObjet | nomRôle | ALL PRIVILEGES } on {objets} to Utilisateur

Privilèges Objets Syntaxe d’affectation de privilkège (Grant -suite) PrivilègeObjet : description du privilège objet (ex : SELECT, DELETE, etc.). colonne précise la ou les colonnes sur lesquelles se porte le privilège INSERT,ou UPDATE (exemple : UPDATE(typeAvion) pour n’autoriser que la modification de la colonne typeAvion). ALL PRIVILEGES donne tous les privilèges avec l’option GRANT OPTION) l’objet en question. PUBLIC : pour attribuer le(s) privilège(s) à tous les utilisateurs. WITH GRANT OPTION : permet de donner aux bénéficiaires le droit de retransmettre les privilèges reçus à une tierce personne (utilisateur(s) ou rôle(s)).

Privilèges Objets Retirer les privilèges (REVOKE ) Révocation de privilèges objets Pour pouvoir révoquer un privilège objet, vous devez détenir au préalable cette permission ou avoir reçu le privilège système ANY OBJECT PRIVILEGE. Il n’est pas possible d’annuler un privilège objet qui a été accordé avec l’option WITH GRANT OPTION. REVOKE { privilègeObjet | ALL PRIVILEGES } [(colonne1 [,colonne2]…)] ON { [schéma.]nomObjet | { DIRECTORY nomRépertoire | JAVA { SOURCE | RESOURCE } [schéma.]nomObjet } } FROM { utilisateur | nomRôle | PUBLIC [CASCADE CONSTRAINTS] ;

Privilèges Objets Retirer les privilèges (REVOKE - suite ) Certaines options sont similaires à celles de la commande GRANT. Les autres sont expliquées ci-après : CASCADE CONSTRAINTS concerne les privilèges REFERENCES ou ALL PRIVILEGES. Cette option permet de supprimer la contrainte référentielle entre deux tables de schémas distincts.

Privilèges Objets Retirer les privilèges (REVOKE - suite ) Exemple REVOKE UPDATE, SELECT ON Pilote FROM christian_soutou; christian_soutou ne peut plus modifier ni lire la table Pilote de olivier_teste. REVOKE REFERENCES Commande incorrecte car l’option CASCADE CONSTRAINT doit être utilisée. ON Pilote FROM christian_soutou CASCADE CONSTRAINTS; christian_soutou ne peut plus bénéficier de la table Pilote pour programmer une contrainte référentielle via une clé étrangère.

Privilèges Objets Transmission de privilèges (introduction ) Transmission des privilèges: On peut transmettre un privilège moins général que celui qu’on possède. Max possède le droit INSERT sur EMP, avec l’option GRANT OPTION . Il peut transmettre INSERT(NOM) sur EMP à un autre utilisateur. Un utilisateur peut obtenir le même privilège de la part de plusieurs utilisateurs différents, et le posséder de plusieurs manières (par ex. avec ou sans option GRANT).

Privilèges Objets Transmission de privilèges (Exemple ) Attribution des privilèges: Max est le propriétaire du schéma Emp, Service. Il effectue les ordres : GRANT SELECT, INSERT ON emp TO jules, lulu WITH GRANT OPTION; GRANT SELECT, INSERT ON Service TO jules, luluWITH GRANT OPTION; Jules effectue les ordres suivants : GRANT SELECT, INSERT ON emp TO zoe; GRANT SELECT ON service TO zoe; Lulu effectue les ordres suivants : GRANT SELECT, INSERT(NOM) ON emp TO zoe; Zoé a reçu les droits SELECT sur Emp et Service de deux utilisateurs différents. Elle a aussi reçu le droit INSERT(NOM) de deux façons différentes.

Privilèges Objets Transmission de privilèges (Exemple suite ) Rappel sur REVOKE REVOKE peut prendre 2 options RESTRICT et CASCADE. Lorsqu'on utilise REVOKE CASCADE, on supprime tous les privilèges transmis en cascade. (Un privilège obtenu par transmission (grant option) est abandonné si on supprime le privilège à celui qui l’a transmis). L’option REVOKE RESTRICT ne supprime que les privilèges qui n’ont pas été transmis. S’ils ont été transmis, le système renvoie une erreur.

REVOKE SELECT,INSERT ON emp FROM lulu CASCADE;

Rôles Introduction Les rôles sont des groupes nommés de privilèges, qu’on accorde, en groupe, à des utilisateurs ou à d’autres rôles. Permet de gérer les privilèges – pour une application (ex: ensemble de privilèges nécessaires pour exécuter l’application Paye) – Pour un groupe d’utilisateurs (privilèges des directeurs de département, des responsables de la paye, etc.)

Rôles Exemple Définition du role ‘manager’ : sql>CREATE ROLE manager; sql>GRANT CREATE VIEW, CREATE PROCEDURE TO manager; sql>GRANT SELECT, INSERT, UPDATE(SAL) ON emp TO manager; sql>GRANT SELECT, INSERT, UPDATE ON dept TO manager; GRANT manager TO user1, user2, user3; Pour annuler : sql>REVOKE manager FROM user1; sql>REVOKE INSERT ON emp FROM manager; Pour annuler un role, il faut avoir le privilège GRANT ANY ROLE, ou avoir les privilèges WITH ADMIN OPTION.

Rôles Rôles prédéfinis Oracle a des rôles prédéfinis : CONNECT : INSERT, UPDATE, DELETE, SELECT sur les relations dont on a les privilèges. Permet de créer des vues. RESOURCE : crée les tables, les vues, les triggers, les procédures. DBA : tous les privilèges système avec ADMIN OPTION EXP_FULL_DATABASE : tous les privilèges pour exporter les données de la base IMP_FULL_DATABASE : tous les privilèges pourimporter des données. select * from DBA_ROLE_privs-- where profile not like 'PROFIL_ETUDIANTS' ; select * from DBA_tab_privs;