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

SQL Oracle Discussion :

Modification/annulation d'une requête en real-time


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Modification/annulation d'une requête en real-time
    Bonjour à tous,

    Est-il possible à l'aide d'Oracle d'intercepter toutes les requêtes (SELECT + DML) envoyées au serveur de base de données ? Si oui, est-il possible de les annuler et/ou les modifier (pour des questions de sécurité).

    J'ai déjà pas mal regardé à VPD, Fine-grained auditing, etc. mais je ne trouve pas exactement ce que je cherche...

    Merci d'avance,

    Gaëtan.

  2. #2
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Dans quel but ?
    Si c'est juste pour empêcher certaine table d'être lues ou bien d'être mises à jour, le GRANT suffit largement

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Loyd1974 Voir le message
    Dans quel but ?
    Si c'est juste pour empêcher certaine table d'être lues ou bien d'être mises à jour, le GRANT suffit largement
    Non en fait je dois pouvoir appliquer une sécurité au niveau de certaines colonnes qui ne peuvent être modifiées que par certains utilisateurs...

    Et comme je n'ai pas accès au code source de ces écrans je dois passer par une sécurité à plus bas niveau type Oracle.

    Des idées ?

  4. #4
    Membre averti Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 342
    Points
    342
    Par défaut
    Et si tu utilses un trigger sur ton schèma ?
    Ton trigger testera l'OsUser et la requête lancée...quelque chose comme ça...

    LBO72.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Oui mais dans les triggers (before insert, before update et before delete) : comment par exemple annuler/modifier la requête au cas où l'utilisateur OSUser n'a pas les droits suffisants ?

  6. #6
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Par le biais d'un trigger, tu peux faire un RAISE d'une erreur que tu auras défini si le user n'est pas correct.

    Personnellement, je ne conseillerai pas de mettre ce genre de contrôle du côté de la base de données, mais plutôt du côté de la couche métier de ton appli.

    Sinon, une autre solution serait de passer par des vues et suivant l'utilisateur ton application accède à une vue ou une autre.

    Par exemple, tu peux avoir une table X et faire une vue X_small et une autre X_All, sur la vue X_small, tu n'affiches que les champs dont l'utilisateur a accès ou bien, tu les affiches tous et au moment de l'update ou de l'insert, tu gères les champs qui sont accessible par le biais de la vue.
    Cela te permet de ne pas avoir de trigger qui viendrai gêner des traitements en masse comme un batch car celui-ci accèderai directement à la table et non aux vues qui seront dédiés seulement au transactionnel

    Mais, il doit y avoir milles autres solutions

  7. #7
    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
    Personnellement, je ne conseillerai pas de mettre ce genre de contrôle du côté de la base de données, mais plutôt du côté de la couche métier de ton appli.
    Si on code une couche de sécurité sur les données, il est préférable de la coder dans la base pour que tout accès SQL soit pris en compte: par l'application mais aussi par tout autre outil susceptible de se connecter à la base comme SQL*Plus, TOAD, Excel, etc...

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    j'vois pas pourquoi le VPD ne peut pas t'aider

  9. #9
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par pifor Voir le message
    Si on code une couche de sécurité sur les données, il est préférable de la coder dans la base pour que tout accès SQL soit pris en compte: par l'application mais aussi par tout autre outil susceptible de se connecter à la base comme SQL*Plus, TOAD, Excel, etc...
    Oui, tu as raison, en fait, pour moi, le problème était au niveau des utilisateurs eux-mêmes. Donc, j'avais plus dans la tête le mot "habilitation" que "sécurité", ce qui n'est pas exactement la même problématique, même si le résultat final peut apparaitre similaire, l'une est vraiment sure à 100%, l'autre est plus souple.

Discussions similaires

  1. [WD16] Modification table liée à une requête
    Par WDKyle dans le forum WinDev
    Réponses: 6
    Dernier message: 07/01/2015, 17h02
  2. Annulation d'une requête update
    Par witch dans le forum Développement
    Réponses: 2
    Dernier message: 13/01/2010, 11h35
  3. Modif. Format de champ.txt avec une requête
    Par Gias Service dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/07/2006, 18h10
  4. Modification d'une "requête" inscrite dans la base
    Par Tardiff Jean-François dans le forum Access
    Réponses: 5
    Dernier message: 07/04/2006, 15h51
  5. Besoin d'aide pour une requête de MAJ (modif. de car.)
    Par ptitscrat dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 17h27

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