4.3 ACL

4.3.1 Miglioramento delle letture e delle ricerche di eDirectory

Una ricerca LDAP in eDirectory restituisce risultati in base al numero di attributi restituiti per un utente (inetOrgPerson).

Quando viene creato un oggetto in eDirectory, gli ACL di default possono essere aggiunti all'oggetto. Ciò dipende dai modelli ACL nella definizione dello schema per l'objectClass a cui tale oggetto appartiene. Ad esempio, nella configurazione di default di inetOrgPerson, possono essere presenti fino a sei ACL aggiunti all'oggetto Utente. Quando viene effettuata una richiesta di ricerca LDAP per restituire l'oggetto Utente con tutti gli attributi, questa impiega un tempo leggermente più lungo per restituire l'oggetto al client piuttosto che restituire l'oggetto Utente privo di attributi ACL.

Benché sia possibile disattivare gli ACL di default, gli amministratori potrebbero decidere di non disattivarli poiché sono necessari per un migliore controllo degli accessi. Tuttavia, è possibile migliorare le prestazioni di ricerca evitandone la richiesta oppure contrassegnandoli come attributi filtrati per la lettura. Tali modifiche non interrompono le applicazioni in quanto la maggior parte di esse utilizza privilegi efficaci e non si basa su ACL specifici.

ACL non richiesti: Un attributo ACL non è richiesto da diverse applicazioni. In questo modo, le applicazioni possono essere modificate affinché richiedano attributi specifici per l'applicazione. Ciò consente di migliorare le prestazioni della ricerca LDAP.

Contrassegno di un ACL come filtrato per la lettura: Se un'applicazione non può essere modificata, un amministratore può utilizzare arf_acl.ldif per contrassegnare l'attributo ACL come un attributo filtrato per la lettura. Quando l'ACL viene contrassegnato come un attributo filtrato per la lettura, se sono stati richiesti tutti gli attributi il server non restituisce l'attributo sulla voce. Tuttavia, se la ricerca LDAP viene eseguita per restituire gli attributi operativi oppure vengono richiesti in modo specifico gli attributi ACL, viene restituito l'attributo contrassegnato. rrf_acl.ldif consente di disattivare il flag filtrato per la lettura di un attributo ACL. Questi LDIF interessano l'attributo ACL sullo schema. In questo modo, solo un utente che disponga dei diritti di supervisore sulla radice della struttura ad albero può estenderli.

Di default, un ACL non è contrassegnato come filtrato per la lettura, quindi il vantaggio relativo alle prestazioni ottenute nella restituzione di tutti gli attributi da parte delle richieste non è visibile.

Nella tabella seguente viene illustrata la posizione dei file arf_acl.ldif e rrf_acl.ldif in piattaforme diverse.

Piattaforma

Ubicazione

Il test su Linux

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

Windows

  • <posizione_decompressa>\nt\I386\NDSonNT\ndsnt\nds

4.3.2 Disattivazione dei modelli ACL

È possibile disattivare i modelli degli elenchi per il controllo degli accessi (ACL, Access Control List) per migliorare le prestazioni dell'inoltro di massa. Ciò implica che alcuni ACL vadano perduti. Tuttavia, è possibile risolvere questo problema aggiungendo gli ACL richiesti al file LDIF o applicarli successivamente.

  1. Eseguire il comando seguente:

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

    L'output di questo comando risulterà analogo al seguente:

    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. Nell'output segnalato nel passaggio precedente, eliminare le informazioni in grassetto.

  3. Salvare l'output revisionato come un file LDIF.

  4. Aggiungere le informazioni seguenti al file LDIF appena salvato:

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

    Di conseguenza, il file LDIF deve essere simile al seguente:

    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. Immettere il seguente comando:

    ldapmodify -D cn_of_admin -w password -f LDIF_file_name