02.06.2013 Views

Introduction Conditions - Trivadis

Introduction Conditions - Trivadis

Introduction Conditions - Trivadis

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!