Enterprise User Security et Oracle Virtual Directory

Une fois Oracle Virtual Directory installés et configurés, mettre en place Enterprise User Security passe par une phase un peu pénible de configuration d’OVD, de l’annuaire externe composants et de leur « collaboration ». Pour tous les détails de cette phase, reportez-vous à la section « 19 Configuring Oracle Virtual Directory for Integrated Directory Solutions > 19.2 Integrating with Oracle’s Enterprise User Security » de la documentation.

Dans cet article, vous trouverez un exemple de mise en oeuvre avec Novell eDirectory ainsi que quelques-unes des difficultés rencontrées (et contournées) à l’occasion de cette implémentation. Vous l’adapterez pour votre annuaire et votre contexte ; une fois ce passage dépassé,  le monde de la sécurité de vos bases de données Oracle va être transformé à jamais…

Etape 1 : Configurer OVD

La première étape de la configuration consiste à configurer OVD pour utiliser les EUS ; elle consiste à sauvegarder le répertoire de configuration, à paramétrer un listener LDAP/SSL et à installer les plugins utiles à EUS.

Sauvegarder le répertoire eus

Pour éviter toute mauvaise manipulation, la documentation conseille de sauvegarder le répertoire eus comme ceci :

export ORACLE_HOME=/u01/app/oracle/Middleware/Oracle_IDM1
cd $ORACLE_HOME/ovd
zip -r eus.orig.zip eus

Listener LDAP SSL sans authentification

Pour configurer Enterprise User Security, il faut que OVD serve un listener LDAP sur SSL qui autorise les accès anonymes. Pour se faire, reportez-vous à la documentation ; utilisez Fusion Middleware Console comme dans les captures d’écran ci-dessous :

Plug-ins SubSchemaSubEntry et Dynamic Groups

Ajoutez les plugin SubSchemaSubEntry et Dynamic Groups à Oracle Virtual Directory; pour cela, connectez-vous à Oracle Directory Services Manager à partir de la console Fusion Middleware comme ci-dessous :

L’administrateur par défaut de Oracle Virtual Directory est cn=orcladmin. Une fois connecté à ODSM, sélectionnez l’onglet Global Plugins et ajoutez les plugins suivantes :

  • com.octetstring.vde.chain.plugins.subschemasubentry.subschemasubentry (nommez-la par exemple SubschemaSubentry)
  • com.octetstring.vde.chain.plugins.DynamicGroups.DynamicGroups (nommez-la, par exemple, DynamicGroups)

Etape 2 : Changer le paramétrage de eDirectory

Une fois OVD configuré, vous devrez paramétrer votre annuaire cible pour gérer les utilisateurs Oracle comme décrit dans cette section de la documentation. Pour ce faire, envoyez et chargez les fichiers LDIF de EUS. Une fois les schémas Oracle chargées, vous configurerez Universal Password et vous autoriserez l’administrateur à interroger les mots de passe.

Remarque préalable

J’ai noté ci-dessous comment supprimer et recréer la configuration eDirectory complète. Cette procédure est assez utile pour effectuer de multiples tests ; ainsi, pour supprimer une configuration, utilisez ndsconfig rm comme ci-dessous :

# ndsconfig rm -a admin.red.arkzoyd -w manager

[1] Instance at /etc/opt/novell/eDirectory/conf/nds.conf: black.OU=red.O=arkzoyd.RED

Deconfiguring Novell eDirectory server with the following parameters, Please wait...
Tree Name : RED
Server DN : black.OU=red.O=arkzoyd
Admin DN : admin.red.arkzoyd

Configuration File : /etc/opt/novell/eDirectory/conf/nds.conf
Instance Location : /var/opt/novell/eDirectory/data
DIB Location : /var/opt/novell/eDirectory/data/dib

Starting the service 'ndsd'... Done.

Checking if server is ready to service requests... Done

Deconfiguring Novell eDirectory might cause problems in the operation of modules dependent on eDirectory. Do you wish to continue? (y/n) : y

Logging into the tree as "admin.red.arkzoyd". Please wait...
Warning: The root (main) partition for Directory tree RED exists only on this server. If you continue, all objects in this Directory tree will be destroyed; all servers in this tree must be reinstalled, and all current user accounts, and server objects, etc. will be deleted.
Do you really want to remove? (y/n) : y

Removing NDS Server...

Deleting the replica of the partition ".[Root].". This may take sometime based on the partition size. Please wait...

Deconfiguration of eDirectory server is complete.
The instance at /etc/opt/novell/eDirectory/conf/nds.conf is successfully removed.
Stopping the service 'ndsd'... Done.

