IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

auditing


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut [Résolu] auditing
    Bonjour,
    Voila jai dans mes tables des champs audit qui me permettent de stocker notemment le nom de l'utilisateur de la base qui a ajouter un record dans la table consideree!
    Jaimerais automatiser cette tache pour soulager les inserts manuels!

    je peux donc
    soit recupere le nom de l'user courant et donc aller piocher dans une vue qui est je crois USERS mais le probleme est- que nous avons tous le meme user pour nous connecter
    soit je recupere le nom utilisateur cote client, le nom de la session XP encours mais cote securite c'est pas top

    Qqchose a me suggerer?
    MErci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Par défaut
    Si vous avez tous le même user pour vous connectez c'est un problème donc dans ce cas la vous avez aussi tous le même UID.

    Donc tu ne pourras pas savoir quel user à fait quoi en automatique ???

    Si tu n'avais pas le même user pour tous, tu aurais pu utiliser la variable USER d'ORACLE. Si tu fais un :

    Il te donne le nom du user.

    Et donc utiliser cette variable dans un trigger sur ta table que tu déclencherais à l'insert ou update (à toi de votre quel est ton cas) record.

    Voila ce que je peux te dire de ma propre expérience !!!!!!!

    Gaultier Emmanuel

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Voir aussi les triggers sur évènements qui permettent, via les attributs, de récupérer un certain nombre d'informations sur l'évènement et l'actionneur.

  4. #4
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    tu peux aussi utiliser la fonction sys_context avec le namespace 'userenv' pour récupérer des paramètres comme le user OS, la machine client ou l'adresse IP de l'appelant...

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    bonjour,
    voila je cree ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE OR REPLACE TRIGGER mon_audit
      BEFORE INSERT on MA_TABLE
    BEGIN
      INSERT INTO ma_table (mon_champ)
        SELECT sys_context('userenv','os_user') FROM DUAL
    COMMIT;
     
    END;
    /
    et je me retrouve avec ces erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ORA-00036: maximum number of recursive SQL levels (50) exceeded
    ORA-06512: at "PROLAB.MON_AUDIT", line 2

  6. #6
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    tu n'as pas le droit de faire des commit dans un trigger...

    si tu veux faire un insert dans une autre table et commiter cette opération quel que soit le résultat de l'opération qui a déclenché le trigger, tu dois passer par une procédure autonome...

    dans ton cas je ferais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE OR REPLACE TRIGGER mon_audit 
      BEFORE INSERT on MA_TABLE 
     my_data    varchar2(20); -- ou le type qui convient à ta table / donnée
    BEGIN 
        SELECT sys_context('userenv','os_user') into my_data FROM DUAL ; 
        :new.mon_champ = my_data ;
    END; 
    /
    et tu laisses le commit ou le rollback être géré par la transaction déclenchante...

    et je viens juste de voir que dans code original il manque un ; après le Select... from dual

  7. #7
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    merci
    desole pour le commit c bete!

    Voila le code qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE TRIGGER mon_audit 
      BEFORE INSERT on MA_TABLE 
      referencing new as new old as old
      for each row
    DECLARE
      my_data varchar2(20);
    BEGIN
      SELECT sys_context('userenv','os_user') into my_data from dual;
      :new.mon_champ := my_data ; 
    END; 
     /
    Cote securite est ce que ca peut poser des problemes de faire ce genre de manipulations? On m'a dit que ce n'etait pas conseille!!!!!

    merci

  8. #8
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    je ne vois quel problème... mais si qqun a un autre avis là-dessus ça m'interresse aussi...

    j'utilise beaucoup ce genre de trigger pour renseigner des colonnes du style "CREATE_USER, CREATE_DATE, LASTUPDATE_USER, LASTUPDATE_DATE"...

    c'est tout bête mais ça aide souvent a retrouver facilement "qui fait quoi" sans avoir des manip trop lourdes à mettre en place.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Par défaut
    Moi aussi j'utilise beaucoup des triggers de ce type pour faire de la tracabilité d'actions (qui fait quoi et quand) et je ne vois pas pourquoi il y aurait des problèmes de sécurité.
    Il n'y a pas de données importantes modifiéés c'est juste informatif comme traitement.


    Gaultier Emmanuel

  10. #10
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    par contre il va de soit que ces infos ne doivent pas forcément être publiées au yeux des utilisateurs "lambda"... si tu as des rapports basés juste sur des "Select * ..." ça peut être des infos à ne pas publier à la légère... Mais là on tombe dans une logique de "sensibilité" des données.

    mais en terme de sécurité de base de donnée, alors je ne vois pas.

  11. #11
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 29
    Par défaut
    oui en effet mais la c'est pour faciliter un developpement et ainsi eviter que les developpeurs soient obliger a chaque fois de renseigner ces champs a la main!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Audit de bases de données
    Par steph4263 dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 28/03/2020, 18h34
  2. [DTS] Comment auditer les transformations sql faites via DTS
    Par danmick dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 07h40
  3. Recherche de Logiciel d'audit de code java
    Par K-ro dans le forum Qualimétrie
    Réponses: 4
    Dernier message: 12/10/2004, 17h54
  4. Audit des performances d'une application Web
    Par jpg dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 16/09/2004, 10h45
  5. oracle 9i linux audit-trail
    Par mela dans le forum Administration
    Réponses: 2
    Dernier message: 04/08/2004, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo