Gestion des Profils

Helyos

Administration Oracle : Profils

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

- Titre : Gestion des Profils

- Auteur : Helyos

- Parution : 23 avril 2004

- Mise à jour : 23 avril 2004

- Licence : Le guide Oracle par Orafrance, Helyos et SheikYerbouti

Sommaire

- Gestion des profils

- I. Création d'un profil

- I-A. Les limitations

- I-A-1. Les limitations du mot de passe

- I-A-2. Les limitations des ressources système

- I-B. Mise en place d'un profil

- I-C. Syntaxe complète de l'ordre CREATE PROFILE

- II. Modification d'un profil

- II-A. Comment ça marche

- II-B. Modification d'un profil

- II-C. Syntaxe complète de l'ordre ALTER PROFILE

- III. Suppression d'un profil

- III-A. Comment ça marche

- III-B. Syntaxe complète de l'ordre DROP PROFILE

Gestion des profils

Afin d'augmenter la sécurité de la base de données, il peut être très intéressant de mettre en place une gestion des mots de passe comme le nombre maximal de tentatives de connexion à la base, le temps de verrouillage d'un 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.

I - 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 à 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 mot de passe ;

- les limitations des ressources système.

I-A - Les limitations

I-A-1 - Les limitations du mot de passe

Les limitations liées au mot de passe vous offrent un certain 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 connexions donné par le paramètre FAILED_LOGIN_ATTEMPTS est atteint le compte sera alors verrouillé 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 donnez 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éutilisations du même mot de passe (consécutive ou non).

Si vous donnez 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 verrouillage du compte utilisateur après avoir bloqué le compte avec le paramètre FAILED_LOGIN_ATTEMPTS. Le compte sera alors automatiquement déverrouillé 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 verrouillage définitif et donc une action d'un administrateur pour débloquer le compte).

PASSWORD_GRACE_TIME

Ce paramètre permet de définir en jours le temps de grâce 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 trois demandes.

L'intérêt de ce paramètre est d'ajouter une période de grâce pendant laquelle l'utilisateur sera en mesure de ne pas changer son mot de passe. Cela revient à 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 saisis. 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, utilisez 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 deux 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.

I-A-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émentaires 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 sessions 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 appellera « appel serveur » un passage de requête, une exécution de requête ou la récupé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. À 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. À 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 blocs 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 blocs 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ées pour une session.

Oracle calcule le coût total de toutes 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 limitation 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.

I-B - Mise en place d'un profil

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

- établir 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 :

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)

ALTER USER scott PROFILE app_user;

I-C - Syntaxe complète de l'ordre CREATE PROFILE

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

Voici la description de l'ensemble resource_parameters :

Voici la description de l'ensemble password_parameters :

Voici l'explication des quelques nouveaux mots clés (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.

II - Modification d'un profil

II-A - 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 seules 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.

II-B - Modification d'un profil

Voici un exemple de modification d'un profil :

ALTER PROFILE app_user LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 1;

Dans cet exemple nous avons changé le nombre de tentatives 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 à un jour.

II-C - Syntaxe complète de l'ordre ALTER PROFILE

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

Voici la description de l'ensemble resource_parameters :

Voici la description de l'ensemble password_parameters :

Voici l'explication des quelques nouveaux mots clés (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.

III - Suppression d'un profil

III-A - Comment ça marche

Pour supprimer un profil vous devez disposer du privilège DROP PROFILE. Il existe deux 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 à tous les utilisateurs qui possédaient le profil qui vient d'être supprimé.

Par exemple :

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.

III-B - Syntaxe complète de l'ordre DROP PROFILE

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

Voici l'explication des quelques nouveaux mots clés :

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.