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

Oracle Discussion :

auditer l'activité d'un programme sur une table


Sujet :

Oracle

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut auditer l'activité d'un programme sur une table
    bonjour,

    Je cherche à trouver l'information(qui se trouve dans v$session) sur quel programme insert dans une table
    voici un bout de test:
    une idée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    drop sequence myseq;
    drop table test;
    drop table audit_test;
     
    create table test ( a number primary key, b number);
    create sequence myseq;
    create table audit_test (  myseq number,
                            a number, 
                            program varchar2(128), 
                            machine varchar2(128)
    );
     
    create or replace trigger insert_test
         before   insert   on test
         for each row
     
    DECLARE
    BEGIN
      insert into audit_test values (mySeq.nextval,:new.a,null,sys_context('USERENV', 'HOST')  );
    END;
    /

  2. #2
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Version Oracle ?

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    pardon, j'oubliai: 9.2.0.7

  4. #4
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Est ce que tu connais DBMS_FGA ?

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    non,
    de manière générale, je ne connais rien aux fonctions d'audit implémentées par Oracle. Et je suis sûre que c'est un grand tort!

  6. #6
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Malheureusement, en 9i, le FGA (Fine Grain Auditing) ne permet de ne monitorer que les select...

    [edit]
    L'audit classique permet de dire "machin a interrogé la table toto". Le FGA permet de savoir quels sont les lignes qu'il a précisément interrogées.
    [/edit]

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    on en revoient donc au problème de départ.
    comment capture le program (ou le sid) d'ine session donnée?

  8. #8
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
     
    SQL> desc DBMS_FGA
    PROCEDURE ADD_POLICY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     OBJECT_SCHEMA                  VARCHAR2                IN     DEFAULT
     OBJECT_NAME                    VARCHAR2                IN
     POLICY_NAME                    VARCHAR2                IN
     AUDIT_CONDITION                VARCHAR2                IN     DEFAULT
     AUDIT_COLUMN                   VARCHAR2                IN     DEFAULT
     HANDLER_SCHEMA                 VARCHAR2                IN     DEFAULT
     HANDLER_MODULE                 VARCHAR2                IN     DEFAULT
     ENABLE                         BOOLEAN                 IN     DEFAULT
    PROCEDURE DISABLE_POLICY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     OBJECT_SCHEMA                  VARCHAR2                IN     DEFAULT
     OBJECT_NAME                    VARCHAR2                IN
     POLICY_NAME                    VARCHAR2                IN
    PROCEDURE DROP_POLICY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     OBJECT_SCHEMA                  VARCHAR2                IN     DEFAULT
     OBJECT_NAME                    VARCHAR2                IN
     POLICY_NAME                    VARCHAR2                IN
    PROCEDURE ENABLE_POLICY
     Argument Name                  Type                    In/Out Default?
     ------------------------------ ----------------------- ------ --------
     OBJECT_SCHEMA                  VARCHAR2                IN     DEFAULT
     OBJECT_NAME                    VARCHAR2                IN
     POLICY_NAME                    VARCHAR2                IN
     ENABLE                         BOOLEAN                 IN     DEFAULT
     
    SQL>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    SQL> desc dba_fga_audit_trail
     Name                                      Null?    Type
     ----------------------------------------- -------- ------------------
     SESSION_ID                                NOT NULL NUMBER
     TIMESTAMP                                 NOT NULL DATE
     DB_USER                                            VARCHAR2(30)
     OS_USER                                            VARCHAR2(255)
     USERHOST                                           VARCHAR2(128)
     CLIENT_ID                                          VARCHAR2(64)
     EXT_NAME                                           VARCHAR2(4000)
     OBJECT_SCHEMA                                      VARCHAR2(30)
     OBJECT_NAME                                        VARCHAR2(128)
     POLICY_NAME                                        VARCHAR2(30)
     SCN                                                NUMBER
     SQL_TEXT                                           NVARCHAR2(2000)
     SQL_BIND                                           VARCHAR2(4000)
     COMMENT$TEXT                                       VARCHAR2(4000)
    par exemple on audite les colonnes nom et sal de la table salaire
    qui se trouve dans le schema DVP: (ayant un salaire > 3000)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BEGIN
       DBMS_FGA.add_policy (object_schema          => 'DVP',
                            object_name            => 'SALAIRE',
                            policy_name            => 'SALAIRE_DML',
                            audit_column           => 'NOM, SAL',
                            audit_condition      => 'SAL >= 300'
                           );
    END;
    après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
      FROM dba_fga_audit_trail
     WHERE object_schema = 'DVP' AND object_name = 'SALAIRE';

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    Dans ce cas, l'audit nous permet d'auditer des selects fait sur une table.
    Cela ne nous donne pas(il me semble) le programme ainsi que le détail exact des actions passée pas la session.
    Je vous rappelle que je voudrais ressortir l'information suivante:
    le programme truc depuis la machine machin à inséré les lignes 4,8,12 à tel heure.
    l'audit permet-il (je suis en train de l'étudier en même temps que ceux qui s'interessent à la question) de faire ce genre d'analyse ou bien un trigger comme je le proposai au début suffit-il? (j'avais presque tout, il ne me manquait qu'une info!)

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    Hello tous,

    Bon vous m'avez convaincu d'utiliser l'audit.
    J'ai testé le audit session (d'ailleurs, je ne vois pas la différence entre un audit session et un audit connect, si quelqu'un peut l'expliquer).
    Il y a beaucoup d'infos utilises dedans.
    Par contre, il n'y a pas le programme!
    Et j'en ai besoin.
    Alors, je pourrai faire un trigger on connect qui irait chercher le session_id ainsi que le programme dans la vue v$session, mais ce serait bête.
    soit on peut tout parametrer dans Oracle, soit je fait le boulot.
    Quelqu'un voit-il donc comment retrouver cette info avec l'audit?

  11. #11
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il semble que l'information n'existe ni dans la table SYS.AUD$:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    desc sys.aud$;
     Name                                      Null?    Type
     ----------------------------------------- -------- --------------------------
     SESSIONID                                 NOT NULL NUMBER
     ENTRYID                                   NOT NULL NUMBER
     STATEMENT                                 NOT NULL NUMBER
     TIMESTAMP#                                NOT NULL DATE
     USERID                                             VARCHAR2(30)
     USERHOST                                           VARCHAR2(128)
     TERMINAL                                           VARCHAR2(255)
     ACTION#                                   NOT NULL NUMBER
     RETURNCODE                                NOT NULL NUMBER
     OBJ$CREATOR                                        VARCHAR2(30)
     OBJ$NAME                                           VARCHAR2(128)
     AUTH$PRIVILEGES                                    VARCHAR2(16)
     AUTH$GRANTEE                                       VARCHAR2(30)
     NEW$OWNER                                          VARCHAR2(30)
     NEW$NAME                                           VARCHAR2(128)
     SES$ACTIONS                                        VARCHAR2(19)
     SES$TID                                            NUMBER
     LOGOFF$LREAD                                       NUMBER
     LOGOFF$PREAD                                       NUMBER
     LOGOFF$LWRITE                                      NUMBER
     LOGOFF$DEAD                                        NUMBER
     LOGOFF$TIME                                        DATE
     COMMENT$TEXT                                       VARCHAR2(4000)
     CLIENTID                                           VARCHAR2(64)
     SPARE1                                             VARCHAR2(255)
     SPARE2                                             NUMBER
     OBJ$LABEL                                          RAW(255)
     SES$LABEL                                          RAW(255)
     PRIV$USED                                          NUMBER
     SESSIONCPU                                         NUMBER
    ni dans une des vues DBA_AUDIT_XXX.
    Il te reste à faire le boulot avec un trigger on logon

Discussions similaires

  1. Executer un programme sur une partition monté
    Par FoX_*D i E* dans le forum Linux
    Réponses: 7
    Dernier message: 02/02/2013, 11h56
  2. la programmation sur une map en vb.net
    Par vbnetnet dans le forum VB.NET
    Réponses: 1
    Dernier message: 02/11/2012, 23h31
  3. audit sur une table
    Par amarkamel dans le forum Administration
    Réponses: 5
    Dernier message: 30/06/2010, 00h37
  4. Réponses: 2
    Dernier message: 01/04/2010, 21h25
  5. Ecrire par programmation sur une feuille protégé !
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 21h54

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