Административные ограничения LDAP

Эллес предоставляет возможность задания ограничений на запросы к серверу LDAP для тонкой настройки взаимодействия с клиентами с учетом требований к производительности, надежности и безопасности.

Реализация ограничений

В Эллес ограничения на запросы к серверу LDAP реализуются в виде политик, представляющих собой объекты класса queryPolicy.

Данные объекты размещаются в контейнере CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name.

Каждая политика состоит из набора пар ограничение-значение, хранящегося в атрибуте lDAPAdminLimits объекта queryPolicy.

По умолчанию при развертывании службы каталогов создается и применяется политика Default Query Policy.

Для изменения значений с целью оптимизации работы отдельных контроллеров домена или группы контроллеров домена в пределах сайта рекомендуется:

  1. Создать новую политику (объект queryPolicy) в контейнере Query-Policies в корневом домене леса.

  2. Добавить политику в атрибут queryPolicyObject объекта NTDS Settings сайта (объект ntDSSiteSettings) и контроллера домена (объект nTDSDSA).

  3. Изменить значения ограничений на уровне сайта и контроллера домена.

Контроллер домена обрабатывает и применяет ограничения в следующей последовательности:

  1. Если в дочернем объекте NTDS Settings объекта nTDSDSA присутствует атрибут queryPolicyObject, применяются заданные в нем ограничения. Обработка прекращается.

  2. Если для контроллера домена не задана отдельная политика, проверяется дочерний объект NTDS Settings объекта ntDSSiteSettings того сайта, в котором находится контроллер домена. Если он содержит атрибут queryPolicyObject, применяются заданные в нем ограничения. Обработка прекращается.

  3. Если на уровне сайта также отсутствует отдельный объект queryPolicy, применяются ограничения, заданные в Default Query Policy.

Поддерживаемые ограничения

Эллес поддерживает обработку следующих ограничений для операций LDAP:

  • InitRecvTimeout — максимальное время (в секундах), в течение которого контроллер домена ожидает от клиента первый запрос к серверу LDAP после создания нового входящего подключения (значение по умолчанию — 120);

    Если при первом подключении клиент не присылает запрос в течение заданного промежутка времени, сервер LDAP разрывает соединение.

  • MaxConnIdleTime — максимальное время бездействия клиента (в секундах), по истечении которого сервер LDAP разрывает соединение с ним (значение по умолчанию — 900);

    Если клиент не использует установленное ранее подключение дольше заданного промежутка времени, сервер LDAP возвращает нотификацию о разрыве соединения.

  • MaxPageSize — максимальное количество объектов, возвращаемых в ответ на один поисковый запрос к серверу LDAP (значение по умолчанию — 1000);

    Если в результате поиска нашлось больше объектов, чем задано ограничением, возвращается только количество, удовлетворяющее ограничению, с кодом результата LDAP 4 и сообщением "Size Limit Exceeded". В этом случае для получения полного набора объектов клиент должен использовать запросы с постраничным выводом результата (paged search).

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

  • MaxValRange — максимальное количество значений одного атрибута одного объекта, возвращаемое в ответ на запрос к серверу LDAP, независимо от того, сколько атрибутов объекта и сколько объектов найдено при обработке запроса (значение по умолчанию — 1500);

    В текущей реализации фактическое значение MaxValRange не может быть меньше 300. Таким образом, при задании меньшего значения оно будет отображаться в выводе подкоманд ldap policy, но при обработке запросов будет использоваться значение 300.
  • MaxNotificationPerConn — максимальный размер очереди запросов клиента в рамках одного подключения (значение по умолчанию — 5);

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

  • MaxQueryDuration — максимальное время (в секундах) обработки контроллером домена одного поискового запроса (значение по умолчанию — 120).

    Время считается с момента поступления запроса.

    При достижении заданного предельного значения контроллер домена код результата LDAP 3 с сообщением "Time Limit Exceeded".

Операции

Для работы с ограничениями и политиками LDAP с помощью утилиты samba-tool используется группа подкоманд ldap policy.

