4.3 ACL

4.3.1 Mejora de las búsquedas y lecturas de eDirectory

Los resultados de una búsqueda LDAP en eDirectory dependen del número de atributos devueltos para un usuario (inetOrgPerson).

Cuando se crea un objeto en eDirectory, podrían añadirse listas ACL al objeto por defecto. Esto depende de las plantillas ACL de la definición de esquema correspondiente a la clase de objeto a la que pertenezca dicho objeto. Por ejemplo, en la configuración por defecto para inetOrgPerson, puede haber hasta seis ACL añadidas al objeto de usuario. Cuando se realiza una solicitud de búsqueda LDAP para devolver este objeto de usuario con todos los atributos, se tarda un poco más en devolver este objeto al cliente que en devolver el objeto de usuario sin atributos ACL.

Aunque las ACL por defecto se pueden desactivar, es posible que los administradores no quieran desactivarlas porque son necesarias para un mejor control de acceso. Sin embargo, puede mejorar el rendimiento de la búsqueda si no las solicita o las marca como atributos filtrados para lectura. Estos cambios no interrumpen ninguna aplicación, ya que la mayoría de las aplicaciones utilizan privilegios eficaces y no dependen de ACL específicas.

No solicitar listas ACL: varias aplicaciones no necesitan un atributo ACL, por lo que las aplicaciones pueden modificarse para que soliciten atributos específicos en los que la aplicación esté interesada. Esto da como resultado un mejor rendimiento de la búsqueda LDAP.

Marcar una ACL como filtrada para lectura: Si una aplicación no se puede modificar, un administrador puede utilizar el atributo arf_acl.ldif para marcar el atributo ACL como filtrado para lectura. Cuando la ACL se marca como atributo filtrado para lectura, el servidor no devuelve el atributo en la entrada si se solicitan todos los atributos. Sin embargo, si la búsqueda LDAP se realiza para devolver atributos operativos o si la solicitud solicita específicamente atributos ACL, se devuelve el atributo marcado. rrf_acl.ldif puede utilizarse para desactivar el indicador filtrado para lectura en un atributo ACL. Estos archivos LDIF afectan al atributo ACL del esquema, por lo que solo puede extenderlos un usuario que tenga derechos de supervisor en la raíz del árbol.

Por defecto, las ACL no están marcadas como filtradas para lectura, por lo que no se aprecia la mejora de rendimiento en las solicitudes de devolución de todos los atributos.

En la tabla siguiente se muestra la ubicación de los archivos arf_acl.ldif y rrf_acl.ldif en diferentes plataformas.

Plataforma

Ubicación

Linux

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

Windows

  • <ubicación_sin_comprimir>\nt\I386\NDSonNT\ndsnt\nds

4.3.2 Inhabilitación de plantillas ACL

Puede inhabilitar las plantillas de lista de control de acceso (ACL) para aumentar el rendimiento de carga masiva. Esto implica que faltarán algunas de las ACL. Sin embargo, puede añadir las ACL necesarias al archivo LDIF o aplicarlas más tarde para solucionar este problema.

  1. Ejecute el comando siguiente:

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

    La salida de este comando sería la siguiente:

    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. En la salida indicada en el paso anterior, elimine la información marcada en negrita.

  3. Guarde los resultados revisados como un archivo LDIF.

  4. Añada la siguiente información en el archivo LDIF recién guardado:

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

    Ahora su LDIF debe ser similar al siguiente:

    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. Introduzca el siguiente comando:

    ldapmodify -D cn_of_admin -w password -f LDIF_file_name