Oracle Unified Directory 11g Release 2 et Enterprise User Security

Oracle Unified Directory 11g Release 2, aka 11.1.2 est disponible sur eDelivery depuis quelques jours avec toute la Suite Identity Management 11gR2. Parmi les nouveautés, le support de Enterprise User Security en mode Login/Password.

Oracle Unified Directory est toujours aussi simple à mettre en œuvre. L’installation, qui n’a quasiment pas changée, prend toujours 30′. Pour activer le support d’Enterprise User Security, vous devrez simplement créer un listener LDAPS et cocher la case « Enable » for EUS comme dans la copie d’écran ci-contre. L’ensemble du schéma Oracle est alors disponible et l’arborescence initiale créée. Vous êtes prêt à déléguer utilisateurs, mots de passe et rôles à ce nouvel annuaire.

Cet article prend 20 minutes à lire et mettre en oeuvre. Il illustre comment configurer les référentiels des utilisateurs pour EUS et comment faire le lien entre vos utilisateurs et vos bases de données…

Configuration du référentiel, des utilisateurs et des groupes

L’organisation de votre annuaire peut varier beaucoup en fonction de vos choix d’implémentation. Dans l’article précédent, nous avons pris le parti :

  • d’utiliser un DN de base qui est dc=arkzoyd,dc=com
  • de stocker les utilisateurs dans une organizationalUnit nommée ou=People,dc=arkzoyd,dc=com

Par ailleurs, on pourra stocker les groupes dans une organizationalUnit nommée ou=Groups,dc=arkzoyd,dc=com. Votre organisation sera peut-être très différente. Les produits Oracle, comme les logiciels de base de données 10.2 ou 11g, retrouvent leur paramétrage à partir de la racine de l’annuaire dans un arbre qui commence par cn=OracleContext. Le fichiers $MW_HOME/Oracle_OUD1/config/EUS/modifyRealm.ldif permet de changer ce paramétrage. Editez-le ! Modifiez toutes les entrées selon le principe ci-dessous :

  • Remplacez ou=people,dc=example,dc=com par l’organizationalUnit qui contient vos utilisateurs, dans mon cas ou=People,dc=arkzoyd,dc=com
  • Remplacez ou=groups,dc=example,dc=com par l’organizationalUnit qui contient vos groupes, dans mon cas ou=Groups,dc=arkzoyd,dc=com
  • Remplacez dc=example,dc=com par le DN de la racine de votre référentiel, dans mon cas "dc=arkzoyd,dc=com"

Exécutez simplement le fichier résultant à votre annuaire. Vous pouvez utiliser Apache Directory Studio par exemple. La configuration est terminée.

Configuration d’un administrateur OUD

L’assistant de configuration des bases de données, dbca ne semble pas apprécier d’utiliser un nom d’administrateur avec un espace dans son DN ! Pour contourner ce problème et séparer l’administrateur de l’annuaire de l’utilisateur qui enregistre les bases de données et vérifie les mots de passe, nous allons donner, dans un premier temps les droits d’administration à notre utilisateur. Pour cela, nous allons lui ajouter les attributs ds-privilege-name qui correspondent à ces privilèges. Voici un fichier LDIF qui passe notre utilisateur Administrateur de l’annuaire OUD:

dn: cn=Gregory,ou=People,dc=arkzoyd,dc=com
changetype: modify
add: ds-privilege-name
ds-privilege-name: bypass-acl
ds-privilege-name: modify-acl
ds-privilege-name: config-read
ds-privilege-name: config-write
ds-privilege-name: ldif-import
ds-privilege-name: ldif-export
ds-privilege-name: backend-backup
ds-privilege-name: backend-restore
ds-privilege-name: server-shutdown
ds-privilege-name: server-restart
ds-privilege-name: disconnect-client
ds-privilege-name: cancel-request
ds-privilege-name: password-reset
ds-privilege-name: update-schema
ds-privilege-name: privilege-change
ds-privilege-name: unindexed-search