См. подробное описание доступных подкоманд samba-tool ldap policy в разделе «Администрирование ограничений LDAP».

Просмотр списка политик LDAP

Для просмотра списка объектов queryPolicy в контейнере CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name в корневом домене леса используйте команду:

samba-tool ldap policy object list

Например:

  • просмотр списка объектов queryPolicy:

    samba-tool ldap policy object list
  • просмотр списка объектов queryPolicy c указанием сайтов и контроллеров доменов, которым они назначены:

    samba-tool ldap policy object list --with-links

Просмотр значений ограничений LDAP

Для просмотра значений ограничений LDAP, установленных политикой по умолчанию (Default Query Policy) или политикой на уровне сайта либо контроллера домена в сайте, используйте команду:

samba-tool ldap policy show <all | ldap-limit-name>

Например:

  • просмотр значений всех ограничений, установленных политикой по умолчанию:

    samba-tool ldap policy show all --default
  • просмотр значений всех ограничений, установленных политикой на уровне контроллера домена в сайте:

    samba-tool ldap policy show all --dc-name=DC1 --site-name=Site1
  • просмотр значения определенного ограничения, установленных политикой по умолчанию:

    samba-tool ldap policy show MaxValRange --default
  • просмотр значения определенного ограничения, установленных политикой на уровне сайта:

    samba-tool ldap policy show MaxPageSize --site-name=Site1

Создание/удаление политики LDAP

Для создания нового объекта queryPolicy в контейнере CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name используйте команду:

samba tool ldap policy object create <policy-name>

Например:

samba tool ldap policy object create "Custom Policy"

При необходимости установки собственных значений ограничений LDAP для каждого контроллера домена и/или сайта в отдельности следует создавать объекты политики queryPolicy для каждого такого сайта/контроллера.

Например:

Контроллеры DC1, DC2 и DC3 включены в сайт Site1. Если необходимо задать общие ограничения LDAP для всего сайта Site1, кроме контроллера DC2, то потребуется создать два объекта политики, условно — "site1_policy" и "dc2_policy". После создания указанных объектов политик они должны быть сначала назначены сайту и контроллеру, а затем — сконфигурированы.

Для удаления объекта queryPolicy из контейнера CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name используйте команду:

samba tool ldap policy object delete <policy-name>

Например:

samba tool ldap policy object delete "Custom Policy"

Назначение / отмена назначения политики LDAP сайту и контроллеру домена в сайте

Для добавления объекта queryPolicy в атрибут queryPolicyObject объекта NTDS Settings сайта (объект ntDSSiteSettings) и контроллера домена в сайте (объект nTDSDSA) используйте команду:

samba-tool ldap policy object link <policy-name> <site-name> [<dc-name>]

Например:

  • назначение политики сайту:

    samba-tool ldap policy object link "Custom Policy" Site1
  • назначение политики контроллеру домена в сайте:

    samba-tool ldap policy object link "Custom Policy" Site1 DC1

Для удаления объекта queryPolicy из атрибута queryPolicyObject объекта NTDS Settings сайта (объект ntDSSiteSettings) и контроллера домена в сайте (объект nTDSDSA) используйте команду:

samba-tool ldap policy object unlink <policy-name> <site-name> [<dc-name>]

Например:

  • отмена назначения политики сайту:

    samba-tool ldap policy object unlink "Custom Policy" Site1
  • отмена назначения политики контроллеру домена в сайте:

    samba-tool ldap policy object unlink "Custom Policy" Site1 DC1

Изменение значений ограничений LDAP

Для изменения значения ограничения LDAP, установленного политикой по умолчанию (Default Query Policy) или политикой на уровне сайта либо контроллера домена в сайте, используйте команду:

samba-tool ldap policy set <ldap-limit-name> <value>

Например:

  • изменение значения ограничения MaxValRange в политике по умолчанию:

    samba-tool ldap policy set MaxValRange 1000 --default
  • изменение значения ограничения MaxValRange в политике на уровне контроллера домена в сайте:

    samba-tool ldap policy set MaxValRange 1000 --dc-name=DC1 --site-name=Site1
  • изменение значения ограничения MaxValRange в политике на уровне сайта:

    samba-tool ldap policy set MaxValRange 1000 --site-name=Site1
