Blog ENI : Toute la veille numérique !
💥Offre BLACK FRIDAY : Accès illimité 24h/24 à tous nos livres & vidéos ! Cliquez ici
💥Offre BLACK FRIDAY : Accès illimité 24h/24 à tous nos livres & vidéos ! Cliquez ici

Gestion des utilisateurs et de leurs droits

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, etc.) ;

  • 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 (par exemple, créer une table) : c’est la notion de privilège système ;

  • d’accéder à un objet d’un autre utilisateur (par exemple, mettre à jour les données de la table CLIENT) : 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...

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. Depuis la version 18c, il est aussi possible de créer des utilisateurs sans identification, qui ne peuvent donc pas se connecter (comptes dits "schéma seul").

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 oheu/rx239$ 
Connecté. 

Les fonctionnalités de gestion des mots de passe proposées par Oracle sont utilisables.

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 / 
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).

Pour faire le lien entre le nom de l’utilisateur dans le système d’exploitation et le nom de l’utilisateur dans la base de données, Oracle utilise un préfixe défini par le paramètre OS_AUTHENT_PREFIX (par défaut égal à OPS$).

Par exemple, l’utilisateur ayant pour nom vdep au niveau du système d’exploitation pourra se connecter à la base par un CONNECT / uniquement s’il existe un compte Oracle ops$vdep.

Sur plate-forme Windows, le nom de domaine, ou à défaut, le nom de la machine, fait partie du nom de l’utilisateur : SRVWINORA\VDEP par exemple. C’est ce nom complet qui doit être préfixé pour constituer le nom du compte Oracle (le tout en majuscules) : OPS$SRVWINORA\VDEP par exemple.

Le préfixe peut être égal à une chaîne...

Utiliser les profils

1. Présentation

Un profil est un ensemble nommé de limitations de ressources qui peut être attribué à un utilisateur.

Les ressources suivantes peuvent être limitées :

  • temps CPU par appel et/ou par session ;

  • nombre de lectures logiques par appel et/ou par session ;

  • nombre de sessions ouvertes simultanément par un utilisateur ;

  • temps d’inactivité par session ;

  • durée totale de la session ;

  • quantité de mémoire privée dans la SGA (configuration serveurs partagés uniquement).

Une lecture logique correspond à une lecture de bloc lors d’une requête, que ce bloc soit déjà présent en mémoire (dans le Database Buffer Cache) ou lu sur disque (dans ce cas, la lecture logique correspond aussi à une lecture physique).

Les profils peuvent aussi être utilisés pour mettre en œuvre une politique de gestion des mots de passe.

Les fonctionnalités suivantes peuvent être mises en œuvre :

  • verrouillage de compte (et durée de verrouillage) au-delà d’un certain nombre d’échecs de tentative de connexion ;

  • verrouillage de compte au-delà d’un certain nombre de jours d’inactivité (c’est-à-dire sans connexion - apparu en version 12.2) ;

  • durée de vie des mots de passe (avec éventuellement une période de grâce) ;

  • non-réutilisation d’un mot de passe avant un certain temps ou avant un certain nombre de changements ;

  • complexité du mot de passe.

Le profil nommé DEFAULT est automatiquement créé lors de la création de la base de données. Ce profil est attribué par défaut aux utilisateurs. Par défaut, ce profil DEFAULT n’impose aucune limite pour les ressources ; par contre, depuis la version 11, ce profil comporte des limites pour les mots de passe (voir ci-après).

La limitation des ressources à l’aide des profils n’offre pas de nombreuses possibilités. Si vous souhaitez contrôler plus précisément l’attribution de ressources (CPU, espace d’annulation, durée d’inactivité) à des utilisateurs ou groupes d’utilisateurs, vous pouvez utiliser le Database...

Gérer les droits

1. Privilège système

a. Définition

Un privilège système est le droit d’exécuter un ordre SQL en général, par exemple créer une table.

Chaque ordre SQL a généralement, au moins, un privilège système associé qui porte le même nom que l’ordre SQL. Par exemple, l’ordre SQL CREATE TABLE possède un privilège système associé CREATE TABLE (donne le droit de créer une table dans son propre schéma).

Certains privilèges système reprennent le nom de l’ordre SQL avec le mot-clé ANY. Dans ce cas, le privilège système permet d’exécuter l’ordre dans n’importe quel schéma de la base de données. Par exemple, le privilège système CREATE ANY TABLE donne le droit de créer une table dans n’importe quel schéma de la base de données.

Lorsque l’ordre SQL concerné n’est pas relatif aux objets d’un schéma, il n’y a pas de privilège ANY (ANY veut dire dans n’importe quel schéma) : par exemple, le privilège pour créer un tablespace est CREATE TABLESPACE ; il n’y a pas de CREATE ANY TABLESPACE (un tablespace n’appartient pas à un schéma).

Les privilèges système sont source de pouvoir et de danger, surtout ceux qui concernent la gestion des utilisateurs et des droits (CREATE USER, ALTER USER, DROP USER, GRANT ANY PRIVILEGE, GRANT ANY ROLE) et ceux qui permettent de supprimer des objets (DROP ANY TABLE, DROP TABLESPACE, etc.) ; les privilèges système doivent donc être attribués avec parcimonie (notamment les privilèges ANY).

Pensez que si vous donnez le privilège ALTER USER à un utilisateur, il pourra modifier les comptes utilisateur (changer les mots de passe par exemple), dont le vôtre.

Quelques privilèges système particuliers :

CREATE SESSION

Donne le droit à l’utilisateur de se connecter.

