Rôle et Utilisateurs sous Oracle
1 - Profil et utilisateur.
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.
dans cette exemple, je vous montre la création des utilisateur,role sous Oracle.
|
|
1:Créer deux utilisateurs;
Create user yani identified by saw ;
Create user sami identified by tiger ;
2:Consulter le dictionnaire pour visualiser ces users;
select username, account_status from dba_users
where username in('YANI','SAMI');
3:Accorder le privelege connect au premier user;
Grant connect to yani;
4: Consulter le dictionnaire de YANI
desc user_objects;
select object_name,object_type from user_objects;
Lancer un script;
create table avion
( id number(5),
nom varchar2(25));
e table avion
R à la ligne 1 :
1031: privilèges insuffisants
--On n'a pas attribuer le privelge ressource
5: Les rôles CONNECT et RESOURCE avec le droit d’accorder ses privilèges 2éme user;
Grant connect, resource to sami;
6: Quel profil a été accordé à ces utilisateurs:
select * from dba_profiles
where profile='DEFAULT';
7: profile utilisateurs
desc dba_users
select profile from dba_users where username in ('YANI','SAMI');
11: Autoriser le premier utilisateur à créer des tables
-accorder son privilège au deuxième utilisateur
GRANT CREATE ANY TABLE TO YANI WITH ADMIN OPTION;
Grant connect, resource to yani;
12 Retirer le droit de create de table
REVOKE CREATE ANY TABLE FROM YANI;
Creation de rôle
create role gestion;
2-associer des privelge a ce role
grant connect, create any table, create view to gestion;
Afficher les roles sys
1 select * from dba_sys_privs
2* where grantee='GESTION'
3 ;
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
GESTION CREATE VIEW NO
GESTION CREATE ANY TABLE NO
--les resources
select * from dba_sys_privs
where grantee='RESOURCE';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE TABLE NO
-limit les utilisateurs sur les profils;
-Modification du profil par défaut
-limiter le temps de connexion d'une session non active à 60 mn
ALTER PROFILE DEFAULT
LIMIT IDLE_TIME 60;
-création d'un profil pour la gestion des connexions
-limiter à 5 essais la tentative de connexion
-le nombre de changements de mots de passe avant de pouvoir réutiliser
-un mot de passe qui a déjà été employé
-Nombre de jours qui doivent s'écouler avant qu'un mot de passe puisse
-être réutilisé
1--Profile 01
CREATE PROFILE connexion
LIMIT FAILED_LOGIN_ATTEMPS 4
PASSWORD_REUSE_MAX 3
PASSWORD_REUSE TIME UNLIMITED;
2-- Profile 02
CREATE PROFILE connexion01
LIMIT
SESSIONS_PER_USER 3 --- Accorder De 03 tentatives Pour Utilisateurs
CPU_PER_SESSION DEFAULT --- CPU Par User
CPU_PER_CALL DEFAULT
CONNECT_TIME DEFAULT
IDLE_TIME 60 --- 60 Jours
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL DEFAULT
COMPOSITE_LIMIT DEFAULT
PRIVATE_SGA DEFAULT
;
--Creation de fonction
CREATE OR REPLACE FUNCTION complexite_pwd (username VARCHAR2,password VARCHAR2,old_password VARCHAR2)
RETURN boolean IS
BEGIN
IF (length(password)<06) THEN
raise_application_error(-20009, 'ERROR: Le mot de passe doit être supérieur à 06 caractére');
END IF;
return True;
END;
/
Activer cette fonction avec modification commande.
ALTER PROFILE connexion01 LIMIT PASSWORD_VERIFY_FUNCTION complexite_pwd;
VERIFIER
Create user sami1 identified by tiger01
PROFILE connexion01
PASSWORD EXPIRE ;
Grant connect,resource to sami1
3-- Profile 03
create profile prof_connexion
limit
sessions_per_user
cpu_per_session 10000 : centiéme de seconde
cpu_per_call 1 : centiéme de seconde
connect_time unlimited : minutes
idle_time 30 : minutes
logical_reads_per_session default : db blocks
logical_reads_per_call default : db blocks
private_sga 20M
failed_login_attempts 3 :Nombre d'erreurs permises à la saisie
du mot de passe avant que le compte soit verrouillé
password_life_time 60 : duréé de vie mot passe puis changé (jours)
password_reuse_time 12 : peut pas réutiliser le mot de passe déja
utiliser avant 12 jours
password_reuse_max unlimited :Nombre de changement de mots de passe requis
avant de pouvoir ré-utiliser un mot de passe déjà utilisé
password_lock_time default :Durée (en jours) pendant laquelle un compte sera verrouillé
après qu'il ait atteint le nombre d'erreurs permises
à la saisie de son mot de passe (FAILED_LOGIN_ATTEMPTS),days
password_grace_time 2 : En cas de péremption d'un mot de passe dû à un délai
fixé par l'administrateur
cette option permet de paramétrer une durée (en jours) pendant
laquelle l'utilisateur pourra tout de même se
connceter, mais recevra un avertissementdays
password_verify_function null ; --permet de préciser une fonction
(PL/SQL) vérifiant la compexité du mot de passe.
Exemple de fonction
CREATE OR REPLACE FUNCTION restrict_pwd_change (username VARCHAR2,
password VARCHAR2,
old_password VARCHAR2)
RETURN boolean IS
BEGIN
raise_application_error(-20009, 'ERROR: Modification du mot de passe impossible');
END;
/
4--Consulter les profils
SELECT profile, resource_name, limit
FROM Dba_Profiles
WHERE resource_type = 'PASSWORD'
ORDER BY profile;
Activer cette fonction par la commande suivante :
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION restrict_pwd_change;
--Pour désactiver cette restriction, utilisez cette commande :
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION null;
--associer le profile au utilisateurs
ALTER USER Yani PROFILE connexion01;
|