Chap 3
Chap 3
Chap 3
I. Introduction
La gestion des utilisateurs est au coeur de la sécurité de la base de données, c’est l’une
des tâches les plus basiques d’un administrateur. Le SGBD Oracle utilise son propre ensemble
d'usagers qui est distinct de celui défini pour l'accès et les ressources du système
informatique. Chaque usager est repéré par un nom et un mot de passe. Chaque utilisateur de
la base de données doit avoir un ou plusieurs privilèges pour exécuter un type particulier
d'instruction SQL ou d'accéder à l'objet d'un autre utilisateur.
- Un nom utilisateur unique nom_ut : Les noms utilisateur ne peuvent pas dépasser
30 octets, ne doivent pas contenir de caractères spéciaux et doivent commencer par
une lettre.
- Une méthode d'authentification mdp: La méthode la plus courante est l'authentification
par mot de passe, mais Oracle Database 10g prend en charge plusieurs autres
méthodes d'authentification, notamment l'authentification par biométrie, par certificat
et par système tiers.
- Un tablespace par défaut nom_def_TS : Il s'agit de l'emplacement dans lequel
l'utilisateur crée des objets s'il n'a pas indiqué d'autre tablespace. Notez que le fait
qu'un utilisateur dispose d'un tablespace par défaut n'implique pas qu'il bénéficie du
privilège permettant de créer des objets dans ce tablespace, ni qu'il dispose d'un quota
d'espace dans ce tablespace. En effet, les privilèges et les quotas sont accordés
séparément.
- Un tablespace temporaire nom_tmp_TS : Il s'agit de l'emplacement dans lequel
l'utilisateur peut créer des objets temporaires, tels que des tris et des tables
temporaires.
- Un profil utilisateur nom_prof : Il s'agit d'un ensemble de restrictions concernant les
ressources et les mots de passe qui est affecté à l'utilisateur.
- Lorsque le mot clé composé PASSWORD EXPIRE est précisé, l’utilisateur sera obligé
de modifier son mot de passe dès la première connexion. Ainsi, même celui qui a créé
l’utilisateur en question ne connaitra plus le mot de passe.
- Un groupe de consommateurs de ressources : Il est utilisé par le gestionnaire de
ressources.
- Un statut de verrouillage ACCOUNT {LOCK|UNLOCK}] : Les utilisateurs n'ont accès
qu'aux comptes "déverrouillés".
Exemple :
La requête suivante est un exemple de création de l’utilisateur ADER dont le mot de passe
expire et auquel on affectera un quota de 20M sur son tablespace par défaut data. :
PASSWORD EXPIRE;
A noter que spécifier le tablespace data comme tablespace par défaut de ADER ne suffit pas
pour lui permettre d’y stocker des segments, il faut qu’il ait un quota dessus.
2. Modifier un utilisateur:
Un utilisateur peut être modifié via la requête ALTER USER dont la syntaxe est la suivante :
[IDENTIFIED BY mdp]
[PROFILE nom_prof]
[PASSWORD EXPIRE]
[ACCOUNT {LOCK|UNLOCK}]
IDENTIFIED BY ADER2 ;
ACCOUNT LOCK
3. Supprimer un utilisateur:
La requête DROP permet la suppression d’un utilisateur. Son utilisation dans sa forme
la plus simple ne réussit pas si l’utilisateur en question possède un schéma (et donc des
objets). Dans ce cas, il faut ajouter le mot clé CASCADE à la fin de la requête, ce qui
provoquera et la suppression de l’utilisateur et de son schéma. La syntaxe de la requête de
suppression est la suivante :
Syntaxe
Exemple :
Les utilisateurs privilégiés possèdent des droits d'administration ou des droits système, par
exemple :
5. Recommandation :
Selon le principe du moindre privilège, ces comptes ne sont pas utilisés pour les opérations de
routine. Les utilisateurs qui ont besoin de privilèges DBA disposent de comptes distincts
auxquels sont affectés les privilèges requis. Ainsi, Jim peut avoir un compte ayant peu de
privilèges, nommé jim, et un compte doté de privilèges élevés, appelé jim_dba. Cette méthode
permet d'appliquer le principe du moindre privilège. Elle élimine tout besoin de recourir à un
partage de compte et permet de réaliser des audits sur des actions individuelles.
Les comptes SYS et SYSTEM sont obligatoires dans la base de données. Par conséquent,
vous ne pouvez pas les supprimer.
2. Types de privilèges
Les privilèges sont répartis en deux catégories :
- Privilèges système,
- Privilèges objet.
a- Privilèges système :
Chaque privilège système autorise un utilisateur à effectuer une certaine opération de base de
données ou une certaine classe d'opérations. Un privilège système est un privilège qui est relié
avec le langage de définition de données et le langage de contrôle de données. C’est un
privilège qui donne le droit d’utiliser les requêtes CREATE, ALTER, et DROP sur les
différents types d’objets relatifs à la base de données et aussi les requêtes GRANT et
REVOKE qui permettent d’attribuer/retirer des privilèges.
Avec l’option WITH ADMIN OPTION, l’utilisateur récepteur pourra à son tour
attribuer le privilège en question à d’autres utilisateurs.
Exemple :
SQL>CONNECT SYSTEM/admin;
L’utilisateur SYSTEM autorise l’utilisateur HR a créer des table et créer une session pour se
connecter.
SQL>CONNECT HR/HR;
L’utilisateur HR après avoir obtenue les prévilèges système CREATE TABLE, CREATE
SESSION avec l’option WITH ADMIN OPTION , il pourra alors autoriser d’autre utilisateur,
comme ici USER1 , a créer des tables.
b- Privileges objet :
Les privilèges objet permettent à un utilisateur d'effectuer une action particulière sur un
objet spécifique, tel qu'une table, une vue, une séquence, une procédure, une fonction ou un
package.
Ils portent généralement sur les requêtes de manipulation de données, à savoir INSERT,
UPDATE, DELETE et SELECT, mais aussi EXECUTE lorsqu’il s’agit d’un programme
PL/SQL, qui seront définis sur un objet bien spécifié.
Les privilèges objet peuvent être octroyés par le propriétaire d'un objet, par
l'administrateur, ou par un utilisateur auquel la permission d'accorder des privilèges sur l'objet
a été attribuée explicitement.
TO {user1[,user2,…]|PUBLIC}
Voici une liste détaillant les différents Objets Oracle et leurs Privilèges.
Functions
Procedures Sequence Table View
Packages
ALTER - x x -
DELETE - - x x
EXECUTE x - - -
FLASHBACK - - x x
INSERT - - x x
SELECT - x x x
UPDATE - - x x
Exemple:
SQL>connect HR/HR
Syntaxe :
Scénario
Résultat
La table de Jeff existe toujours mais aucune autre table ne peut être créée.
La table d'Emi existe toujours et Emi conserve le privilège système CREATE TABLE.
b- Privilèges objet :
La syntaxe de retirement d’un privilège objet est la suivante :
FROM {user1[,user2…]|PUBLIC}
La révocation de privilèges objet accordés avec l'option WITH GRANT OPTION produit
également des effets en cascade.
Scénario
1. Jeff se voit octroyer le privilège objet SELECT sur la table EMPLOYEES, avec
l'option GRANT OPTION.
IV. Rôles
1. Définition :
Un rôle est un ensemble de privilèges qui est attribué à l’utilisateur. Ainsi, lorsqu’on un rôle
est attribué à un utilisateur, tous ses privilèges lui sont affectés.
2. Caractéristiques :
Les rôles ont été mis en place afin de faciliter l'administration des privilèges de la base de
données.
Gestion simplifiée des privilèges : Utilisez des rôles pour simplifier la gestion des
privilèges. Plutôt que d'accorder le même ensemble de privilèges à plusieurs utilisateurs,
vous pouvez accorder ces privilèges à un rôle, puis octroyer ce rôle à chaque utilisateur.
Gestion dynamique des privilèges : Si les privilèges associés à un rôle sont modifiés,
tous les utilisateurs auxquels ce rôle est accordé bénéficient automatiquement et
immédiatement des privilèges modifiés.
Disponibilité sélective des privilèges : Les rôles peuvent être activés et désactivés
afin d'activer ou de désactiver temporairement les privilèges correspondants. L'activation
d'un rôle peut également être utilisée pour vérifier que le rôle a été accordé à un utilisateur.
Attribuer/retirer un privilège, qu’il soit objet ou système, à un rôle nécessite les mêmes
privilèges d’attribution à un utilisateur. En d’autres termes, si un utilisateur a le droit
d’attribuer/retirer un privilège à un autre utilisateur alors il a le droit de l’attribuer/retirer à un
rôle. C’est pour cette raison qu’on dit qu’un rôle n’appartient à personne.
Remarque :
Il est à noter que si un privilège est attribué deux fois à un utilisateur (une première
fois directement, et une deuxième fois via un rôle), et que par la suite le privilège est
retiré, alors l’utilisateur continuera en possession du privilège à travers le rôle.
Il existe plusieurs rôles qui sont définis automatiquement pour les bases de données Oracle
lorsque vous exécutez les scripts de création de la base. Le rôle CONNECT est accordé
automatiquement à tout utilisateur créé avec Enterprise Manager. Dans les versions
antérieures de la base de données (avant Oracle Database 10g Release 2), le rôle CONNECT
incluait davantage de privilèges, tels que CREATE TABLE et CREATE DATABASE LINK.
Ces privilèges ont été supprimés pour des raisons de sécurité.
- Mis à part le rôle DBA, il n'est pas conseillé d'utiliser les rôles prédéfinis d'Oracle
mais plutôt de créer et d'utiliser vos propres rôles.
- Il est à noter que les informations sur les rôles sont accessibles dans les vues du
dictionnaire de donnée DBA_ROLES (ensemble des rôles), DBA_SYS_PRIVS (les
privilèges accordés à chaque rôle).
e) Modifier un rôle
La seule chose qu'il est possible de modifier dans un rôle est son système de protection par
mots de passe. Ceci peut être fait grâce à la syntaxe suivante:
V. Profile
Les profils imposent un ensemble nommé de limites concernant l'utilisation de la base
de données et les ressources des instances. Les profils gèrent également le statut des comptes
et imposent des restrictions sur les mots de passe des utilisateurs (longueur, délai d'expiration,
etc.). Chaque utilisateur se voit affecter un profil et ne peut appartenir qu'à un seul profil à la
fois. Si des utilisateurs sont connectés lorsque vous modifiez leur profil, le changement ne
prend effet que lors de leur prochaine connexion.
• CPU : Les ressources CPU peuvent être limitées par session ou par appel. Avec une
limite CPU/Session de 1 000, une session qui utilise ce profil et qui consomme plus
de 10 secondes de temps CPU (les limites de temps CPU étant exprimées en
centièmes de seconde) reçoit une erreur et est déconnectée :
ORA-02392: exceeded session limit on CPU usage, you are being logged off
• Disk I/O : Cette option limite la quantité de données qu'un utilisateur peut lire, par
session ou par appel. Les options Reads/Session et Reads/Call limitent le nombre
total de lectures réalisées à partir de la mémoire et du disque. Elles permettent de
s'assurer, par exemple, qu'aucune instruction consommant beaucoup d'E/S n'utilise
trop intensément la mémoire et les disques.