Для изменения значений ограничений LDAP, установленных в рамках объекта политики, необходимо сначала назначить данный объект сайту или контроллеру. Изменение ограничений в рамках объектов политики, которые не назначены сайту или контроллеру домена, в текущей версии Эллес не поддерживается.

Пример конфигурирования

В качестве примера рассмотрим домен со следующей структурой распределения контроллеров по сайтам:

  • сайт Default-First-Site-Name:

    • контроллер DC1;

  • сайт Site1:

    • контроллер DC2;

    • контроллер DC3.

Необходимо выполнить следующие действия по конфигурированию:

  • задать значение атрибута MaxValRange=1000 для контроллеров домена в сайте Site1;

  • задать собственное значение атрибута MaxValRange=500 для контроллера домена DC2 в сайте Site1.

В результате ожидается получить следующие значения атрибута MaxValRange в домене:

  • контроллер DC1 и все новые контроллеры в сайте Default-First-Site-Name: MaxValRange=1500 (значение из объекта политики по умолчанию Default Query Policy);

  • контроллер DC3 и все новые контроллеры в сайте Site1: MaxValRange=1000;

  • контроллер DC2: MaxValRange=500.

Выполняется следующая последовательность шагов по конфигурированию:

  1. Создается объект политики для сайта Site1:

    samba tool ldap policy object create site1_policy
  2. Созданный объект политики назначается сайту Site1:

    samba-tool ldap policy object link site1_policy Site1
  3. Создается объект политики для сайта контроллера DC2:

    samba tool ldap policy object create dc2_policy
  4. Созданный объект политики назначается контроллеру DC2:

    samba-tool ldap policy object link dc2_policy Site1 DC2
  5. Для объекта политики, применяемой к сайту Site1, задается значение ограничения MaxValRange=1000:

    samba-tool ldap policy set MaxValRange 1000 --site-name=Site1
  6. Для объекта политики, применяемой к контроллеру DC2, задается значение ограничения MaxValRange=500:

    samba-tool ldap policy set MaxValRange 500 --site-name=Site1 --dc-name=DC2

Проверка результатов конфигурирования:

  1. Просмотр значения ограничения MaxValRange для сайта Site1:

    samba-tool ldap policy show MaxValRange --site-name=Site1
    Policy DN: CN=site1_policy,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name
    Policy value:
    MaxValRange=1000
  2. Просмотр значения ограничения MaxValRange для контроллера DC3:

    samba-tool ldap policy show MaxValRange --site-name=Site1 --dc-name=DC3
    Policy DN: CN=site1_policy,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name
    Policy value:
    MaxValRange=1000
  3. Просмотр значения ограничения MaxValRange для контроллера DC2:

    samba-tool ldap policy show MaxValRange --site-name=Site1 --dc-name=DC2
    Policy DN: CN=dc2_policy,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name
    Policy value:
    MaxValRange=500

В приведенных примерах вывода подкоманды ldap policy show Policy DN — имя объекта политики, установленное для указанного контроллера/сайта. В данном случае для сайта Site1 и контроллера DC3 назначен один и тот же объект политики queryPolicy.

Таким образом, для изменения значений ограничений данного объекта с помощью подкоманды ldap policy set может указываться также и контроллер. При этом изменения будут внесены в тот же самый объект, что и при указании только сайта.

Например:

samba-tool ldap policy set MaxValRange 2000 --site-name=Site1 --dc-name=DC3

Результат:

  • на уровне контроллера DC3:

    samba-tool ldap policy show MaxValRange --site-name=Site1 --dc-name=DC3
    Policy DN: CN=site1_policy,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name
    Policy value:
    MaxValRange=2000
  • на уровне всего сайта Site1:

    samba-tool ldap policy show MaxValRange --site-name=Site1
    Policy DN: CN=site1_policy,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=name
    Policy value:
    MaxValRange=2000