Вы находитесь на странице: 1из 28

5

Administration de la sécurité utilisateur


Terminologie

Les termes suivants nous aiderons à mieux comprendre l’administration des utilisateurs de
base de données:

• Un compte utilisateur: constitue un moyen d'organiser l'appartenance des objets


de base de données et l'accès à ces objets.
• Un mot de passe: est un mode d'authentification par la base de données Oracle.
• Un privilège: est le droit d'exécuter un type particulier d'instruction SQL ou
d'accéder à l'objet d'un autre utilisateur.
• Un rôle: est un groupe nommé de privilèges liés qui sont accordés à des utilisateurs
ou à d'autres rôles.
• Un profil :impose un ensemble nommé de limites concernant l'utilisation de la base
de données et les ressources des instances. Il permet de gérer le statut des comptes et
les règles relatives aux mots de passe.
• Un quota: est une allocation d'espace dans un tablespace donné. Il constitue l'un
des moyens permettant de contrôler l'utilisation des ressources par les utilisateurs
Comptes utilisateur de base de données

Pour pouvoir accéder aux données, on doit se connecter via un compte utilisateur qui aura certains
privilèges et une certaine visibilité de la base de données. A chaque utilisateur de la base est associé un
compte unique.
Chaque compte utilisateur comporte les éléments importants suivants :
• Un nom utilisateur unique: Les noms utilisateur ne peuvent pas dépasser 30 caractères, ne
doivent pas contenir de caractères spéciaux et doivent commencer par une lettre.
• Une méthode d'authentification : La méthode la plus courante est l'authentification par mot de
passe, mais Oracle Database 11g prend en charge des méthodes d'authentification globales et
externes (notamment par biométrie, par certificat et par système tiers).
• Un tablespace par défaut : Il s'agit de l'emplacement dans lequel l'utilisateur crée des objets s'il
n'indique pas un 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 : Il s'agit de l'emplacement dans lequel l'instance crée les objets
temporaires (tris ou tables) pour le compte de l'utilisateur. Aucun quota n'est appliqué aux
tablespaces temporaires.
• Un profil utilisateur: sera détailler par la suite dans ce cours.
• Un statut de compte: fait référence aux statut du compte de l’utilisateur est-ce-qu’il est
verrouillé ou non, expiré ou non etc.
Schéma de base de données

• La base de données ORACLE comporte des schémas dans lesquels on retrouve


des objets tel que:
• Tables,
• Vues,
• Index,
• Procédures, ...

• Un SCHEMA permet de segmenter la base et de mieux gérer les privilèges.

• A chaque création d’un utilisateur correspond la création d’un schéma de


même nom:

Un compte utilisateur = Un schéma de BDD


Comptes d’administration prédéfinis

Il existe 2 utilisateurs par défaut sur toute base Oracle :


• l'utilisateur SYS: propriétaire des tables et des vues du dictionnaire de données.
• l'utilisateur SYSTEM : qui a simplement le droit de consultation de ces objets.

Ces 2 utilisateurs ont par défaut le rôle DBA, ce qui veut dire qu'ils ont accès à tous les objets
de tous les autres utilisateurs de la base, et qu'ils ont le droit d'exécuter certaines
commandes d'exploitation et d'administration.

Tout utilisateur qui dispose du privilège SYSDBA peut se connecter au compte SYS à l'aide de
la clause AS SYSDBA. Seuls les utilisateurs bénéficiant du privilège SYSDBA, SYSOPER ou
SYSASM sont autorisés à démarrer et arrêter les instances

Un DBA peut créer des utilisateurs en utilisant la requête CREATE USER.


Lorsqu’un utilisateur est créé, il ne possède aucun privilège. Le DBA doit lui donner des
privilèges souhaités .
Création d’un utilisateur

Avant de créer un utilisateur, il faut tenir en compte plusieurs paramètres:

• Le nom de l’utilisateur
• Le mécanisme d’authentification
• Tablespace: Identifiez les tablespaces dans lesquels l’utilisateur stockera
ses objets
• Quotas: décider des quotas pour chaque tablespace

Après avoir décidé les paramètres cités précédemment, l’administrateur peut


ainsi créer l’utilisateur et lui affecter des privilèges et des rôles ultérieurement.

La création peut se faire via:


• une commande SQL qui peut être exécuter via n’importe quel outils.
• L’assistant de création d’utilisateur d’Oracle Entrprise Manager.
Création via SQL

