Gestion des Profils

Administration Oracle : Profils

Pour revenir à la page d'administration Oracle : ICI.

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Gestion des profils

Afin d'augmenter la sécurité de la base de données il peut être très interessant de mettre en place une gestion des mots de passe comme le nombre maximal de tentatives de connexion à la base, le temps de vérouillage d'une compte, etc...

Il peut parfois aussi être intéressant de limiter les ressources système allouées à un utilisateur afin d'éviter une surcharge inutile du serveur.

Oracle nous propose une solution efficace et pratique pour mettre en place ce type d'action : les PROFILS.

1. Création d'un profil

Un PROFIL est un ensemble de limitations système. Une fois qu'un PROFIL a été assigné à un utilisateur celui-ci ne pourra plus dépasser les limitations imposées.

La première chose a vérifier et de savoir si vous disposez du privilège système CREATE PROFILE.

Si c'est le cas il va falloir décider quelles limitations vous souhaitez mettre en place. Vous avez deux types de limitations:

  • Les limitations du mots de passe
  • Les limitations des ressources système

1.1. Les limitations

1.1.1. Les limitations du mots de passe

Les limitations liées au mot de passe vous offrent un certains nombre d'options très intéressantes vous permettant d'augmenter la sécurité de vos mots de passe.

Voici la liste des différentes options disponibles :

Option Description
FAILED_LOGIN_ATTEMPTS Ce paramètre permet de définir le nombre maximal de tentatives de connexion. Si le nombre de connexion donné par le paramètre FAILED_LOGIN_ATTEMPTS est atteint le compte sera alors vérouillé pendant une période donnée par le paramètre PASSWORD_LOCK_TIME
PASSWORD_LIFE_TIME Ce paramètre permet de définir la durée d'utilisation du même mot de passe. Ce paramètre devra être défini en jours. Une fois la date limite d'utilisation, Oracle demandera alors automatiquement à l'utilisateur de bien vouloir changer son mot de passe.
PASSWORD_REUSE_TIME Ce paramètre défini en nombre de jours, permet de définir le délai entre deux utilisations du même mot de passe. Par exemple si celui ci vaut 30 et que votre mot de passe actuel est toto. Il vous faudra attendre 30 jours à compter de la date de votre changement de mot de passe avant de pouvoir à nouveau utiliser toto comme mot de passe.

Si vous donner une valeur numérique au paramètre PASSWORD_REUSE_TIME vous devrez alors donner la valeur UNLIMITED au paramètre PASSWORD_REUSE_MAX .
PASSWORD_REUSE_MAX Ce paramètre permet de définir le nombre de réutilisation du même mot de passe (consécutive ou non).

