ORACLE > interdire les opérations DDL (alter table, alter view, etc...)

Le
Flox
Bonjour,

Je suis sous ORACLE 10g et je souhaite interdire toutes opérations
touchant à la structure de ma base. Et cela y compris pour les
propriétaires des tables.

Il est clair que cette opération doit être possible via un trigger.
Mais est-ce que l'un d'entre vous aurait une autre solution plus
simple à mettre en oeuvre que de distribuer du code PL sur tous mes
schémas ?

Merci de votre aide et à bientôt.

Flo.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
see
Le #21871821
Bonjour,

Flox
Je suis sous ORACLE 10g et je souhaite interdire toutes opérations
touchant à la structure de ma base. Et cela y compris pour les
propriétaires des tables.



Pourquoi ne pas restreindre l'accès à l'utilisateur propriétaire. Ce
serait quand même beaucoup plus simple...
--
Bruno
http://errance.lirano.net (photographies)
Flox
Le #21871801
On 16 nov, 21:32, (Bruno Jargot) wrote:
Bonjour,

Flox > Je suis sous ORACLE 10g et je souhaite interdire toutes opérations
> touchant à la structure de ma base. Et cela y compris pour les
> propriétaires des tables.

Pourquoi ne pas restreindre l'accès à l'utilisateur propriétaire. Ce
serait quand même beaucoup plus simple...
--
Brunohttp://errance.lirano.net(photographies)



Bonjour,

En fait, je souhaite également interdire ce type d'opération pour le
propriétaire. D'où mon problème... Personnellement, je ne vois que 2
solution : x triggers sur l'ensemble de mes schémas ou créer un
système de comptes utilisateurs utilisant des synonymes... Si je n'ai
que ces 2 solutions, je pense plutôt me pencher sur la solution PL...

Mais si l'un de vous à une autre idée, elle est la bienvenue ;-)

Merci de votre aide,

Flo
Thierry Thomas
Le #21871781
Lundi 19 novembre 2007 à 08:20 GMT, Flox a écrit :

Bonjour,



Bonjour,

En fait, je souhaite également interdire ce type d'opération pour le
propriétaire. D'où mon problème... Personnellement, je ne vois que 2
solution : x triggers sur l'ensemble de mes schémas ou créer un
système de comptes utilisateurs utilisant des synonymes... Si je n'ai
que ces 2 solutions, je pense plutôt me pencher sur la solution PL...

Mais si l'un de vous à une autre idée, elle est la bienvenue ;-)



Je ne sais pas d'où vient ce besoin, mais j'aurais tendance à dire que
vous n'avez pas créé ces objets avec le bon propriétaire. Créez donc
plutôt vos objets avec un autre utilisateur, et attribuez les bons
droits au propriétaire actuel.

Autrement, vous pouvez aussi n'attribuer les droits de DML qu'au moment
de la création initiale des objets, et les retirer ensuite (pas testé,
mais ça devrait marcher...).
--
Th. Thomas.
see
Le #21871771
Flox
En fait, je souhaite également interdire ce type d'opération pour le
propriétaire. D'où mon problème... Personnellement, je ne vois que 2
solution : x triggers sur l'ensemble de mes schémas ou créer un
système de comptes utilisateurs utilisant des synonymes... Si je n'ai
que ces 2 solutions, je pense plutôt me pencher sur la solution PL...

Mais si l'un de vous à une autre idée, elle est la bienvenue ;-)



La pratique habituelle pour gérer les droits est :

-> Création de tous les objets de l'application avec le compte
propriétaire. Ce compte n'est utilisé que pour la création/modification
des objets de l'applications.

-> Les utilisateurs de l'application utilisent soit des comptes
nominatifs, soit un compte générique. En aucun cas, les utilisateurs
utilisent le compte propriétaire.
Les droits nécessaires (et seulement les droits nécessaires du genre
select, update, delete et insert) sont attribués aux comptes utilisés
par les utilisateurs de l'application. Des synonymes publiques ou privés
rendent transparent l'accès aux objets de la base (il est même possible
de mettre un trigger au logon qui change le schéma par défaut (alter
session set current_schema=<user propriétaire des objets de la base>;).
Cela permet d'éviter la création de synonymes)

Je ne vois pas de cas où il serait nécessaire de créer une usine à gaz
pour empêcher le propriétaire de modifier ses propres objets, en
supposant que c'est possible.
--
Bruno
http://errance.lirano.net (photographies)
Flox
Le #21871761
On 19 nov, 19:31, Thierry Thomas
Lundi 19 novembre 2007 à 08:20 GMT, Flox a écrit :