La requête suivante peut être exécutée dans n’importe quel outils tels que SQL*PLUS,
SQLDevelopper ou en ligne de commande :
CREATE USER YASSER IDENTIFIED BY
MESMOUDI2020
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp
QUOTA 15M on data01
PASSWORD EXPIRE
ACCOUNT UNLOK;
• IDENTIFIED:Cette clause indique la manière dont l'utilisateur sera identifié ( par l'OS ou par Oracle).
• DEFAULT TABLESPACE: Indique le Tablespace dans lequel les objets de l'utilisateur seront crées.
• TEMPORARY TABLESPACE: Indique le Tablespace dans lequel les tris par exemple seront effectués pour
cet utilisateur.
• QUOTA: Limite d'espace attribué à l'utilisateur sur un Tablespace.
• PASSWORD EXPIRE: Permet de forcer un changement de mot de passe à la première connexion de
l'utilisateur.
• ACCOUNT LOCK / UNLOCK: Permet de verrouiller ou déverrouiller le compte utilisateur.
Création via OEM

Une fois connecté sur OEM, rendez-vous sur l’onglet serveur. Cliquez sur le lien
Utilisateurs puis sur le bouton créer. L’interface de création d’utilisateur ci-dessous
s’affiche et assiste l’administrateur en lui demandant d’introduire les différentes
informations correspondantes:

N.B: vous pouvez effectuer l’affectation des rôles et des privilèges ainsi que
l’application des quotas aux tablespaces durant la création de l’utilisateur en
interrogeant les onglets correspondants.
Authentification des utilisateurs

Lors de la création de l’utilisateur, l’administrateur doit décider de la technique


d'authentification à utiliser, laquelle pourra être modifiée ultérieurement :

Mot de passe: L'authentification par mot de passe est aussi appelée


authentification par la base de données Oracle. Chaque utilisateur créé reçoit un
mot de passe qu'il devra saisir lors de chaque connexion.
Externe: Cette option utilise une méthode d’authentification extérieure à la BD
Oracle. Avec ce mode, la base utilise le système d’exploitation. On ajoute l’option
EXTERNALLY après le mot de passe. Ce mode nécessitera la configuration de
quelques paramètres Oracle avant de pouvoir fonctionner correctement.
Global: Avec l’option Oracle Advanced Security, ce mode d’authentification
permet d’identifier les utilisateur via Oracle Internet Directory.
Modification d’un compte utilisateur

La clause ALTER USER permet de modifier les différents paramètres du compte


d’un utilisateur comme:

• Forcer le changement du mot de passe:


• ALTER USER YASSER PASSWORD EXPIRE;
• Suppression du QUOTA
• ALTER USER YASSER QUOTA 0 ON data;
• les données existantes restent , mais plus possible d'en insérer
d'autres.
• Interdiction temporaire de connexion:
• ALTER USER YASSER ACCOUNT LOCK ;
• Appliquer un QUOTA illimité:
• ALTER USER YASSER QUOTA UNLIMITED ON data01;

Comme la création , la modification peut être faite à via Oracle Entreprise


Manage.
Suppression d’un compte utilisateur

La clause DROP USER permet de supprimer un utilisateur:

DROP USER YASSER

• L’option CASCADE permet de supprimer tous les objets du schéma puis


supprime l’utilisateur, exemple:

• DROP USER YASSER CASCADE;

Rq: impossible de supprimer un utilisateur connecté


Informations sur les utilisateurs

Pour pouvoir consulter les informations sur les utilisateurs, il suffit d’interroger
les vues: DBA_USERS et DBA_TS_QUOTAS

• Exemple:

Select username, default_tablespace, temporary_tablespace


from dba_users
where username = ‘YASSER';

select * from dba_ts_quotas


where username= ‘YASSER';

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Rôles & privilèges
Ces concepts sont mis en oeuvre pour protéger les données en accordant (ou retirant) des
privilèges à un utilisateur ou à un groupe d'utilisateurs
Un rôle est un regroupement de privilèges. Une fois créé il peut être assigné à un utilisateur ou
à un autre rôle
On nomme privilège le droit d'exécuter un type particulier d'instruction SQL ou d'accéder à
l'objet d'un autre utilisateur. La base de données Oracle permet de contrôler les opérations que
les utilisateurs peuvent effectuer ou non au sein de la base. Ils sont répartis en deux catégorie:
• 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. Par exemple,
le privilège permettant de créer des tablespaces est un privilège système. Les privilèges
système peuvent être accordés par l'administrateur ou par quelqu'un à qui la permission
d'administrer ces privilèges a été accordée explicitement.
• Privilèges 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. Sans permission spécifique, les utilisateurs ne
peuvent accéder qu'à leurs propres objets. 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
Accorder des privilèges système

Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose encore d'aucun droit
car aucun privilège ne lui a encore été assigné. Il ne peut même pas se connecter à la base.
Il faut donc lui assigner les privilèges nécessaires.
Pour lui assigner ces privilèges de niveau système il faut utiliser l'instruction GRANT dont voici la
syntaxe:

systeme_privilege représente un privilège système


role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges système (à l'exception de SELECT ANY DICTIONARY)
user représente le nom de l'utilisateur qui doit bénéficier du privilège
PUBLIC assigne le privilège à tous les utilisateurs
WITH ADMIN OPTION assigne à l'utilisateur le droit d'assigner, de retirer, de modifier et de
supprimer à son tour les privilèges du rôle reçus
Exemples

1. Pour que l'utilisateur puisse simplement se connecter à la base, il doit bénéficier du


privilège système CREATE SESSION:
GRANT CREATE SESSION TO YASSER
2. Ensuite il faut lui assigner des droits de création de table via le privilège CREATE TABLE
GRANT CREATE TABLE TO YASSER
Et il en va de même pour tous les autres privilèges qui lui sont assignés. On peut assigner
plusieurs privilèges au sein d’une même commande:
GRANT
CREATE SESSION,
CREATE TABLE,
CREATE VIEW
TO YASSER;
Accorder des privilèges Objet
Pour lui assigner ces privilèges de niveau objeti, l faut utiliser l'instruction GRANT dont voici la
syntaxe:

object_privilege représente un privilège objet


role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges
assignés à l'exécuteur de l'instruction
column représente le nom de colonne d'une table
schema représente le nom d'un schéma
object représente le nom d'un objet du schéma
directory_name représente le nom d'une directory
JAVA SOURCE représente le nom d'une source Java
JAVA RESOURCE représente le nom d'une ressource Java
WITH GRANT OPTION assigne à l'utilisateur le droit d'assigner à son tour le privilège reçu à un
autre utilisateur
(WITH GRANT OPTION s'applique à un utilisateur ou à PUBLIC, mais pas à un rôle)
WITH HIERARCHY OPTION assigne le privilèges aux sous-objets
Exemples

1. Pour assigner à l'utilisateur MOHAMED le droit de sélectionner, insérer, modifier et


supprimer des lignes dans la table EMPLOYEE de l'utilisateur YASSER:
GRANT
SELECT ,
INSERT ,
UPDATE ,
DELETE
ON YASSER.EMPLOYEE
TO MOHAMED;
2. Une liste de colonnes peut être indiquée dans l'instruction afin de restreindre davantage
les droits sur une table

GRANT
UPDATE (JOB, DATE_ENTREE),
ON YASSER.EMPLOYEE
TO MOHAMED;
L'utilisateur MOHAMED peut modifier la table EMPLOYEE mais uniquement
les colonnes JOB et DATE_ENTREE.
Révoquer des privilèges système
Les privilèges système qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés
avec l'instruction REVOKE:

Les arguments sont identiques à ceux décrits pour l'instruction GRANT

Les utilisateurs disposant de l'option ADMIN OPTION pour un privilège système peuvent révoquer
ce privilège pour tout autre utilisateur de la base de données.
L'utilisateur disposant du rôle DBA peut révoquer les privilèges CONNECT, RESOURCE, DBA ou tout
autre privilège système ou rôle.

N.B: Retirer des privilèges à un utilisateur ne supprime pas son schéma ni les objets qu'il
contient
Exemples
Cette image illustre le scénario suivant:

1. Le DBA octroie le privilège système CREATE TABLE à Joe avec l'option ADMIN OPTION
2. Joe crée une table.
3. Joe accorde le privilège système CREATE TABLE à Emily.
4. Emily crée une table.
5. Le DBA révoque le privilège système CREATE TABLE pour Joe.

Résultat: La table créée par Joe existe toujours, mais Joe ne peut plus en créer d'autres. La table
d'Emily existe toujours et Emily conserve le privilège système CREATE TABLE.
Révoquer des privilèges objet
Les privilèges objet qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés
avec l'instruction REVOKE :

Les arguments sont identiques à ceux décrits


pour l'instruction GRANT à part:

CASCADE CONSTRAINTS (applicable uniquement


pour révoquer des privilèges REFERENCES)
supprime toutes les contraintes d'intégrité référentielles
définies par l'utilisateur
FORCE retire le privilège EXECUTE sur les types objet

Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec l'option ADMIN
OPTION.
L'utilisateur disposant du rôle DBA ne peut pas retirer de privilèges qu'il n'a pas accordé
Exemples
Cette image illustre le scénario suivant:

1. Joe reçoit le privilège objet SELECT sur la table EMPLOYEES, avec l'option GRANT OPTION.
2. Joe accorde à Emily le privilège SELECT sur la table EMPLOYEES.
3. Le privilège SELECT de Joe est révoqué.

Résultat: Cette révocation est répercutée sur Emily.


Informations sur les privilèges

Pour pouvoir consulter les informations sur les privilèges système, il suffit
d’interroger des vues comme : DBA_SYS_PRIVS et SESSION_PRIVS

Pour pouvoir consulter les informations sur les privilèges objet, il suffit
d’interroger des vues comme : DBA_TAB_PRIVS, USER_TAB_PRIVS et
DBA_COL_PRIVS

• Exemple:
Select * from DBA_SYS_PRIVS;
Select * from SESSION_PRIVS;
Select * from DBA_TAB_PRIVS;
Select * from USER_TAB_PRIVS;
select owner, table_name, column_name from DBA_COL_PRIVS;

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Principes généraux appliqués aux privilèges
• Un utilisateur possède automatiquement tous les privilèges sur un objet qui lui
appartient,
• Un utilisateur ne peut pas donner plus de privilèges qu'il n'en a reçu,
• s'il n'a pas reçu le privilège avec l'option WITH GRANT OPTION, un utilisateur ne
peux pas assigner à son tour ce même privilège,
• Un utilisateur munis des droits DBA ne pourra pas accorder de privilèges sur un
objet qui ne lui appartient pas
• Pour pouvoir mettre à jour ou supprimer des lignes d'une table, les privilèges
UPDATE ET DELETE ne suffisent pas. Le privilège SELECT est nécessaire
Création de rôle

Si l'on prend l'exemple de plusieurs utilisateurs travaillant au même service, ils doivent recevoir
un certain nombre de privilèges sur un certain nombre d'objets. Le DBA doit leur attribuer des
privilèges identiques. C'est pourquoi il est souhaitable de pouvoir regrouper des privilèges
identiques dans un même ensemble. Cet ensemble s'appelle un rôle et se créé avec
l'instruction CREATE ROLE

role représente le nom du rôle


NOT IDENTIFIED (défaut) indique qu'aucun mot de passe n'est nécessaire pour activer le rôle
IDENTIFIED BY password indique qu'un mot de passe est nécessaire pour activer le rôle
IDENTIFIED USING package indique qu'un package va être utilisé pour fixer les droits de
l'utilisateur
IDENTIFIED EXTERNALLY indique que l'autorisation provient d'une source externe (S.E.)
IDENTIFIED GLOBALLY pour un user GLOBAL géré par exemple par Enterprise Directory Service
Exemples

1. Lorsque le rôle est créé, il ne contient rien et il faut l'alimenter à l'aide d'instructions
GRANT:
CREATE ROLE magasin;

GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.EMPLOYEE TO magasin


GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.DEPOT TO magasin
GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.FOURNISSEUR TO magasin
2. Une fois le rôle créé, il peut être assigné à un utilisateur ou à un autre rôle:
GRANT magasin TO YASSER;
Rôles prédéfinies
Il existe plusieurs rôles qui sont définis automatiquement lors de la création de la bases de
données. Trois rôles existent en standard:
• CONNECT: Ce rôle permet l'ouverture (CREATE SESSION) d'une session.

• RESOURCE: Ce rôle permet de créer des types, tables, clusters, opérateurs, séquences,
index et des procédures.

N.B: Le rôle RESOURCE accorde un privilège UNLIMITED QUOTA à l'utilisateur est n'est
donc à assigner qu'en connaissance de cause
• DBA: La liste des privilèges assignés au rôle DBA est trop longue du fait que ce rôle est
octroyé aux utilisateurs ayant des droits d'administration de la base. On peut la consulter via
la commande: select * from DBA_SYS_PRIVS where grantee='DBA‘
D'une façon générale, il est fortement déconseillé d'utiliser ces rôles standards car ils
accordent trop de droits aux utilisateurs
Informations sur les rôles

Pour pouvoir consulter tous les rôles de la BD il suffit de consulter la vue:


DBA_ROLES

La liste des rôles assignés à un utilisateur s'obtient via les vues: DBA_ROLE_PRIVS,
USER_ROLE_PRIVS

La liste des rôles assignés à l'utilisateur au cours de sa session est visible via la
vue SESSION_ROLES

• Exemple:

Select * from DBA_ROLES;


Select * from DBA_ROLE_PRIVS where grantee=‘SCOTT’;
Select * SESSION_ROLES;

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Principes généraux appliqués aux rôles

• Les privilèges sont accordés aux rôles (et révoqués) comme si le rôle était un
utilisateur.
• Un rôle peut être constitué de privilèges système et objet.
• Un rôle peut être activé ou désactivé pour chaque utilisateur auquel il est accordé.
• Les rôles sont accordés aux utilisateurs ou à d'autres rôles (et révoqués de la même
manière) comme s'il s'agissait de privilèges système
• L'activation d'un rôle peut nécessiter un mot de passe
• Les rôles n'appartiennent à personne et ne résident dans aucun schéma

Вам также может понравиться