Si vous donner une valeur numérique au paramètre PASSWORD_REUSE_MAX vous devrez alors donner la valeur UNLIMITED au paramètre PASSWORD_REUSE_TIME.
PASSWORD_LOCK_TIME Ce paramètre permettra de définir la durée de vérouillage du compte utilisateur après avoir bloqué le compte avec le paramètre FAILED_LOGIN_ATTEMPTS. Le compte sera alors automatiquement dévérouillé lorsque le temps défini par ce paramètre sera atteint. Ce paramètre sera défini en jours (Vous pouvez aussi spécifier un nombre de minutes ou heure, par exemple 30 minutes donnera 30/1440) ou pourra avoir la valeur UNLIMITED (pour un vérouillage définitif et donc une action d'un adminstrateur pour débloquer le compte)
PASSWORD_GRACE_TIME Ce paramètre permet de définir en jours le temps de grace qui vous sera alloué pour changer votre mot de passe. Par exemple vous avez défini le paramètre PASSWORD_LIFE_TIME à 30 ce qui signifie que l'utilisateur devra changer son mot de passe tout les 30 jours. Cependant si celui-ci décide pour une raison ou une autre de ne pas changer son mot de passe à la fin de cette période Oracle bloquera son compte automatiquement au bout de 3 demandes.

L'intêret de ce paramètre est d'ajouter une période de grace pendant laquelle l'utilisateur sera en mesure de ne pas changer son mot de passe. Cela reviens à donner un délai supplémentaire à l'utilisateur pour changer son mot de passe.
PASSWORD_VERIFY_FUNCTION Ce paramètre devra contenir le nom d'une fonction PL/SQL qui servira à vérifier les mots de passe saisi. Vous pouvez utiliser celle fournie par Oracle (script utlpwdmg.sql). La fonction fournie en argument devra avoir cette définition :

<nom de la fonction> (username varchar2, password varchar2, old_password varchar2) RETURN boolean

Si vous ne souhaitez pas utiliser de fonction de vérification utiliser la valeur NULL.

Attention :

  • Si le paramètre PASSWORD_REUSE_TIME a été initialisé avec une valeur numérique, alors le paramètre PASSWORD_REUSE_MAX devra être à UNLIMITED et inversement.
  • Si les deux paramètres PASSWORD_REUSE_TIME et PASSWORD_REUSE_MAX possèdent la valeur UNLIMITED, alors Oracle n'utilisera aucune de ces deux limitations de mot de passe.
  • Si le paramètre PASSWORD_REUSE_MAX possède la valeur DEFAULT et que le paramètre PASSWORD_REUSE_TIME est à UNLIMITED, alors Oracle utilisera le paramètre PASSWORD_REUSE_MAX avec la valeur définie dans le profil par défaut.
  • Si le paramètre PASSWORD_REUSE_TIME est à DEFAULT et PASSWORD_REUSE_MAX est à UNLIMITED, alors Oracle utilisera le paramètre PASSWORD_REUSE_TIME avec la valeur définie dans le profil DEFAULT.
  • Si les 2 paramètres PASSWORD_REUSE_TIME et PASSWORD_REUSE_MAX sont à DEFAULT, alors Oracle utilisera les valeurs définies dans le profil DEFAULT.

La valeur DEFAULT est une valeur particulière, lorsque vous assignerez la valeur DEFAULT à une limitation alors Oracle ira récupérer la valeur de la limitation dans le profil DEFAULT.

1.1.2. Les limitations des ressources système

Afin de mettre en place les limitations système vous allez devoir mettre le paramètre RESOURCE_LIMIT à true car Oracle va devoir générer des statistiques supplémentaire afin de pouvoir utiliser les valeurs des limitations.

Voici la liste des limitations que vous pourrez mettre en place.

Option Description
SESSIONS_PER_USER Ce paramètre va vous permettre de définir le nombre de session maximum qu'un utilisateur pourra ouvrir.
CPU_PER_SESSION Ce paramètre va vous permettre de définir le temps de processeur maximum en centièmes de secondes qu'une session pourra utiliser.
CPU_PER_CALL Ce paramètre va vous permettre de définir le temps de processeur maximum en centièmes de secondes qu'un "appel serveur" pourra utiliser. On appelera "appel serveur" un parssage de requête, une execution de requête ou la recupération d'une requête (FETCH)
CONNECT_TIME Ce paramètre va vous permettre de définir le temps en minutes pour la durée de connexion maximale d'une session. A la fin du temps imparti la session sera automatiquement déconnectée.
IDLE_TIME Ce paramètre va vous permettre de définir le temps en minutes pour la durée d'inactivité maximale d'une session. A la fin du temps imparti la session sera automatiquement déconnectée.
LOGICAL_READS_PER_SESSION Ce paramètre va vous permettre de définir le nombre maximal de bloc lus durant une session. On parlera ici des blocs lus sur le disque et dans la mémoire.
LOGICAL_READS_PER_CALL Ce paramètre va vous permettre de définir le nombre maximal de bloc lus durant un "appel serveur". On parlera ici des blocs lus sur le disque et dans la mémoire.
COMPOSITE LIMIT Ce paramètre va vous permettre de définir le coût total des limitations autorisée pour une session.

Oracle calcule le coût total de toute les ressources à partir du poids attribué aux paramètres CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, et PRIVATE_SGA.

Vous pourrez changer le poids associé à chaque limitations système avec la commande ALTER RESOURCE COST.
PRIVATE_SGA Ce paramètre va vous permettre de définir la taille en Kbytes ou MBytes que pourra utiliser une session.

1.2. Mise en place d'un profil

La méthode pour mettre en place est très simple :

  • Etablir les limitations de mot de passe et les limitations système.
  • Créer le profil
  • Attribuer le profil aux utilisateurs qui devront être limités

La syntaxe de création d'un profil est très simple. Voici un exemple :

 
Sélectionnez

CREATE PROFILE app_user 
LIMIT 
SESSIONS_PER_USER          UNLIMITED 
CPU_PER_SESSION            UNLIMITED 
CPU_PER_CALL               3000 
CONNECT_TIME               45 
LOGICAL_READS_PER_SESSION  DEFAULT 
LOGICAL_READS_PER_CALL     1000 
PRIVATE_SGA                15K
COMPOSITE_LIMIT            5000000; 
	

Il est tout à fait possible de combiner les deux types de limitations.

Par défaut un utilisateur se voit assigner le profil DEFAULT lors de sa création. Si vous souhaitez lui assigner un nouveau profil cela sera possible soit lors de la création soit avec la commande ALTER USER (voir chapitre Gestion des utilisateurs)

 
Sélectionnez

ALTER USER scott PROFILE app_user;

1.3. Syntaxe complète de l'ordre CREATE PROFILE

Voici la syntaxe complète d'un ordre CREATE PROFILE :

Image non disponible

Voici la description de l'ensemble resource_parameters :

Image non disponible

Voici la description de l'ensemble password_parameters :

Image non disponible

Voici l'explication des quelques nouveaux mots clé (vous pourrez retrouver les explications sur les limitations dans les chapitres 1.1.1 et 1.1.2)

profile :
nom du futur profil.

UNLIMITED :
Valeur infinie pour la limitation.

DEFAULT :
La valeur de la limitation sera alors issue du même paramètre dans le profil DEFAULT.

integer :
Valeur numérique pour la limitation.

2. Modification d'un profil

2.1. Comment ça marche

Avant de pouvoir modifier des limitations de ressources système, vous devez disposer du privilège système ALTER PROFILE et vous devrez disposer des privilèges ALTER PROFILE et ALTER USER pour modifier des limitations de mot de passe.

Ensuite il faut savoir que si vous modifiez une limitation les autres limitations en cours ne seront pas modifiées. Une fois la limitation modifiée seule les nouvelles sessions se verront assigner cette nouvelle limitation.

La syntaxe en elle même est quasiment identique à la syntaxe de CREATE PROFILE.

Attention : Vous ne pouvez pas retirer une limitation du profil DEFAULT, vous pourrez juste la faire passer à la valeur UNLIMITED.

2.2. Modification d'un profil

Voici un exemple de modification d'un profil :

 
Sélectionnez

ALTER PROFILE app_user LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;
			

Dans cet exemple nous avons changé le nombre de tentative de connexion ratées avant que le compte de l'utilisateur ne soit verrouillé. Nous avons aussi modifié la durée de blocage du compte qui passe maintenant à 1 jour.

2.3. Syntaxe complète de l'ordre ALTER PROFILE

Voici la syntaxe complète d'un ordre ALTER PROFILE :

Image non disponible

Voici la description de l'ensemble resource_parameters :

Image non disponible

Voici la description de l'ensemble password_parameters :

Image non disponible

Voici l'explication des quelques nouveau mots clé (vous pourrez retrouver les explications sur les limitations dans les chapitres 1.1.1 et 1.1.2)

profile :
nom du profil à modifier.

UNLIMITED :
Valeur infinie pour la limitation.

DEFAULT :
La valeur de la limitation sera alors issue du même paramètre dans le profil DEFAULT.

integer :
Valeur numérique pour la limitation.

3. Suppression d'un profil

3.1. Comment ça marche

Pour supprimer un profil vous devez disposer du privilège DROP PROFILE. Il existe 2 cas de figure possibles. Le premier cas le plus simple consiste à supprimer un profil qui n'a été assigné à personne. Vous pourrez donc le supprimer sans action supplémentaire. Cependant si ce profil a été assigné à un utilisateur vous devrez alors utiliser l'option CASCADE qui demandera à Oracle de supprimer le profil et d'assigner le profil DEFAULT à tout les utilisateurs qui possédaient le profil qui vient d'être supprimé.

Par exemple :

 
Sélectionnez

DROP PROFILE app_user CASCADE; 
		

Ici tous les utilisateurs qui disposaient du profil app_user se verront automatiquement assigner le profil DEFAULT.

Attention : Vous ne pourrez pas supprimer le profil DEFAULT.

3.2. Syntaxe complète de l'ordre DROP PROFILE

Voici la syntaxe complète d'un ordre DROP PROFILE :

Image non disponible

Voici l'explication des quelques nouveau mots clé

profile :
nom du profil à supprimer.

CASCADE :
Cette option vous permettra de supprimer le profil à tous les utilisateurs qui disposaient de ce profil et demandera au serveur de leur assigner le profil DEFAULT.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Le guide Oracle par Orafrance, Helyos et SheikYerbouti