Pour la recréer, utilisez la syntaxe ndsconfig new comme celle-ci :

# ndsconfig new -t black -n ou=black.o=arkzoyd -a cn=admin.ou=black.o=arkzoyd
Enter the password for cn=admin.ou=black.o=arkzoyd:
Re-enter the password for cn=admin.ou=black.o=arkzoyd:

Please enter the absolute path for the instance [ /var/opt/novell/eDirectory ]:

Please enter absolute path of the database directory [ /var/opt/novell/eDirectory/data/dib ]:

Configuring the NDAP interfaces...
The following are the IP addresses bound to this host.
Please indicate your choice for NCP/HTTP/HTTPS listeners at the prompt.
[1] 127.0.0.2
[2] 192.168.56.10
[3] All
Select IP address from 1 - 3.
To select more than one IP address, separate the selections with a comma(,): 3
Done
Configuring the HTTP interfaces... Done
Configuring the LDAP interfaces... Done

Configuring Novell eDirectory server with the following parameters, Please wait...
Tree Name : black
Server DN : black.ou=black.o=arkzoyd
Admin DN : cn=admin.ou=black.o=arkzoyd
NCP Interface(s) : 127.0.0.2@524,192.168.56.10@524
HTTP Interface(s) : 127.0.0.2@8028,192.168.56.10@8028
HTTPS Interface(s) : 127.0.0.2@8030,192.168.56.10@8030
LDAP TCP Port : 389
LDAP TLS Port : 636
LDAP TLS Required : Yes
Duplicate Tree Lookup : Yes

Configuration File : /etc/opt/novell/eDirectory/conf/nds.conf
Instance Location : /var/opt/novell/eDirectory/data
DIB Location : /var/opt/novell/eDirectory/data/dib

Starting the service 'ndsd'... Done.

Checking if server is ready to service requests... Done

Searching for Duplicate Tree Name in the network. Please wait...
Basic configuration is successful. Proceeding with additional configuration...

Extending schema... Done
For more details view schema extension logfile: /var/opt/novell/eDirectory/log/schema.log

Configuring HTTP service... Done
Configuring LDAP service... Done
Configuring SNMP service... Done
Configuring SAS service... Done
Associating certificate with the NCP server object... Done

Configuring NMAS service... Done
Configuring SecretStore... Done
Configuring LDAP Server with default SSL CertificateDNS certificate... Done
The instance at /etc/opt/novell/eDirectory/conf/nds.conf is successfully configured.

Charger les fichiers LDIF sur le serveurs eDirectory

Pour commencer, poussez tous les fichiers eDir*.ldif sur le serveur eDirectory :

[oracle@red eus]$ ssh root@black mkdir /opt/distribs/ldif
Password:

[oracle@red eus]$ scp eDir* root@black:/opt/distribs/ldif/.
Password:
eDirgoun.ldif 100% 1070 1.0KB/s 00:00
eDirRealm.ldif 100% 70KB 70.2KB/s 00:00
eDirSchema.ldif 100% 350KB 349.7KB/s 00:00
eDirUserContainer.ldif 100% 1177 1.2KB/s 00:00
[oracle@red eus]$

Charger le fichier eDirSchema.ldif

Utilisez les outils de eDirectory pour charger les fichiers plutôt que les outils qui viennent avec OVD. Une fois les fichiers sur le serveur, j’ai utilisé la commande ldapmodify -h black -p 389 -x -D "cn=admin,ou=black,o=arkzoyd" -Z -W -f eDirSchema.ldif -v. Il s’avère que certains attributs existaient déjà dans ma configuration j’ai donc au préalable commenté les lignes suivantes :

dn: cn=schema
changetype: modify
add: attributeTypes
attributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.4 NAME 'pwdInHistory' EQUALITY integerMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.27' SINGLE-VALUE )

dn: cn=schema
changetype: modify
add: attributeTypes
attributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.16 NAME 'pwdChangedTime' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )

dn: cn=schema
changetype: modify
add: attributeTypes
attributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.17 NAME 'pwdAccountLockedTime' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )

dn: cn=schema
changetype: modify
add: attributeTypes
attributetypes: ( 1.3.6.1.4.1.42.2.27.8.1.19 NAME 'pwdFailureTime' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.24' NO-USER-MODIFICATION USAGE directoryOperation )

D’autre part, dans ma configuration, la ligne suivante était corrompue :

dn: cn=schema
changetype: modify
add: attributeTypes
attributetypes: ( 2.16.840.1.113894.1.1.217 NAME 'orclUnsyncRevPwd' EQUALITY octetStringMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15{128}' NO-USER-MODIFICATION USAGE directoryOperation )

La commande échoue avec le message : ldapmodify: unknown changetype "modify " (line 2 of entry "cn=schema"). Pour contourner ce problème, j’ai supprimé puis recréé le « y » de « modify » dans le fichier; ça a corrigé mon problème !

Charger le fichier eDirgoun.ldif

Une fois le fichier précédent chargé, j’ai chargé eDirgoun.ldif sans problème à l’aide de la commande suivante :

ldapmodify -h black -p 389 -x -D "cn=admin,ou=black,o=arkzoyd" -Z -W -f eDirgoun.ldif -v
modify complete

Charger le fichier eDirRealm.ldif

Pour charger le fichier eDirRealm.ldif, il faut, au préalable modifier le domaine des objets Oracle et les faire correspondre à ceux de votre choix (et de votre arbre) :

vi eDirRealm.ldif 
:%s/dc=oracle,dc=com/ou=black,o=arkzoyd
ldapmodify -h black -p 389 -x -D "cn=admin,ou=black,o=arkzoyd" -Z -W -f eDirRealm.ldif -v

Charger le fichier eDirUserContainer.ldif

Pour charger le fichier eDirUserContainer.ldif, il faut, là aussi modifier la configuration et lui indiquer l’emplacement des groupes, des users et du domaine dans eDirectory :

vi eDirUserContainer.ldif
:%s/ou=users,dc=oracle,dc=com/ou=black,o=arkzoyd
:%s/ou=groups,dc=oracle,dc=com/ou=black,o=arkzoyd
:%s/dc=oracle,dc=com/ou=black,o=arkzoyd
ldapmodify -h black -p 389 -x -D "cn=admin,ou=black,o=arkzoyd" -Z -W -f eDirUserContainer.ldif -v

Cette dernière opération finit de charger les éléments Oracle dans eDirectory.

Activer Universal Password et la capacité d’interroger les mots de passe

Pour terminer le paramétrage de eDirectory, il faut activer une politique de mot de passe qui permette de s’appuyer sur le Universal Password et activer la capacité d’interroger les mots de passe pour l’administrateur qui fera le lien entre OVD et eDirectory. Pour cela, installer la plug-in « Novell Password Administration Plug-in for iManager 2.7 » dans iManager en installant le fichier PwdManagementPlugins_IMAN_2_7.npm. Vous pourrez alors activer la politique de mot de passe sur l’utilisateur et enregistrer un mot de passe universel depuis iManager (en général https://<hostname>:8030/nps). Voici les copies d’écrans correspondant à cette configuration :

Pour créer la politique de mots de passe, voici également un exemple de mise en oeuvre :

Etape 3 : Configurer le lien OVD/eDirectory

Dans cette étape, installez le toolkit NMAS, créez les localstore, configurez les plug-ins, le mapping entre OVD et eDirectory et les ACL.

Ajouter NMASToolkit.jar au bibliothèques OVD

Téléchargez le Toolkit NMAS et ajoutez-le aux bibliothèques OVD:

$ cd /u01/app/oracle/Middleware/Oracle_IDM1/ovd/jlib/
$ scp root@black:/var/opt/novell/iManager/nps/WEB-INF/lib/NMASToolkit.jar .
Password:
NMASToolkit.jar 100% 96KB 47.9KB/s 00:02
$ chown oracle:oinstall NMASToolkit.jar

$ export ORACLE_INSTANCE=/u01/app/oracle/Middleware/asinst_1
$ $ORACLE_INSTANCE/bin/opmnctl stopall
$ $ORACLE_INSTANCE/bin/opmnctl startall
$ $ORACLE_INSTANCE/bin/opmnctl status

Processes in Instance: asinst_1
---------------------------------+--------------------+---------+---------
ias-component | process-type | pid | status
---------------------------------+--------------------+---------+----- ----
ovd1 | OVD | 5692 | Alive
EMAGENT | EMAGENT | 5691 | Alive

Créer 3 adaptateurs « Local Store » OVD

Reportez-vous à la section correspondante de la documentation. Connectez-vous à ODSM à l’aide de l’administrateur OVD (en général cn=orcladmin). Vous créerez 3 Local Store :

  • cn=OracleContext
  • cn=OracleSchemaVersion
  • cn=fr ou cn=com en fonction du suffixe de votre domaine

Charger le fichier loadOVD.ldif

Chargez le fichier loadOVD.ldif dans OVD :

# $ORACLE_HOME/bin/ldapmodify -h red -p 6501 -D "cn=orcladmin" -q -v -a -f loadOVD.ldif

Modifiez et chargez le fichier realmRoot.ldif

Modifiez le fichier realmRoot.ldif avant de le charger; voici un exemple ci-dessous :

# cat realmRoot.ldif 
#version: 1

dn: dc=com
dc: com
objectclass: domain

dn: dc=arkzoyd,dc=com
dc: arkzoyd
o: black
objectclass: domain
objectclass: organization
objectclass: orclSubscriber
orclsubscriberfullname: admin
orclVersion: 90400

# Adding EUSDBGroup entry
dn: cn=EUSDBGROUP,dc=arkzoyd,dc=com
cn: EUSDBGROUP
memberurl:ldap:///dc=arkzoyd,dc=com??sub?(&(objectclass=orclService)(objectclass=orclDBServer))
objectclass:groupofuniquenames
objectclass:groupofurls
objectclass:top


# $ORACLE_HOME/bin/ldapmodify -h red -p 6501 -D "cn=orcladmin" -q -v -a -f realmRoot.gg.ldif
modify complete

Créer l’adaptateur LDAP pour eDirectory

Paramétrez l’adaptateur eDirectory dans ODSM comme ci-dessous :

Si vous voulez pouvoir vous connecter, vous pouvez, soit désactiver TLS (ce qui n’est pas sécurisé) :

Soit enregistrer le certificat du serveur dans le keystore OVD :

Vous pouvez terminer la configuration de l’adaptateur LDAP :

Configurer Namespace et Mapping de l’adaptateur

Pour configurer le mapping, vous devez au préalable déployer le modèle de correspondance EUS_EDir :

Vous pourrez ensuite, comme décrit dans la documentation ajoutez une règle de mapping entre les attributs eDirectory et OVD :

Configurer les ACL

Définissez les ACL de OVD et eDirectory comme décrit dans la documentation :

Configurer les attributs de EUS

Pour terminer avec la configuration EUS dans OVD, définissez les paramètres de configuration des EUS dans OVD :

cat modifyRealm.ldif 
dn: cn=Common,cn=Products,cn=OracleContext
changetype: modify
replace: orclSubscriberSearchBase
orclSubscriberSearchBase: dc=arkzoyd,dc=com
dn: cn=Common,cn=Products,cn=OracleContext
changetype: modify
replace: orclSubscriberNickNameAttribute
orclSubscriberNickNameAttribute: dc

dn: cn=Common,cn=Products,cn=OracleContext
changetype: modify
replace: orclDefaultSubscriber
orclDefaultSubscriber: dc=arkzoyd,dc=com


$ORACLE_HOME/bin/ldapmodify -h red -p 6501 -D "cn=orcladmin" -q -v -a -f modifyRealm.ldif
modify complete

La configuration est prête ; il vous reste à configurer Enterprise User Security sur vos bases de données et faire le lien avec OVD ; il faudra les configurer, les enregistrant et paramétrer la correspondance entre les utilisateurs et les roles et les utilisateurs et groupes stockés dans eDirectory…

2 réflexions sur “Enterprise User Security et Oracle Virtual Directory”

  1. Il y a également, en 11.1.1.4, des erreurs correspondant au 3- dans loadOVD.ldif;

    Il y a 2 erreurs (un caractère après « add: objectclass ») dans les 2 sections suivantes :
    dn: cn=OracleContext
    changetype: modify
    add: objectclass
    objectclass: orclContextAux82

    et
    dn: cn=OracleContext
    changetype: modify
    add: objectclass
    objectclass: orclRootContext

    D’autre part, il est obligatoire d’avoir au moins 2 niveaux dans OVD pour créer des attributs virtuels stockés dans OVD (dans le local store) et pas dans (cf RealmRoot.ldif). On peut par exemple faire correspondre une organisation avec un domaine multi-niveaux.

  2. J’ai refait la configuration en 11.1.1.4 et, outre les mêmes erreurs dans eDirSchema.ldif (ils n’auraient pas pu les corriger?), désormais il y a également des erreurs dans eDirRealm.ldif:

    1- Si vous utilisez un administrateur qui n’est pas cn=admin,, il faut modifier tout le fichiers en recherchant ces utilisateurs

    2- Il faut modifier les « add: uniquemember » en modifiant la propriété member par uniquemember; il y en a 18

    3- Il faut modifier les lignes
    changetype: modify
    add: objectclass
    objectclass: orclDBSecConfig10i
    orclDBOIDAuthentication: PASSWORD

    par:
    changetype: modify
    add: objectclass
    objectclass: orclDBSecConfig10i

    replace: orclDBOIDAuthentication
    orclDBOIDAuthentication: PASSWORD

    Bref, c’est fun

Les commentaires sont fermés.