4.3 Списки ACL

4.3.1 Улучшение операций поиска и чтения в eDirectory

Поиск LDAP в eDirectory возвращает результаты в зависимости от количества атрибутов, возвращенных для пользователя (inetOrgPerson).

Когда объект создается в eDirectory, списки ACL по умолчанию можно добавить в этот объект. Это зависит от шаблонов ACL в определении схемы для objectClass, к которому принадлежит объект. Например, в конфигурации по умолчанию для inetOrgPerson можно добавить до шести списков ACL на пользовательский объект. Запрос поиска LDAP на возврат клиенту этого объекта «Пользователь» со всеми атрибутами займет немного больше времени по сравнению с возвратом объекта «Пользователь» без атрибутов ACL.

Хотя списки ACL по умолчанию можно отключить, администраторы могут не захотеть отключать их, поскольку они нужны для лучшего управления доступом. Однако можно повысить производительность поиска, не запрашивая их, или пометив их атрибутами, отфильтрованными для чтения. Эти изменения не нарушают никаких приложений, поскольку большинство приложений используют эффективные привилегии и не полагаются на те или иные списки управления доступом.

Не запрашивать списки ACL. Атрибут «ACL» не потребуется для нескольких приложений, поэтому приложения можно изменить, чтобы они запрашивали определенные необходимые для них атрибуты. Это приводит к повышению производительности поиска LDAP.

Пометка ACL как фильтрованного только для чтения. Если приложение нельзя изменить, arf_acl.ldif может использоваться администратором для того, чтобы пометить атрибут «ACL» как фильтрованный для чтения. Если ACL отмечен как фильтрованный для чтения атрибут, то при запросе всех атрибутов сервер не возвращает данный атрибут элемента. Однако данный атрибут возвращается, если поиск LDAP выполняется для возврата операционных атрибутов или если в запросе определенно указаны атрибуты ACL. Для отключение флага фильтрации для чтения в атрибуте ACL можно использовать файл rrf_acl.ldif. Эти файлы LDIF влияют на атрибут ACL в схеме, поэтому их может расширить только пользователь с правами супервизора в корне дерева.

По умолчанию ACL не помечается как фильтрованный для чтения, поэтому преимущества запросов на возврат всех атрибутов не проявляются.

В следующей таблице указано положение файлов arf_acl.ldif и rrf_acl.ldif в разных платформах.

Платформа

Местоположение

Linux

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

Windows

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

4.3.2 Отключение шаблонов ACL

Чтобы повысить производительность массовой загрузки, можно отключить шаблоны списка управления доступом (ACL, Access Control List). В результате этого некоторые списки ACL будут отсутствовать. Однако можно разрешить это, добавив требуемые списки в файл LDIF или применив их позже.

  1. Выполните следующую команду:

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

    Эта команда выводит указанные ниже данные:

    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. В выводе, который указан в предыдущем действии, удалите информацию, которая выделена полужирным цветом.

  3. Сохраните отредактированный вывод как файл LDIF.

  4. Добавьте указанные ниже строки в новый сохраненный файл LDIF:

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

    Теперь ваш файл LDIF должен иметь такой вид:

    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. Введите следующую команду:

    ldapmodify -D cn_of_admin -w password -f LDIF_file_name