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

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

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

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

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

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

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

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

  1. Создать новую политику с требуемыми значениями ограничений в контейнере Query-Policies в корневом домене леса.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Подмножество задается в следующем формате:

    range=<low range>-<high range>

    В подмножестве:

    • <low range> — индекс первого запрашиваемого атрибута, начиная с нуля;

    • <high range> — отсчитываемый от нуля индекс последнего запрашиваемого значения атрибута; для указания всех оставшихся значений может использоваться специальный символ *.

    Примеры задания подмножества значений атрибута:

    Пример Возвращаемые значения

    range=0-*

    Сервер возвращает все значения атрибута в рамках заданного ограничения MaxValRange

    range=0-500

    Сервер возвращает значения атрибута с 1 по 501 включительно

    range=2-3

    Сервер возвращает третье и четвертое значения атрибута

    range=501-*

    Сервер возвращает 502-е значение и все последующие значения атрибута в рамках заданного ограничения MaxValRange

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

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

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

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

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

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

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

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

Например:

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

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

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

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

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

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

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

samba-tool ldap policy set <ldap-limit-name> <value> [options]

Например:

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

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

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

    samba-tool ldap policy set MaxValRange 1000 --site-name=Site1