Bonjour à tous,
Je me suis lancé récemment dans un projet de taille conséquente (à savoir la réalisation d'une application web en Java JEE / Oracle) avec pour objectif de l'intégrer au sein d'un parc informatique professionnel.
Jusqu'à présent j'ai toujours utilisé Oracle sans trop me poser de questions (en allant même jusqu'à me connecter à ma base avec le compte "system") dans le cadre de petits projets réalisés en école.
N'ayant jamais travaillé en milieu professionnel sur une base oracle je fais appel à vos connaissances qui, je l'espère, couplées à quelques recherches sur le web me permettront de mieux comprendre ce SGBD et de pouvoir intégrer mon projet en entreprise.
Mon post sera orienté selon quatre axes:
1. Authentification1. Authentification des utilisateurs
2. Architecture de la base
3. Versions de la base
4. Sécurité
Je souhaite pouvoir gérer les utilisateurs via une interface d'administration.
En effet n'étant pas raccordé au réseau de l'entreprise je ne peux effectuer de couplage avec l'Active Directory. Je me penche donc sur une authentification via des utilisateurs oracle.
Pour cela je pense créer manuellement (càd en SQL, lors du déploiement de l'application) le compte administrateur. Ensuite, exécuter le script de création de la base avec cet utilisateur. Puis créer les utilisateurs via l'application en leur associant les privilèges systèmes et objets qui leur seront associés.
Que pensez-vous de cette manière de faire ?
2. Architecture de la base
..Seulement voilà, les utilisateurs créés, il faut les faire accéder aux objets ! Et c'est là que je fais face à quelques limites de connaissances.
D'après ce que j'ai compris, lorsque l'on crée un utilisateur on crée également un schéma portant son nom, un ensemble qui contiendrait les objets créés par ce dernier. Moi qui pensait que c'était le rôle du tablespace, me voilà servi !
Mes questions sont donc les suivantes:
- Quelles sont les différences entre un schéma et un tablespace ?
- Finalement, qu'est-ce qu'un tablespace ? Est-ce uniquement une notion physique, et non pas logique ?
- Comment les utilisateurs peuvent-ils accéder au même conteneur d'objets (qui semble être le schéma) ? Peut-on modifier le schéma d'un utilisateur pour le faire pointer vers celui d'un autre, en l'occurence ici le schéma de l'utilisateur ayant créé la base ?
- Faut-il utiliser le tablespace "system" ?
3. Versions de la base
Récemment, j'ai effectué un stage au sein d'une SSII qui utilisait notamment des bases SQL SERVER. J'ai découvert la notion de schémas (et oui, encore eux !) qui étaient utilisés pour versionner les tables des bases, de sorte que pour une table TOTO présente sous plusieurs versions il suffisait de suffixer dans la clause FROM du SQL '[SCHEMA_X].[TOTO]'.
Concrètement on pouvait faire le parrallèle entre un schéma et un utilisateur.
Qu'en est-il sous oracle ?
Émettons que je crée 3 utilisateurs utilisant un même schéma (dans le sens Oracle, cf partie 2). Est-il possible d'avoir au sein de ce schéma plusieurs versions des différentes tables (autrement qu'en modifiant leur nom ?).
4. Sécurité
Un dernier point, après je vous laisse, vous devez déjà en avoir assez.. =)
Le cryptage des mots de passe sous oracle est il fiable ? Est-il réversible ?
A partir de mon application, quelle méthode employer pour envoyer les requêtes de manière cryptée vers la base ? Typiquement, lorsque l'administrateur va créer un utilisateur, je ne voudrais pas que la requête transite en clair sur le réseau avec le MDP.
Je vous avoue que je ne me suis pas beaucoup renseigné sur ce point, peut être que JDBC crypte déjà les requêtes avec les objets "statement".
Voilà, j'en ai terminé, rassurez-vous j'effectue des recherches sur internet mais on trouve parfois vraiment de tout et c'est un point assez critique. Merci d'avance pour vos éclaircissements =)
Partager