FAQ OracleConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 137, dernière mise à jour : 26 octobre 2006  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum Oracle de www.developpez.com et de l'expérience personnelle des auteurs. Elle pourra traiter de tout type de questions portant sur les technologies Oracle.

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe Oracle de Developpez.


SommaireAdministrationSécurité (7)
précédent sommaire suivant
 

Via un trigger de type AFTER LOGON :

L'exemple suivant concerne l'outil Toad :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE OR REPLACE TRIGGER interdire_toad after logon ON DATABASE      
declare       
v_sid sys.v_$session.sid%TYPE; 
v_isdba sys.v_$session.username%TYPE; 
v_program sys.v_$session.program%TYPE;      
begin       
execute immediate         
'select distinct sid from sys.v_$mystat' INTO v_sid;       
execute immediate         
'select program from sys.v_$session where sid = :b1' INTO v_program USING v_sid;  
execute immediate    
'select username   from  sys.v_$session where sid = :b1' INTO v_isdba USING v_sid;       
IF upper(v_program) LIKE  'TOAD%' AND v_isdba = 'USERNAME'  
then            
RAISE_APPLICATION_ERROR 
(-20001,'Connexion avec '||v_isdba||' sous TOAD interdite,contactez le DBA ',TRUE);    
end  IF;      
end; 
/
Ce trigger a deux limitations qu'il est important de connaître :

  • il n'a pas d'effet si l'utilisateur possède le privilège ADMINISTER DATABASE TRIGGER.
  • il n'a pas d'effet si on renomme l'utilitaire, le contrôle se faisant via une comparaison entre le champ v_program et le nom du programme.

Comment désactiver - activer la sécurité :

Code sql :
1
2
3
ALTER TRIGGER interdire_toad disable ; 
  
ALTER TRIGGER interdire_toad enable  ;

Mis à jour le 18 septembre 2006 SheikYerbouti

Il suffit d'effectuer une insertion dans la table product_user_profile :

Code sql :
1
2
3
INSERT INTO product_user_profile (product, userid, attribute, char_value)  
                          VALUES ('SQL*Plus', 'SCOTT', 'CREATE', 'DISABLED'); 
COMMIT ;
Comment voir les interdictions :

Code sql :
1
2
3
4
SET linesize 250 
col CHAR_VALUE format a15 
col ATTRIBUTE format a15 
SELECT product, userid, attribute, char_value FROM product_user_profile ;
Voici un exemple de mise en œuvre, où l'attribut CREATE est désactivé pour l'utilisateur FORMATION :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
SQL> conn system 
Entrez le mot de passe : ******** 
Connecté. 
SQL> INSERT INTO product_user_profile (product, userid, attribute, char_value) VALUES 
  2  ('SQL*Plus', 'FORMATION', 'CREATE', 'DISABLED'); 
  
1 ligne créée. 
  
SQL> commit ; 
  
Validation effectuée. 
  
SQL> conn formation/formation 
Connecté. 
SQL> CREATE TABLE dvp ( a varchar2(10)) ; 
SP2-0544: commande non valide : CREATE 
SQL> conn system 
Entrez le mot de passe : ******** 
Connecté. 
SQL> DELETE FROM product_user_profile WHERE userid='FORMATION' ;  
  
1 ligne supprimée. 
  
SQL> commit ; 
  
Validation effectuée. 
  
SQL>  conn formation/formation 
Connecté. 
  
SQL> CREATE TABLE dvp ( a varchar2(10)) ; 
  
TABLE créée.

Mis à jour le 18 septembre 2006 Jaouad

À placer dans le fichier Sqlnet.ora (sur le serveur hébergeant le SGBDR) Autoriser les personnes suivantes :

Code sql :
1
2
TCP.VALIDNODE_CHECKING=yes 
TCP.INVITED_NODES=(xxx.x.x.xxx,xxx.x.x.xxx)
Interdire les personnes suivantes :

Code sql :
1
2
TCP.VALIDNODE_CHECKING=yes 
TCP.EXCLUDED_NODES=(xxx.x.x.xxx,xxx.x.x.xxx)
Vous trouverez plus de détails dans cet article : Filtrage global au niveau du serveur

Mis à jour le 18 septembre 2006 Jaouad

À l'aide de la fonction suivante :

Code sql :
1
2
3
4
5
6
7
8
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;  
/
et de la commande suivante :

Code sql :
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION restrict_pwd_change;
Pour désactiver cette restriction, utilisez cette commande :

Code sql :
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;

Mis à jour le 18 septembre 2006 Jaouad