Note:
Pour plus d’informations, reportez-vous à la section « 22.5 Managing Administrators » de Administrator’s Guide for Oracle Unified Directory 11g Release 2 (11.1.2).

Configuration de l’accès à l’annuaire

Pour configurer l’accès de la base de données à l’annuaire, créez un fichier ldap.ora dans le répertoire $ORACLE_HOME/ldap/admin ou, si vous préférez (ou êtes en 10.2) dans $ORACLE_HOME/network/admin. Ce fichier doit inclure les références à l’annuaire qui est noté de type Internet Directory (OID). Voici un exemple qui se connecte à l’annuaire qui s’exécute sur le serveur blue :

cat $ORACLE_HOME/ldap/admin/ldap.ora
DIRECTORY_SERVERS= (blue:1389:1636)
DEFAULT_ADMIN_CONTEXT = "dc=arkzoyd,dc=com"
DIRECTORY_SERVER_TYPE = OID

Enregistrement d’une base de données 

Vous devrez ensuite enregistrez chaque base de données dans l’annuaire, créer un wallet s’il n’existe pas et changer les paramètres de l’instance. L’assistant de création de la base de données vous permet de réaliser l’ensemble de ces opérations à l’aide d’une simple ligne de commande. Voici un exemple avec la base de données WHITE :

dbca -silent -configureDatabase -sourceDB WHITE 
  -registerWithDirService true
  -dirServiceUserName "cn=Gregory,ou=People,dc=arkzoyd,dc=com"
  -dirServicePassword "manager" -walletPassword "welcome1"
Preparing to Configure Database
6% complete
13% complete
66% complete
Completing Database Configuration
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/isma/isma.log" for further details.

Création du schéma dans la base de données

Créez ensuite le schéma qui sera utilisé pour se connecter à la base de données cible. Dans cet exemple, nous créerons simplement un schéma à l’aide de SQL*Plus:

create user global_ident_schema_user identified globally;
grant connect to global_ident_schema_user;

Autoriser l’accès de l’utilisateur depuis l’annuaire

La dernière étape de la configuration consiste à autoriser, dans OUD, l’utilisateur à se connecter au schéma technique associé à la base de données. Vous pouvez utiliser Enterprise Security Manager depuis Enterprise Manager 11g ou 12c ou même une console ; connectez-vous à OUD :

Définissez ensuite le mapping vers la base de données et le schéma qui vous intéresse à l’aide des écrans de gestion des utilisateurs d’enterprise comme ci-dessous :

Si vous préférez, vous pouvez aussi simplement et directement modifier le contenu de l’annuaire. Pour définir ce mapping, il suffit de créer une entrée cn=mappingXX dans votre base de données avec un fichier LDIF comme ci-dessous :

dn: cn=mapping0,cn=WHITE,cn=OracleContext,dc=arkzoyd,dc=com
objectClass: top
objectClass: orclDBEntryLevelMapping
cn: mapping0
orclDBDistinguishedName: cn=Gregory,ou=People,dc=arkzoyd,dc=com
orclDBNativeUser: GLOBAL_IDENT_SCHEMA_USER

Vous pouvez donc utiliser Apache Directory Studio ou l’outil de votre choix, aussi simplement que Enterprise Manager pour configurer les accès aux bases de données depuis votre annuaire. 

Tester les accès

Voilà, vérifiez que l’authentification via Unified Directory fonctionne à l’aide d’une connexion SQL*Plus, par exemple :

sqlplus Gregory/manager

SELECT sys_context('USERENV', 'ENTERPRISE_IDENTITY') "USER"
FROM dual;

USER
--------------------------------------------------------------------------------
cn=Gregory,ou=People,dc=arkzoyd,dc=com

C’est fini en 20′ chrono. Mais pour être franc, c’est maintenant que les choses sérieuses commencent vraiment. Comment organiser la gestion des droits et leur affectation ?