02.06.2013 Views

Introduction Conditions - Trivadis

Introduction Conditions - Trivadis

Introduction Conditions - Trivadis

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Objet Connexion interne sous Windows (W2K)<br />

Auteur Kalled Belkacem (kalled.belkacem@trivadis.com)<br />

Infos Analyse technique détaillée du processus (janvier 2002)<br />

Source Expériences pratiques des consultants <strong>Trivadis</strong><br />

<strong>Introduction</strong><br />

L’administrateur de bases de données (DBA) doit quelquefois établir des connexions sans<br />

mot de passe. Dans ce cas, l’authentification est effectuée par le système d’exploitation<br />

selon les procédures suivantes :<br />

• l’utilisateur Oracle est authentifié de façon externe ;<br />

• les utilisateurs OS du groupe ORA_DBA ou ORA__DBA (pour NT), ou dba<br />

(pour UNIX), sont soumis à l'établissement de connexions internes.<br />

Ces concepts semblent faciles, mais en pratique, si le DBA choisit d’utiliser la structure<br />

OFA sur le système d’exploitation Windows (NT/W2K), il risque de rencontrer quelques<br />

surprises.<br />

Ce dernier point est l'objet du présent document.<br />

Notez que tous mes tests ont été effectués sous l’environnement suivant :<br />

• WIN2000<br />

• Oracle 8.1.7 avec patch 8.1.7.2<br />

<strong>Conditions</strong><br />

Je décrirai dans ce chapitre les conditions nécessaires pour réaliser une authentification<br />

correcte dans tous les cas de figure, à savoir :<br />

• le fichier sqlnet.ora avec sa syntaxe de connexion pour l'authentification ;<br />

• la variable TNS_ADMIN définie dans le Registre, ou dans le système d’exploitation<br />

comme une variable globale.<br />

Sqlnet.ora<br />

Ce fichier doit contenir au moins la ligne suivante :<br />

SQLNET.AUTHENTICATION_SERVICES= (NTS)


Cette ligne signifie qu'Oracle délègue à NT la responsabilité de l'authentification. De cette<br />

façon, un utilisateur du groupe ORA_DBA ou ORA__DBA sera autorisé à se<br />

connecter en interne et chaque utilisateur créé avec l’option identified externally sera en<br />

mesure de se connecter à la base de données. Dans ces cas de figure, aucun mot de passe<br />

ne sera exigé.<br />

TNS_ADMIN<br />

Oracle utilise cette ”variable environnementale” pour définir l’emplacement des fichiers<br />

sqlnet.ora, tnsnames.ora et listener.ora.<br />

La valeur par défaut pour cette variable est %ORACLE_HOME%/network/admin<br />

Sous NT, il existe plusieurs façons de définir une variable environnementale :<br />

- dans le Registre<br />

- dans le système, en tant que variable environnementale globale<br />

- à l’aide du jeu de commande TNS_ADMIN=value (dans un traitement par lots)<br />

Dans notre cas, seules fonctionneront les 2 premières solutions.<br />

Utilisation<br />

Connexion SYSDBA<br />

Chaque utilisateur des groupes ORA_DBA ou ORA__DBA peut se connecter en<br />

interne sans mot de passe. Cette possibilité est utile pour la création des bases de données,<br />

des traitements par lots, etc. L’administrateur Windows peut inclure dans ce groupe<br />

certains utilisateurs interrogés.<br />

Depuis Oracle9i, l’authentification "as SYSDBA" s’effectue avec la commande suivante :<br />

sqlplus “/ as sysdba”<br />

SQL>Connected.<br />

Avant Oracle9i, la commande équivalente était :<br />

F:\>svrmgrl<br />

SVRMGR> connect internal<br />

Connected.<br />

Remarque :<br />

Pour les utilisateurs NT qui ne sont pas inclus dans ces groupes, il existe tout de même une<br />

possibilité de se connecter "as SYSDBA". Un fichier de mot de passe est alors exigé, et le<br />

paramètre REMOTE_LOGIN_PASSWORDFILE doit être défini comme "exclusif" ou<br />

"partagé" dans le fichier init.ora.


Connexion en tant qu’utilisateur défini en externe<br />

Pour être autorisé à se connecter ainsi, l’utilisateur doit être créé dans la base de données<br />

avec une syntaxe spécifique :<br />

Create user “\”<br />

identified externally…..;<br />

Le nom de l'utilisateur doit être écrit en majuscules.<br />

os_authent_prefix est un paramètre init.ora.<br />

Exemple :<br />

Avec os_authent_prefix=”OS$”<br />

Sqlplus system/manager<br />

Create user “OS$TRIVADIS\KBE” identified externally<br />

Default tablespace USERS<br />

Temporary tablespace TEMP;<br />

Quelques remarques<br />

Je recommande de définir le paramètre remote_os_authent comme faux (false) dans le<br />

fichier init.ora ; sinon, le DBA peut créer un intervalle de sécurité.<br />

J’ai mentionné précédemment que tous les tests ont été réalisés sous la version 8.1.7. Sous<br />

la version 8.1.6, la fonctionnalité du chapitre 3.1 ne s’exécute pas.<br />

La connexion "as SYSDBA" sans mot de passe n’est possible que sous la condition suivante<br />

: si l’utilisateur NT est membre du groupe ORA_DBA ou ORA__DBA. Ces groupes<br />

doivent être des groupes locaux pour le serveur NT et la station de travail NT, et former un<br />

groupe domaine pour le contrôleur de domaine principal (PDC) et le contrôleur de<br />

domaine de sauvegarde (BDC).<br />

Conclusion<br />

Bien que la solution de ce problème semble relativement facile, la connexion interne sous<br />

Windows a déjà perturbé bon nombre de DBA parfaitement expérimentés. Le fait qu'aucun


ORA_DBA ne soit créé sur un contrôleur de domaine de sauvegarde peut ainsi empêcher<br />

l’utilisation d’une connexion interne. Si vous rencontrez des difficultés de ce genre,<br />

j’espère que ce document vous aidera à vous connecter sans mot de passe.<br />

<strong>Trivadis</strong> AG E-mail : kalled.belkacem@trivadis.com<br />

Kalled Belkacem<br />

Kanalstrasse 5 Tél. : +41 1 808 70 20<br />

8152 Glattbrugg Fax : +41 1 808 70 21<br />

Internet : http://www.trivadis.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!