MS AD 2003 et les services names oracle

Oracle directory naming est l’une des méthodes utilisées pour effectuer la résolution d’un nom de service ORACLE.  En environnement Windows, ce procédé facilite la gestion des services oracle du fait de leur centralisation au niveau d’un annuaire LDAP (Ad 2003 dans notre cas). Nous allons voir dans cet article comment configurer cette résolution.

Etapes de configuration de l’annuaire AD 2003

Active Directory doit être configuré pour pouvoir utiliser la fonctionnalité « directory naming » pour la résolution des « services names ». Cela implique l’extension du schéma Active Directory et la création du conteneur OracleContext.
Il faut noter que le schéma des objets oracle se compose d’un ensemble de règles « Oracle Net services »  comportant les entrées de bases de données et leur attributs le tout stocké dans un annuaire AD.
La mise en place de cette configuration est assez simple, elle consiste à effectuer les étapes suivantes :

  • Autoriser la mise à jour du schéma AD
  • Activer la navigation sur le schéma AD avec le compte anonymous
  • Créer le contexte oracle avec NetCA
  • Configuration des clients

Pré-requis

Le serveur AD doit être déclaré comme contrôleur du domaine.
La connexion au serveur AD, doit se faire avec un compte disposant de privilège d’administration.
Si vous ne disposer pas d’un accès à la console depuis le serveur. Utiliser un utilitaire vous permettant de vous connecter à l’annuaire.

Autorisation de la mise à jour du schéma AD

Avant de commencer, je vous conseille vivement d’effectuer une sauvegarde du catalogue AD. En effet l’extension de schéma Active Directory est irréversible : les attributs et les classes d’objets, générés dans le cadre de la création OracleContext, ne peuvent pas être supprimés. (c.f document microsoft suivant pour plus de détail) http://msdn2.microsoft.com/en-us/library/ms676900.aspx
Après avoir accordé les droits d’écriture sur schéma, l’annuaire AD doit être configuré de façon explicite pour autoriser la modification sur celui-ci.

  1. Cliquez sur Démarrer
  2. Cliquez sur exécuter
  3. Valider avec un clic sur OK
  4. Naviguez dans le registre windows jusqu’à la clé :
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNTDSParameters
  5. Ajouter un nouveau paramètre Schema Update Allowed (de type REG_DWORD) avec un hexadécimal ayant comme valeur 1

Noter que ce paramètre est dynamique et prend effet immédiatement.

Activer la lecture avec le compte anonymous

Notez que MS Active Directory 2003 n’autorise que les comptes authentifiés pour effectuer une requête LDAP.
La méthode la plus simple pour activer la navigation avec le compte anonymous, consiste à utilise l’outil Windows ADSI Edit téléchargeable depuis l’url  http://technet2.microsoft.com/WindowsServer/en/Library/baa79cdd-83b0-4f10-9356-b2d14462d5b21033.mspx .
(Rien ne vous empêche d’utiliser votre navigateur LDAP privilégié comme Apache LDAP Studio).
Connecter vous à la console MMC (Microsoft Management Console) pour démarrer l’utilitaire ADSI Edit.
Cliquez sur File > Add/Remove Snap-in>Add > sélectionnez ADSI Edit > cliquez sur Add > Fermer > cliquez sur OK > puis faites un clic droit sur ADSI Edit > cliquez sur connect to > sélectionnez Configuration Naming Context > cliquez sur OK.
Naviguez dans l’arborescence comme sur l’exemple suivant :
[Configuration Zuse.msa]
–CN=Configuration, DC=ZUES, DC=MSA
——-CN=Services
————-CN=Windows NT
——————CN=Directory Service
Faites un clic droit sur le conteneur CN=Directory Service, sélection propriétés et  descendre en bas pour sélectionner l’attribut dSHeuristics. Editez le pour lui affecter la valeur  0000002, cette opération aura comme effet d’autoriser les modifications avec le compte anonymous (dans la limite de ce qui est autorisé par les ACLs).

Extension du schéma et création d’OracleContext

OracleContext représente la classe supérieure au niveau de la hiérarchie LDAP, de ce fait elle inclura les objets oracle database service et oracle net service name.
Il faut noter :

  • Qu’il ne peut y avoir qu’un seul oracle context par contrôleur de domaine (win 2000 et win 2003).
  • Que la configuration du context oracle, peut être effectuée pendant ou après la création de la base de données.

Allons y :

  1. Lancer NetCA
  2. Choisir l’option « Directory usage configuration», puis cliquez sur suivant
  3. Sélectionnez « Microsoft active directory » comme type d’annuaire, puis cliquez sur suivant
  4. Définir le nom du serveur AD, puis cliquez sur suivant
  5. Choisir l’option de mise à niveau du schéma Oracle, puis cliquez sur suivant
  6. La page suivante affiche un message de confirmation de la configuration (EX : Cn =OracleContext, DC=ZUSE, DC=MS)
  7. Pour terminer cliquer sur suivant puis fin

La création du contexte oracle peut échouer si l’affichage Active Directory n’est pas configuré avec les 24 langues par défaut.
Pour le vérifier exécuter la commande suivante
ldifde -p OneLevel -d cn=DisplaySpecifiers, cn=Configuration, dc=zuse, dc=msa -f out_file

Configuration des clients

Vous devez adapter les fichiers $ORACLE_HOME/network/admin/sqlnet.ora et $ORACLE_HOME/network/admin/ldap.ora. Pour que les clients oracle s’appuient sur le serveur AD pour effectuer la résolution.
EX :
sqlnet.ora:
NAMES.DIRECTORY_PATH = (LDAP)
ldap.ora:
DIRECTORY_SERVERS = (apophis.zuse.msa:389)
DIRECTORY_SERVER_TYPE = ad
DEFAULT_ADMIN_CONTEXT = « cn = Configuration, DC = zuse, dc = msa »
Voilà, c’est fini !