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 :

Restriction de drop table


Sujet :

Administration Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Restriction de drop table
    Bonjour à tous,
    sous oracle 12C je souhaiterai restreindre le drop table afin d' éviter de grosses déconvenues.
    sur DB2/mainframe je sais que l'on peut faire un 'restrict on drop table'
    mais sur oracle je n'ai pas trouvé de possibilité identique a part revoir les privilèges accordé aux différents user
    ou créer un trigger.
    connaissez-vous d'autres possibilités plus globales.
    merci de vos réponses.
    Cordialement.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 135
    Points : 1 913
    Points
    1 913
    Par défaut
    Bonjour,

    Je pense qu'il faut plutôt se poser la question sur le fait que des utilisateurs puissent dropper des tables. Soit ils ont le privilège DROP ANY TABLE, soit ils se connectent en tant qu'utilisateurs propriétraires des tables. Il faut donc revoir ces privilèges. Sinon à part un trigger système, il n'y a pas de solutions simples pour empêcher de dropper une table à celui qui a le droit de le faire.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut drop table
    Bonjour,

    merci pour votre réponse
    il est possible de créer le trigger au niveau base de données ?? et pas pour chaque schéma
    auriez-vous un exemple de trigger système.
    Cordialement.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 135
    Points : 1 913
    Points
    1 913
    Par défaut
    Quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace trigger prevent_drop_trg 
    before drop on database
    begin
    if ora_dict_obj_type = 'TABLE' then
      raise_application_error (-20001, 'Suppression de tables non autorisée');
    end if;
    end;
    /
    Vous pouvez ajouter des conditions sur le propriétaire ou d'autres points si besoin.

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut restriction drop loggé dans une table
    Bonjour
    le script fonctionne bien mais le msg d'erreur n'apparait pas dans l'alert log
    aussi comment puis-je faire pour logger dans un fichier ou une table temporaire
    je ne maitrise pas le code
    merci pour votre aide

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 135
    Points : 1 913
    Points
    1 913
    Par défaut
    Bonjour,

    Pour logger dans le fichier alert.log il faut utiliser le package non documenté DBMS_SYSTEM. Un exemple ici :

    https://www.databasejournal.com/feat...race-files.htm

    Attention le package DBMS_SYSTEM est assez puissant, il faut donc donner les droits d'exécution qu'à un utilisateur DBA.

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci
    mais je crois que je vais mettre cela dans 1 table

  8. #8
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Bonjour,

    Pour moi, la bonne pratique consiste à créer 3 comptes Oracle (CREATE USER) :
    - le premier USER1 sur lequel on se connecte ne sert uniquement qu'à la livraison des objets (tables, index, vues, procédures stockées, etc, etc).
    - le second USER2 sert aux traitements applicatifs (batchs, serveurs Web) avec des droits en lecture et écriture sur les objets de USER1
    - le troisième USER3 n'a que des droits de lecture. Il est souvent utilisé par des personnes privilégiées ayant accès aux données (je pense surtout à la production), ou bien pour faire du reporting via des logiciels comme BO, Cognos ou autres


    Cette façon de faire nécessite de :
    - de donner les bons droits, via des rôles et non pas en direct. Ainsi USER3 aura un rôle ne regroupant que des privilèges de type GRANT SELECT sur les tables et vues de USER1. Quant à USER2, toujours via un rôle, il aura des privilèges de type GRANT SELECT, INSERT, UPDATE, DELETE sur les tables et les vues de USER1, ainsi que des privilèges de type GRANT EXECUTE pour les procédures et fonctions stockées en PL/SQL
    - de créer des synonymes sur USER2 et USER3 pour éviter de préfixer les objets avec USER1. Et pour des raisons de sécurité, surtout si la base Oracle est mutualisée avec d'autres projets, il vaut mieux créer des synonymes privés sur USER2 et USER3, plutôt que de créer des synonymes publics.

    De cette manière, à part les personnes en charge des livraisons applicatives, personne d'autre ne connaît le mot de passe de USER1 et personne ne peut donc s'y connecter pour dropper les tables.

    Qu'en pensez-vous SVP ?

Discussions similaires

  1. concernant drop table
    Par daguet dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/10/2005, 14h09
  2. comment eviter ora-00942 lors d'un drop table
    Par sqlakf76 dans le forum Oracle
    Réponses: 22
    Dernier message: 11/10/2005, 16h48
  3. syntaxe drop table exists
    Par guns17 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/02/2005, 11h50
  4. DROP table et table fantome
    Par romeo9423 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 07/02/2005, 19h46
  5. urgent drop tables
    Par divableue dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 15h46

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