Vérifiez que l'utilisateur avec lequel vous vous connectez à les droits nécessaires pour faire l'action que vous souhaitez en vous aidant de ce tutoriel : http://oracle.developpez.com/guide/a.../adminrole/#L8

Par exemple, pour voir toutes les tables de la base, il vous faudra avoir le privilège SELECT ANY TABLE.

Mis à jour le 18 septembre 2006 orafrance

Depuis la 9i, il est impossible de se connecter avec l'utilisateur SYS si on ne précise pas AS SYSDBA ou AS SYSOPER

Code sql :
1
2
SQLPLUS /NOLOG  
CONNECT SYS/pwd@db AS SYSDBA

Mis à jour le 18 septembre 2006 LeoAnderson

Via la gestion de profils dédiés, qui peuvent gérer les paramètres suivants :

  • FAILED_LOGIN_ATTEMPTS : Nombre d'erreurs permises à la saisie du mot de passe avant que le compte soit verrouillé,
  • PASSWORD_GRACE_TIME : 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 connecter, mais recevra un avertissement,
  • PASSWORD_LIFE_TIME : Durée (en jours) de vie maximum d'un mot de passe,
  • PASSWORD_LOCK_TIME : 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),
  • PASSWORD_REUSE_MAX : Nombre de changement de mots de passe requis avant de pouvoir ré-utiliser un mot de passe déjà utilisé,
  • PASSWORD_REUSE_TIME : Durée (en jours) minimum pendant laquelle l'utilisateur ne peut pas ré-utiliser un mot de passe déjà utilisé, à partir du moment où celui-ci a été changé,
  • PASSWORD_VERIFY_FUNCTION : permet de préciser une fonction (PL/SQL) vérifiant la complexité du mot de passe.

Voici un exemple de mise en application :

1. Créons un utilisateur TEST :

Code sql :
1
2
3
CREATE USER TEST  
  IDENTIFIED BY TEST  
  DEFAULT TABLESPACE TBSTEST;
2. Créons un profil :

Code sql :
1
2
3
4
5
SQL> CREATE PROFILE Profil_Test LIMIT PASSWORD_LIFE_TIME 60;  
Profil créé.  
  
SQL> ALTER PROFILE Profil_Test LIMIT FAILED_LOGIN_ATTEMPTS 2;  
Profil modifié.
3. Attribuons ce profil à notre utilisateur :

Code sql :
1
2
SQL> ALTER USER TEST PROFILE Profil_Test;  
Utilisateur modifié.
4. Vérifions que le paramètre FAILED_LOGIN_ATTEMPTS est bien actif :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> connect test/test2@db  
ERROR:  
ORA-01017: invalid username/password; logon denied  
  
Avertissement : vous n'êtes plus connecté à ORACLE.  
  
SQL> connect test/test3@db  
ERROR:  
ORA-01017: invalid username/password; logon denied  
  
SQL> connect test/test@db  
ERROR:  
ORA-28000: the account is locked
Il est possible de consulter les profils existants à l'aide de la requête suivante :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SQL> SELECT profile, resource_name, LIMIT 
  2    FROM Dba_Profiles 
  3   WHERE resource_type = 'PASSWORD' 
  4   ORDER BY profile; 
  
PROFILE         RESOURCE_NAME             LIMIT 
--------------- ------------------------- --------------- 
DEFAULT         FAILED_LOGIN_ATTEMPTS     UNLIMITED 
DEFAULT         PASSWORD_LIFE_TIME        UNLIMITED 
DEFAULT         PASSWORD_REUSE_MAX        UNLIMITED 
DEFAULT         PASSWORD_LOCK_TIME        UNLIMITED 
DEFAULT         PASSWORD_GRACE_TIME       UNLIMITED 
DEFAULT         PASSWORD_VERIFY_FUNCTION  NULL 
DEFAULT         PASSWORD_REUSE_TIME       UNLIMITED 
PROFIL_TEST     FAILED_LOGIN_ATTEMPTS     2 
PROFIL_TEST     PASSWORD_LIFE_TIME        60 
PROFIL_TEST     PASSWORD_REUSE_MAX        DEFAULT 
PROFIL_TEST     PASSWORD_LOCK_TIME        DEFAULT 
PROFIL_TEST     PASSWORD_GRACE_TIME       DEFAULT 
PROFIL_TEST     PASSWORD_VERIFY_FUNCTION  DEFAULT 
PROFIL_TEST     PASSWORD_REUSE_TIME       DEFAULT 
  
14 ligne(s) sélectionnée(s).

Mis à jour le 15 octobre 2006 Xo

Gestion des Profils
Sécurisation d'une base Oracle

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
 
 
 
Partenaires

PlanetHoster
Ikoula