Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

Oracle

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > Administration > Sécurité
        Comment empecher un utilisateur de se connecter avec un outil spécifique ?
        Comment empêcher un utilisateur d'effectuer certaines opérations sous Sql*Plus ?
        Comment autoriser/interdire une connexion Net*8 ?
        Comment interdire le changement de mot de passe à un utilisateur ?
        Je suis administrateur et pourtant j'ai une erreur de privilèges insuffisants ?
        Comment me connecter en tant que SYS, cela me retourne une erreur ?
        Comment sécuriser la gestion des mots de passe ?



Comment empecher un utilisateur de se connecter avec un outil spécifique ?
auteur : SheikYerbouti
Via un trigger de type AFTER LOGON :

L'exemple suivant concerne l'outil Toad :

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

alter trigger interdire_toad disable ;

alter trigger interdire_toad enable  ;

Comment empêcher un utilisateur d'effectuer certaines opérations sous Sql*Plus ?
auteur : Jaouad
Il suffit d'effectuer une insertion dans la table product_user_profile :

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

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 :

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.

Comment autoriser/interdire une connexion Net*8 ?
auteur : Jaouad
A placer dans le fichier Sqlnet.ora ( sur le serveur hébergeant le SGBDR ) Autoriser les personnes suivantes :

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

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


Comment interdire le changement de mot de passe à un utilisateur ?
auteur : Jaouad
À l'aide de la fonction suivante :

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 :

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; 

Je suis administrateur et pourtant j'ai une erreur de privilèges insuffisants ?
auteur : Fred_D
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 : fr 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.


Comment me connecter en tant que SYS, cela me retourne une erreur ?
auteur : LeoAnderson
Depuis la 9i, il est impossible de se connecter avec l'utilisateur SYS si on ne précise pas AS SYSDBA ou AS SYSOPER

SQLPLUS /NOLOG 
CONNECT SYS/pwd@db AS SYSDBA

Comment sécuriser la gestion des mots de passe ?
auteur : Xavier Vlieghe
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 :

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

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 :

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

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 :

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).
lien : fr Gestion des Profils
lien : fr Sécurisation d'une base Oracle


Consultez les autres F.A.Q's


Valid XHTML 1.0 TransitionalValid CSS!

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 © 2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.

Contacter le responsable de la rubrique Oracle

Partenaire : Hébergement Web