Principes: Pour la gestion de la sécurité, Oracle permet :
•de définir les utilisateurs qui peuvent se connecter à la base de données (avec une identification par le système
d’exploitation ou par la base de données) ;
•de définir dans quel(s) tablespace(s) un utilisateur peut créer des objets (éventuellement aucun) ;
•de limiter l’utilisation des ressources système ;
•d’imposer une politique de gestion de mots de passe (expiration périodique, non- réutilisation avant un certain temps)
•de définir les droits de chaque utilisateur à l’intérieur de la base de données.
Dans une base de données Oracle, les droits des utilisateurs sont gérés avec la notion de privilège. Un privilège est le
droit :
•d’exécuter un ordre SQL en général (ex : créer une table) : c’est la notion de privilège système ;
•d’accéder à un objet d’un autre utilisateur (ex : MAJ les données d'une table) : c’est la notion de privilège objet.
Les privilèges peuvent être attribués directement aux utilisateurs ou par l’intermédiaire de rôles. Un rôle est un
regroupement nommé de privilèges (systèmes et objets) qui peut être attribué en tant que tel à un utilisateur ; cet
utilisateur reçoit alors automatiquement les privilèges contenus dans le rôle. Les rôles facilitent la gestion des droits.
Créer et modifier les utilisateurs :
1. Mode d’identification de l’utilisateur : Un utilisateur peut être identifié par Oracle ou par le système
d’exploitation. Les deux modes d’identification sont utilisables simultanément dans la même base de données.
a. Identification par Oracle : L’utilisateur se connecte à la base en saisissant un nom et un mot de passe. Oracle
vérifie le nom et le mot de passe de l’utilisateur : SQL> CONNECT nomuser/motdepasse
b. Identification par le système d’exploitation : L’utilisateur se connecte à la base sans saisir de nom ni de mot de
passe : SQL> CONNECT /
Oracle ne vérifie pas le mot de passe mais contrôle simplement que le nom de l’utilisateur, au niveau du système
d’exploitation, correspond à un nom d’utilisateur dans la base de données. L’identification initiale a été réalisée par le
système d’exploitation. Les fonctionnalités de gestion des mots de passe proposées par Oracle ne sont pas utilisables
(ce n’est pas Oracle qui gère le mot de passe).
2. Création d’un utilisateur : L’ordre SQL CREATE USER permet de créer un nouvel utilisateur.
CREATE USER nom IDENTIFIED { BY mot_de_passe | EXTERNALLY | }
[ DEFAULT TABLESPACE nom_tablespace ]
[ TEMPORARY TABLESPACE nom_tablespace ]
[ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [,...] ]
[ PROFILE nom_profil ]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ] ;
Exemple : Utilisateur identifié par Oracle avec des clauses supplémentaires
CREATE USER user1 IDENTIFIED BY tempo
DEFAULT TABLESPACE data
QUOTA UNLIMITED ON data
PASSWORD EXPIRE;
Pour qu’un nouvel utilisateur puisse effectivement se connecter, il faut en plus lui donner le droit de le faire, en lui
attribuant le privilège système CREATE SESSION. Il est donc possible d’avoir des comptes pour les utilisateurs sans que
ces derniers aient le droit de se connecter. Cette fonctionnalité peut toujours être utilisée mais il est plus simple de
verrouiller/déverrouiller explicitement le compte (ACCOUNT LOCK | UNLOCK).
Les options de l’ordre SQL CREATE USER sont :
nom : Le nom de l’utilisateur doit respecter les règles de nommage d’Oracle. Si ce n’est pas le cas, il faut placer le nom
entre guillemets.
IDENTIFIED : Cette clause indique si l’utilisateur est identifié par le système d’exploitation (EXTERNALLY) ou par Oracle
(BY mot_de_passe). Dans le cas d’une identification par Oracle, le mot de passe initial de l’utilisateur est spécifié. Depuis
la version 11, les mots de passe sont par défaut, sensibles à la casse (paramètre SEC_CASE_SENSITIVE_LOGON égal à
TRUE par défaut). Si vous souhaitez avoir des mots de passe non sensibles à la casse, il suffit d’affecter la valeur FALSE
au paramètre SEC_CASE_SENSITIVE_LOGON (mais ce n’est pas conseillé pour la sécurité).
DEFAULT TABLESPACE : Cette clause indique dans quel tablespace les segments de l’utilisateur sont créés par défaut
(c’est-à-dire si aucune clause TABLESPACE n’est présente lors de la création du segment). Si la clause est omise, le
tablespace permanent par défaut de la base de données est affecté à l’utilisateur. La notion de tablespace par défaut
n’empêche pas l’utilisateur de créer des objets dans un autre tablespace (s’il a un quota sur le tablespace en
question) ; elle permet simplement de spécifier un tablespace par défaut si l’utilisateur omet la clause TABLESPACE lors
de la création d’un segment. Cette clause présente surtout un intérêt pour les utilisateurs qui peuvent créer des
segments : les développeurs, les testeurs, plus rarement les utilisateurs finaux.
TEMPORARY TABLESPACE : Cette clause indique dans quel tablespace les segments temporaires de l’utilisateur sont
créés (lors d’un tri, par exemple). Vous pouvez indiquer le nom d’un tablespace temporaire, ou le nom d’un groupe de
tablespaces temporaires. Si la clause est omise, le tablespace temporaire par défaut de la base de données est affecté à
l’utilisateur.
QUOTA : Cette clause indique dans quel(s) tablespace(s) l’utilisateur peut créer des objets, et jusqu’à quelle limite. La
notion de QUOTA permet de limiter l’espace qu’un utilisateur peut employer dans un tablespace avec les segments qu’il
crée. Cette fonctionnalité ne concerne que les utilisateurs qui peuvent créer des segments, et non les utilisateurs finaux
d’un applicatif qui se contentent d’employer des objets déjà existants et qui appartiennent généralement à un compte
distinct (en quelque sorte le "propriétaire" de l’application). Par défaut, les utilisateurs n’ont aucun quota sur aucun
tablespace, sauf les DBA qui ont un quota illimité sur tous les tablespaces. Si un utilisateur a le droit de créer des
segments, il faut lui donner explicitement un quota sur au moins un tablespace. Le fait qu’une clause DEFAULT
TABLESPACE ait été utilisée ne donne aucun quota sur le tablespace en question ; ce sont deux mécanismes différents.
Dans la pratique, il ne faut donner des quotas qu’aux utilisateurs qui en ont besoin (les développeurs, le compte
1