FAQ OracleConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 138, dernière mise à jour : 16 février 2013 

 
OuvrirSommaireAdministrationSécurité

Via un trigger de type AFTER LOGON :

L'exemple suivant concerne l'outil Toad :

 
Sélectionnez

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

 
Sélectionnez

alter trigger interdire_toad disable ;

alter trigger interdire_toad enable  ;
Créé le 2006-09-18  par SheikYerbouti

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

 
Sélectionnez

INSERT INTO product_user_profile (product, userid, attribute, char_value) 
                          VALUES ('SQL*Plus', 'SCOTT', 'CREATE', 'DISABLED');
COMMIT ;

Comment voir les interdictions :

 
Sélectionnez

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 oeuvre, où l'attribut CREATE est désactivé pour l'utilisateur FORMATION :

 
Sélectionnez

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.
Créé le 2006-09-18  par Jaouad

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

 
Sélectionnez

TCP.VALIDNODE_CHECKING=yes
TCP.INVITED_NODES=(xxx.x.x.xxx,xxx.x.x.xxx)

Interdire les personnes suivantes :

 
Sélectionnez

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 2006-10-15  par Jaouad

À l'aide de la fonction suivante :

 
Sélectionnez

REATE 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 :

 
Sélectionnez

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION restrict_pwd_change;

Pour désactiver cette restriction, utilisez cette commande :

 
Sélectionnez

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION null; 
Créé le 2006-09-18  par 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/administration/adminrole/#L8

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

Créé le 2006-09-18  par Fred_D

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

 
Sélectionnez

SQLPLUS /NOLOG 
CONNECT SYS/pwd@db AS SYSDBA
Créé le 2006-09-18  par 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 connceter, 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 laquellel'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 compexité du mot de passe.

Voici un exemple de mise en application :

1. Créons un utilisateur TEST :

 
Sélectionnez

CREATE USER TEST 
  IDENTIFIED BY TEST 
  DEFAULT TABLESPACE TBSTEST;

2. Créons un profil :

 
Sélectionnez

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 :

 
Sélectionnez

SQL> ALTER USER TEST PROFILE Profil_Test; 
Utilisateur modifié.

4. Vérifions que le paramètre FAILED_LOGIN_ATTEMPTS est bien actif :

 
Sélectionnez

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 :

 
Sélectionnez

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).
Créé le 2006-10-15  par Xavier Vlieghe

Lien : Gestion des ProfilsGestion des Profils
Lien : Sécurisation d'une base OracleSécurisation d'une base Oracle

  

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 © 2013 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. Cette page est déposée.