4.3 ACL

4.3.1 Amélioration des recherches et des lectures de eDirectory

Les résultats d'une recherche LDAP dans eDirectory dépendent du nombre d'attributs renvoyés pour un utilisateur (inetOrgPerson).

Lorsqu'un objet est créé dans eDirectory, les listes ACL par défaut peuvent être ajoutées à l'objet. Cela dépend des modèles d'ACL dans la définition de schéma de la classe d'objet à laquelle appartient cet objet. Par exemple, dans la configuration par défaut d'inetOrgPerson, jusqu'à six ACL peuvent être ajoutées sur l'objet Utilisateur. Lorsqu'une requête de recherche LDAP renvoie cet objet Utilisateur avec tous les attributs, elle met légèrement plus de temps à retourner cet objet au client qu'à retourner cet objet Utilisateur sans attributs ACL.

Les ACL par défaut peuvent être désactivées, mais les administrateurs peuvent ne pas souhaiter les désactiver, car elles sont nécessaires à l'amélioration du contrôle d'accès. Vous pouvez néanmoins améliorer les performances de recherche en n'en faisant pas la requête ou en les marquant comme étant des attributs filtrés et lus. Ces modifications n'altèrent pas les applications, car la plupart d'entre elles utilisent des privilèges efficaces et ne comptent pas sur des listes ACL spécifiques.

Non-requête d'ACL : Un attribut ACL n'est pas requis par plusieurs applications, si bien que les applications peuvent être modifiées pour requérir des attributs spécifiques qui concernent l'application. Cela se traduit par de meilleures performances de la recherche LDAP.

Marquage d'un attribut ACL comme étant lu et filtré : Si une application ne peut pas être modifiée, l'administrateur peut utiliser la commande arf_acl.ldif pour marquer l'attribut ACL comme étant lu et filtré. Lorsque la liste ACL est marquée comme étant un attribut lu et filtré, le serveur ne renvoie pas l'attribut sur l'entrée si tous les attributs font l'objet d'une requête. Toutefois, si la recherche LDAP renvoie des attributs opérationnels ou si la requête porte spécifiquement sur des attributs ACL, l'attribut marqué est retourné. Le fichier rrf_acl.ldif peut servir à désactiver le drapeau de lecture et filtrage sur un attribut ACL. Ces LDIF ont une incidence sur l'attribut ACL sur le schéma ; par conséquent, seul un utilisateur avec des droits de superviseur sur la racine de l'arborescence peut les étendre.

Par défaut, les listes ACL ne sont pas marquées comme étant lues et filtrées, si bien qu'aucune amélioration des performances n'est constatée pour les requêtes qui renvoient tous les attributs.

Le tableau suivant représente l'emplacement des fichiers arf_acl.ldif et rrf_acl.ldif dans différentes plates-formes.

Plate-forme

Emplacement

Linux

  • /opt/novell/eDirectory/lib/nds-schema/

Windows

  • <emplacement_dézippé>\nt\I386\NDSonNT\ndsnt\nds

4.3.2 Désactivation des modèles ACL

Vous pouvez désactiver les modèles ACL (Access Control List - liste de contrôle d'accès) pour accroître les performances de chargement par lots. Certaines ACL risquent alors d'être manquantes, mais vous pouvez résoudre ce problème en ajoutant les ACL nécessaires au fichier LDIF ou en les appliquant ultérieurement.

  1. Exécutez la commande suivante :

    ldapsearch -D cn_of_admin -w password -b cn=schema -s base objectclasses=inetorgperson 
    

    Cette commande donne le résultat suivant :

    dn: cn=schema
    
    objectClasses: (2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP
    organizationalPerson STRUCTURAL MAY (groupMembership $ ndsHomeDirectory
    $ loginAllowedTimeMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRemaining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTime $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestriction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $ passwordMinimumLength $ passwordRequired $
    passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $ 
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimumAccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate
    $ nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUSAttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory
    $ rADIUSDefaultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $ rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense $ departmentNumber $ employeeNumber $ employeeType $
    givenName $ homePhone $ homePostalAddress  $ initials $ jpegPhoto $
    labeledUri $ mail $ manager $ mobile $ pager $ ldapPhoto $
    preferredLanguage $ roomNumber $ secretary $ uid $ userSMIMECertificate
    $ x500UniqueIdentifier $ displayName $ userPKCS12) X-NDS_NAME 'User' X
    -NDS_NOT_CONTAINER '1' X-NDS_NONREMOVABLE '1' X-NDS_ACL_TEMPLATES ('2#subtree#[Self]#[All Attributes Rights]' '6#entry#[Self]#loginScript' '1#subtree#[Root Template]#[Entry Rights]' '2#entry#[Public]#messageServer' '2#entry#[Root Template]#groupMembership' '6#entry#[Self]#printJobConfiguration' '2#entry#[Root  Template]#networkAddress'))
    
  2. Dans le résultat obtenu à l'étape précédente, supprimez les informations figurant en gras.

  3. Enregistrez le résultat révisé sous la forme d'un fichier LDIF.

  4. Ajoutez les informations suivantes dans le nouveau fichier LDIF :

    dn: cn=schema
    
    changetype: modify
    
    delete: objectclasses
    
    objectclasses: (2.16.840.1.113730.3.2.2)
    
    -
    
    add:objectclasses
    

    Votre fichier LDIF devrait à présent ressembler à ceci :

    dn: cn=schema
    
    changetype: modify
    
    delete: objectclasses
    
    objectclasses: (2.16.840.1.113730.3.2.2)
    
    -
    
    add:objectclasses
    
    objectClasses: (2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP
    organizationalPerson STRUCTURAL MAY (groupMembership $ ndsHomeDirectory
    $ loginAllowedTimeMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRemaining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTime $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestriction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $ passwordMinimumLength $ passwordRequired
    $ passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $ 
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimumAccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate $
    nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUSAttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory $
    rADIUSDefaultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $ rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense $ departmentNumber $ employeeNumber $ employeeType $ givenName $ homePhone $ homePostalAddress  $ initials $ jpegPhoto $ labeledUri $ mail
    $ manager $ mobile $ pager $ ldapPhoto $ preferredLanguage $ roomNumber
    $ secretary $ uid $ userSMIMECertificate $ x500UniqueIdentifier $
    displayName $ userPKCS12) X-NDS_NAME 'User' X-ND S_NOT_CONTAINER '1' X
    -NDS_NONREMOVABLE '1')
    
  5. Saisissez la commande suivante :

    ldapmodify -D cn_of_admin -w password -f LDIF_file_name