Uma pesquisa LDAP no eDirectory exibe resultados dependendo do número de atributos exibidos para um usuário (inetOrgPerson).
Quando um objeto é criado no eDirectory, os ACLS padrão podem ser adicionados ao objeto. Isto depende dos modelos de ACL na definição do esquema para o objectClass à qual o objeto pertence. Por exemplo, na configuração padrão do inetOrgPerson, podem existir até seis ACLs adicionados ao objeto do usuário. Quando a solicitação de pesquisa de LDAP é feita de maneira a exibir este objeto do usuário com todos os atributos, demora um pouco mais para exibir este objeto ao cliente do que exibir o objeto do usuário sem os atributos ACL.
Embora os ACLs padrão possam ser desativados, os administradores podem não querem fazê-lo, pois eles são necessários para um melhor controle de acesso. Contudo, é possível melhorar o desempenho de pesquisas ao não solicitá-los ou torná-los atributos filtrados como leitura. Essas alterações não impactam qualquer aplicativo, pois a maioria das aplicações usa privilégios efetivos e não conta com ACLs específicos.
Não solicitação de ACLs: Um atributo de ACL não é necessário para muitas aplicações, por isso elas podem ser modificadas para solicitar os atributos específicos nos quais o aplicativo se interessa. Isto resulta em um melhor desempenho nas pesquisas LDAP.
Marcar um ACL como filtrado para leitura: Se um aplicativo não pode ser modificado, o arf_acl.ldif pode ser usado pelo administrador para marcar o atributo ACL como atributo filtrado para leitura. Quando o ACL é marcado como atributo filtrado para leitura, o servidor não o exibe na entrada se todos os atributos forem solicitados. Contudo, se a pesquisa LDAP for realizada para exibir os atributos operacionais ou se a solicitação especificamente demandar atributos ACL, o atributo marcado será exibido. É possível usar rrf_acl.ldif para desabilitar a flag de filtrado para leitura em um atributo ACL. Esses LDIFs (LDAP Directory Interchange Format) afetam o atributo ACL no esquema, de maneira que apenas um usuário com privilégios de Supervisor na raiz da árvore poderá estendê-los.
Por padrão, um ACL não é marcado como filtrado para leitura, por isso não é visto o benefício, no desempenho, de as solicitações exibirem todos os atributos.
A tabela a seguir exibe o local dos arquivos arf_acl.ldif e rrf_acl.ldif em diferentes plataformas.
Plataforma |
Local |
---|---|
Linux |
|
Windows |
|
Você pode desabilitar os modelos de ACL para aumentar o desempenho em massa. A implicação disto é que alguns dos ACLs faltarão. Contudo, você pode resolver isto ao adicionar os ACLs necessários ao arquivo LDIF ou aplicando-os posteriormente.
Execute o seguinte comando:
ldapsearch -D cn_of_admin -w password -b cn=schema -s base objectclasses=inetorgperson
A saída do comando seria:
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’))
Na saída observada na etapa anterior, exclua as informações marcadas em negrito.
Salve a saída revisada como um arquivo LDIF.
Acrescente as seguintes informações ao arquivo LDIF recém-salvo:
dn: cn=schema
changetype: modify
delete: objectclasses
objectclasses: (2.16.840.1.113730.3.2.2)
-
add:objectclasses
Por isso, seu LDIF deverá agora ser semelhante a este:
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’)
Digite o seguinte comando:
ldapmodify -D cn_of_admin -w password -f LDIF_file_name