> Bonjour,

Bonjour,

> En fait, je souhaite également interdire ce type d'opération pour l e
> propriétaire. D'où mon problème... Personnellement, je ne vois qu e 2
> solution : x triggers sur l'ensemble de mes schémas ou créer un
> système de comptes utilisateurs utilisant des synonymes... Si je n'ai
> que ces 2 solutions, je pense plutôt me pencher sur la solution PL...
> Mais si l'un de vous à une autre idée, elle est la bienvenue ;-)

Je ne sais pas d'où vient ce besoin, mais j'aurais tendance à dire que
vous n'avez pas créé ces objets avec le bon propriétaire. Créez do nc
plutôt vos objets avec un autre utilisateur, et attribuez les bons
droits au propriétaire actuel.

Autrement, vous pouvez aussi n'attribuer les droits de DML qu'au moment
de la création initiale des objets, et les retirer ensuite (pas testé,
mais ça devrait marcher...).
--
Th. Thomas.



Bonjour,

Je suis d'accord avec vous : cela aurait été plus simple d'avoir
d'autres propriétaires.

Pour expliquer un peu mieux mon besoin, voici ce que je souhaite
faire. Nous avons 1 environnement de qualif et 1 de prod qui sont
identiques (même schémas, même user, même tables, etc...). Les droit s
sont également identiques. Maintenant, je souhaite interdire les
opérations de manipulation de la structure des tables de production
(alter ou drop table par exemple) afin d'obtenir un environnement
stable et demander aux développeurs de respecter un workflow pour
modification de la production.

C'est pour cela que même les propriétaires des objets doivent être
bloqués (à l'exception des comptes ORACLE).

Voilà, j'espère que cela éclaire un peu mieux le sujet de cette
demande peu conventionelle....

Encore merci de votre aide,

Flo.
nobody
Le #21871751

C'est pour cela que même les propriétaires des objets doivent être
bloqués (à l'exception des comptes ORACLE).

Voilà, j'espère que cela éclaire un peu mieux le sujet de cette
demande peu conventionelle....

Encore merci de votre aide,

Flo.



la sécurité est en effet peu conventionnelle avec Oracle

UN DEMI-MILLION DE BASES DE DONNEES SANS PROTECTION SUR INTERNET (15/11/07)
Près d'un demi-million de serveurs de bases de données Oracle et Microsoft
sont laissés sans protection et sont accessibles librement depuis Internet.
C'est ce qu'affirme le chercheur en sécurité David Litchfield [...].
http://www.secuser.com/article.php?ID945
Jerome Vitalis
Le #21871741
On Fri, 16 Nov 2007 07:31:40 -0800, Flox wrote:

Bonjour,

Je suis sous ORACLE 10g et je souhaite interdire toutes opérations
touchant à la structure de ma base. Et cela y compris pour les
propriétaires des tables.

Il est clair que cette opération doit être possible via un trigger. Mais
est-ce que l'un d'entre vous aurait une autre solution plus simple à
mettre en oeuvre que de distribuer du code PL sur tous mes schémas ?

Merci de votre aide et à bientôt.

Flo.



Avec :
revoke alter any table from <user>;

et commandes similaires pour les autres types d'objets du schéma.
vitalis...
Le #21871721
Jerome Vitalis wrote:

Avec :
revoke alter any table from <user>;

et commandes similaires pour les autres types d'objets du schéma.



Oups. Désolé, j'ai répondu trop vite, ça ne fonctionnera pas, surtout pour
le propriétaire du schéma (qui n'a pas besoin d'avoir ces privilèges pour
modifier ses objets.)
-----
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/
astalavista
Le #21878901
alter table disable table lock


interdit tous les DDL mais autorise les DML ...


----- Original Message -----
From: "Flox" Newsgroups: fr.comp.applications.sgbd
Sent: Friday, November 16, 2007 4:31 PM
Subject: ORACLE > interdire les opérations DDL (alter table, alter view,
etc...)


Bonjour,

Je suis sous ORACLE 10g et je souhaite interdire toutes opérations
touchant à la structure de ma base. Et cela y compris pour les
propriétaires des tables.

Il est clair que cette opération doit être possible via un trigger.
Mais est-ce que l'un d'entre vous aurait une autre solution plus
simple à mettre en oeuvre que de distribuer du code PL sur tous mes
schémas ?

Merci de votre aide et à bientôt.

Flo.
Publicité
Poster une réponse
Anonyme