SELECT ANY DICTIONARY

Donne le droit à l’utilisateur d’interroger n’importe quel objet du dictionnaire de données dans le schéma SYS.

Si un utilisateur n’a pas le privilège CREATE SESSION, l’erreur ORA-01045 est retournée lors...

Synthèse

1. Les différents types de comptes

Une base Oracle contient en général quatre types de comptes.

Administration

Un tel compte a tous les privilèges système nécessaires, notamment pour la gestion des structures de stockage et la gestion des utilisateurs. Les comptes d’administration ont, de plus, un accès complet au dictionnaire de données.

Ces privilèges peuvent être obtenus par l’intermédiaire du rôle DBA ou d’un rôle équivalent.

Développement/hébergement du schéma applicatif

Un tel compte a les privilèges système nécessaires pour la création des différents types d’objets (tables, vues, procédures...) et il possède un quota sur au moins un tablespace. Les privilèges système requis peuvent être obtenus par l’intermédiaire des rôles CONNECT et RESOURCE ou d’un rôle équivalent que vous avez créé (conseillé).

Pour les comptes de développement, il peut être judicieux de prévoir un tablespace dédié et de définir un quota uniquement sur ce tablespace. Dans l’idéal, il est préférable d’utiliser une base de données à part pour le développement.

Le compte "propriétaire" d’une application a généralement...

Superviser les utilisateurs connectés

La vue V$SESSION permet d’identifier les utilisateurs actuellement connectés :

SQL> SELECT sid,serial#,username,osuser,status FROM v$session; 
 SID   SERIAL# USERNAME   OSUSER                    STATUS 
---- --------- ---------- ------------------------- -------- 
   1         3            SYSTEM                    ACTIVE 
... 
  10     10494 VDEP       vdep                      INACTIVE 
  14       450 SYSTEM     Administrateur            ACTIVE 

Les sessions sans valeur dans la colonne USERNAME sont celles des processus d’arrière-plan.

Les colonnes intéressantes de la vue V$SESSION sont les suivantes :

SID

Identifiant de la session.

SERIAL#

Numéro de série de la session.

USERNAME

Nom de l’utilisateur (compte Oracle).

SCHEMANAME

Nom du schéma de l’utilisateur (peut être différent de USERNAME si la session a exécuté l’ordre SQL ALTER SESSION SET CURRENT_SCHEMA).

STATUS

Statut de la session (ACTIVE, INACTIVE ou KILLED).

LOGON_TIME

Date et heure de connexion.

OSUSER

Nom de l’utilisateur au niveau du système d’exploitation.

MACHINE

Nom de la machine de l’utilisateur au niveau du système d’exploitation....

Utiliser EM Express

1. Utilisateurs

Dans EM Express, sélectionnez l’élément Utilisateurs du menu Sécurité pour accéder à la page de gestion des utilisateurs :

images/12RI02N19.png

À partir de cette page, vous pouvez effectuer diverses actions sur les utilisateurs :

images/12RI03N19.png
  • créer un nouvel utilisateur (menu ou bouton Créer un utilisateur) ;

  • créer un nouvel utilisateur à l’identique d’un utilisateur existant (menu ou bouton Créer comme) ;

  • supprimer un utilisateur (menu ou bouton Supprimer un utilisateur) ;

  • afficher les détails d’un utilisateur (menu Afficher les détails ou clic sur le nom de l’utilisateur dans la liste) ;

  • modifier les propriétés de base (authentification, mot de passe, profil) d’un utilisateur (menu Modifier le compte) ;

  • modifier les tablespaces par défaut d’un utilisateur (menu Modifier les tablespaces) ;

  • modifier les privilèges systèmes et les rôles attribués à un utilisateur (menu Modifier les privilèges et les rôles) ;

  • modifier les privilèges objet attribués à un utilisateur (menu Accorder des privilèges sur les objets).

Différentes fenêtres de dialogue sont proposées pour effectuer ces diverses actions :

  • Créer un utilisateur :

images/12RI04N19.png
  • Modifier le compte :

images/12RI05N19.png
  • Modifier les tablespaces...

Utiliser SQL Developer

1. Utilisateurs

Dans SQL Developer, ouvrez le dossier Sécurité du panneau DBA puis le sous-dossier Utilisateurs pour accéder à l’écran de gestion des utilisateurs :

images/12RI21N19.png

Sélectionnez un utilisateur dans le panneau DBA ou double-cliquez sur le nom d’un utilisateur dans la liste pour avoir des détails sur ce dernier :

images/12RI22N19.png

Les onglets permettent de consulter les différentes caractéristiques de l’utilisateur.

À partir de cet écran, vous pouvez effectuer diverses actions sur les utilisateurs :

images/12RI23N19.png
  • créer un nouvel utilisateur (menu Créer...) ;

  • créer un nouvel utilisateur à l’identique d’un utilisateur existant (menu Créer comme...) ;

  • modifier un utilisateur (menu Modifier...) ;

  • supprimer un utilisateur (menu Supprimer un utilisateur...) ;

  • forcer l’expiration du mot de passe d’un utilisateur (menu Faire expirer le mot de passe...) ;

  • verrouiller ou déverrouiller un utilisateur (menus Verrouiller l’utilisateur... et Déverrouiller l’utilisateur...) ;

  • accorder un rôle à un utilisateur (menu Octroyer un rôle...) ;

  • accorder un privilège système à un utilisateur (menu Accorder un privilège système...).

Lors de la création d’un utilisateur, les différentes caractéristiques de l’utilisateur...