Лимиты и масштабирование Active Directory

Обновлено 18.03.2020

Active Directory maximumДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. Не так давно мы с вами развернули инфраструктуру Active Directory в виде домена root.pyatilistnik.org и сделали там кучу разных вещей, но сегодняшняя статья не об этом. Вы когда-нибудь задумывались, а какие есть ограничения в Active Directory на максимальное количество объектов, атрибутов, серверов, доверительных отношений, контроллеров домена и так далее. В этой публикации я и хотел бы вас познакомить с пределами масштабируемости AD. Думаю, что большинство из вас в них не упрется, но знать их обязательно нужно.

Элементы масштабируемости Active Directory

Рассматривать я буду лимиты касающиеся Active Directory в Windows Server 2019, но они актуальны и для более младших версий. В этой статье описывается масштабируемость Active Directory и другие ограничения, а также рекомендации, которые применяются при разработке или реализации инфраструктуры Active Directory. Эти ограничения включают в себя следующее:

  • Максимальное количество объектов в активном каталоге
  • Максимальное количество идентификаторов безопасности
  • Максимальное количество записей в списках контроля доступа и безопасности (ACL)
  • Максимальное членство в группах для участников безопасности
  • Ограничения длины FQDN
  • Ограничения имени файла и длины пути
  • Дополнительные ограничения длины имени, например NetBIOS, DNS, OU, sAMAccountName
  • Максимальное количество примененных объектов групповой политики
  • Максимальное количество доверительных отношений
  • Максимальное количество учетных записей на одну транзакцию LDAP
  • Рекомендуемое максимальное количество пользователей в группе
  • Рекомендуемое максимальное количество доменов в лесу
  • Рекомендуемое максимальное количество контроллеров домена в домене
  • Рекомендуемые максимальные настройки Kerberos

Для чего нужно знать пределы масштабируемости активного каталога

Любое развертывание или обновление всегда вытекает из планирования, где вы должны четко представлять, что предложенная вами схему сможет корректно работать, будет легко расширятся и масштабироваться, в противном случае при росте инфраструктуры вы попадете в большой коллапс. Приведу несколько примеров, предположим, что вы разработали систему именования логинов и имен компьютеров, в процессе работы или ввода компьютера в домен вы получили ошибку связанную с ограничением на количество символов в имени.Зная эту информацию, вы бы заранее спланировали все иначе. Второй пример, это размер токена Kerberos, где если вы выходите за рамки начинаются проблему с доступами на сайты IIS, файловые шары и многие другие сервисы. Примеров можно привести много.

Максимальное количество объектов в Active Directory

Я уверен, что вы никогда бы не догадались каким запасом обладает активный каталог по количеству возможных объектов в его составе. Вы только задумайтесь, что каждый контроллер домена в лесу Active Directory может создать чуть менее 2,15 миллиардов объектов за время своего существования, это 2 в 31 степени, если уж совсем быть точным, то это 2 в степени 31 -255 DNT=2 147 483 393 DNT.

Каждый контроллер домена Active Directory имеет уникальный идентификатор, специфичный для отдельного контроллера домена. Эти идентификаторы, которые называются отличительными именными тегами (DNT - Distinguished Name Tag), не реплицируются и не видны другим контроллерам домена. Диапазон значений для DNT составляет от 0 до 2 147 483 393

Что такое DNT - Distinguished Name Tag - Отличительные теги имен (DNT) представляют собой целочисленные столбцы, поддерживаемые модулем расширяемого хранилища (ESE) в базе данных Active Directory (ntds.dit). Контроллеры домена используют DNT при создании объектов локально или посредством репликации. Каждый контроллер домена создает и поддерживает свои собственные уникальные DNT в своей базе данных при создании объектов. DNT не используются повторно. DNT не являются общими и не реплицируются между контроллерами домена. Вместо этого реплицируются вычисленные значения, известные контроллерам домена, такие как SIDS, GUID и DN.

DNT не используется повторно при удалении объекта, это нужно так же знать. Таким образом, контроллеры домена ограничены созданием примерно 2 миллиардов объектов (включая объекты, созданные путем репликации). Это ограничение применяется к совокупности всех объектов из всех разделов (NC домена, конфигурации, схемы и любых разделов каталога приложений), которые размещены на контроллере домена.

Контроллеры домена, установленные с помощью параметра "Установить с носителя IFM", наследуют значения DNT от контроллера домена, который использовался для создания резервной копии IFM.

Структура базы данных Active Directory довольно плоская, "DNT" - это номер строки - каждого объект в базе данных. Следующий столбец, PDNT, является родительским объектом объекта (ParentDNT), поэтому вы можете легко просмотреть файл дампа и посмотреть, как выглядит каталог. Из номеров DNT и PDNT вы узнаете дочерние и родительские объекты.

Вот пример ntds.dmp файла, в котором я могу посмотреть все DNT значения.

Более подробна, как посмотреть DNT значение смотрите по ссылке слева

Как узнать Distinguished Name Tag

Поскольку новые контроллеры домена стартуют с низких начальных значений DNT (обычно от 100 до 2000), можно обойти ограничение на время существования контроллера домена - при условии, конечно, что домен в настоящее время поддерживает менее 2 млрд. объекты. Например, если предел срока службы достигнут, поскольку создано около 2 миллиардов объектов, но 500 миллионов объектов удалены из домена (например, удалены, а затем окончательно удалены из базы данных в процессе сбора мусора), установка нового контроллер домена позволяет ему реплицировать оставшиеся объекты с существующих контроллеров домена - это потенциальный обходной путь.

На уровне базы данных ошибка, которая возникает при достижении предела DNT выглядит вот так:

“Error: Add: Operations Error. <1> Server error: 000020EF: SvcErr: DSID-0208044C, problem 5012 (DIR_ERROR), data -1076.”

Максимальное количество идентификаторов безопасности (Relative ID, RID)

Если мы говорим про Windows Server 2019 и ниже до Windows Server 2012 R2, то максимальное количество идентификаторов безопасности, которое может быть создано в течение срока службы домена, составляет 2 147 483 647 RID.

Как это было в более старых версиях, в операционных системах Windows Server 2008 R2 и более ранних версиях существует ограничение в 1 миллиард идентификаторов безопасности (SID) в течение срока службы домена. Это ограничение обусловлено размером пула глобальных относительных идентификаторов (RID) в 30 битов, который делает каждый SID (назначенный учетным записям пользователей, группам и компьютерам) в домене. Фактический лимит составляет 1 073 741 823 объектов. Поскольку RID не используются повторно, даже если участники безопасности удалены, применяется максимальный предел, даже если в домене менее 1 миллиарда участников безопасности.

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

Максимальное количество записей в списках контроля доступа и безопасности

Ограничение количества записей в списке управления доступом по усмотрению (DACL) или в списке управления доступом к безопасности (SACL) объекта Active Directory с использованием атрибута ntSecurityDescriptor обусловлено ограничением размера списка управления доступом (ACL), который равен 64K. Поскольку записи контроля доступа (ACE) различаются по размеру, фактическое количество записей (SID) составляет приблизительно 1820.

Ограничения членства в группах для участников безопасности

Субъекты безопасности (то есть учетные записи пользователей, групп и компьютеров) могут быть членами максимум 1 015 групп. Это ограничение связано с ограничением размера токена доступа MaxTokenSize, который создается для каждого участника безопасности. Ограничение не зависит от того, как группы могут быть или не быть вложенными.

Максимальная длина FQDN

Полные доменные имена или как их еще называют абсолютным именем домена (FQDN - fully qualified domain name) в Active Directory не могут превышать 64 символа на каждый сегмент, а вот вся длина может быть 255 символов, включая дефисы и точки (.). Это важное ограничение, которое следует учитывать при именовании доменов. Это ограничение связано с длиной MAX_PATH в 260 символов, определяемой прикладными программными интерфейсами (API) Win32, в сочетании со способом хранения объектов групповой политики (GPO) в общем ресурсе SYSVOL.

Напоминаю, что FQDN определяет очное местоположение объекта в дереве иерархии в системе доменных имен (DNS). Полностью определенное доменное имя отличается отсутствием двусмысленности: его можно интерпретировать только одним способом. Обычно он состоит из имени хоста и, по крайней мере, одного домена более высокого уровня, разделенных символом «.» и всегда заканчивается в домене верхнего уровня.

Приведу простой пример FQDN для моего контроллера домена DC01. Если посмотреть редактор атрибутов Active Directory, то у объекта вы можете обнаружить атрибут dNSHostName. В моем примере, это dc01.root.pyatilistnik.org.

Максимальная длина FQDN

Или же вы можете открыть оснастку DNS и в свойствах записи так же найти полное доменное имя (FQDN).

Просмотр FQDN в DNS

Ограничения имени файла и длины пути

Физические файлы, используемые компонентами Active Directory, такие как SYSVOL, базы данных (NTDS.DIT) и пути к файлам журналов, ограничены длиной MAX_PATH в 260 символов, как определено в Win32 API. Когда вы определяете, где разместить файлы SYSVOL и базы данных во время установки Active Directory, избегайте структур вложенных папок, в которых полный путь к папке SYSVOL, базе данных и файлам журнала превышает 260 символов.

\\<domain-name>\sysvol\<domain-name>\Policies\<GUID>\<Machine|User>\<GroupPolicy-Extension-Specific-Path>

Ограничения имени файла и длины пути

Если путь до объекта групповой политики превысит 260 символов, то политика не применится.

Максимальное количество примененных объектов групповой политики

Существует ограничение в 999 объектов групповой политики (GPO), которые можно применить к учетной записи пользователя или учетной записи компьютера. Это не означает, что общее количество параметров политики в системе ограничено 999. Скорее всего, один пользователь или компьютер не сможет обработать более 999 объектов групповой политики. Это ограничение существует по причинам производительности. Если честно я не проверял сможет ли на производительной виртуальной машине применится 1000 и более политик, я смутно себе представляю вообще такое количество политик к одному объекту, но для справки знать максимальное значение применяемых политик GPO нужно. Если у вас были случаи, где фигурировало 1000 и более объектов GPO, то поделитесь опытом в комментариях.

Ограничения доверительных отношений

Когда вы устанавливаете доверительные отношения между доменами в одном лесу, между лесами или с внешней областью, информация об этих доверительных отношениях сохраняется в Active Directory. Каждое доверительное отношение в домене представлено объектом, известным как объект доверенного домена (Trusted domain objects-TDO). TDO хранит информацию о доверии, такую ​​как транзитивность доверия и тип доверия. Всякий раз, когда вы создаете траст, новый TDO создается и сохраняется в системном контейнере в домене траста. Ограничения доверия возникают из-за количества объектов доверенного домена (TDO), длины путей доверия и способности клиентов обнаруживать доступные доверительные отношения. Применяемые ограничения включают следующее:

  • Клиенты Kerberos могут пройти не более 10 доверительных ссылок, чтобы найти запрошенный ресурс в другом домене. Если путь доверия между доменами превышает это ограничение, попытка доступа к домену завершается неудачно.
  • Когда клиент ищет маршрут доверительных отношений, поиск ограничивается доверием, которые устанавливаются непосредственно с доменом, и доверительными отношениями, которые являются транзитивными в лесу.
  • Тестирование показало, что увеличение времени на выполнение связанных с TDO операций, таких как проверка подлинности между доменами, заметно ухудшает производительность, если реализация Active Directory в организации содержит более 2400 TDO.

Максимальное количество учетных записей на одну транзакцию LDAP

При написании сценариев или приложений, выполняющих транзакции LDAP, рекомендуемое ограничение - не более 5000 операций на транзакцию LDAP. Транзакция LDAP - это группа операций каталога (таких как добавление, удаление и изменение), которые рассматриваются как одна единица. Если ваш скрипт или приложение выполняет более 5000 операций за одну транзакцию LDAP, вы рискуете столкнуться с ограничениями ресурсов и тайм-аутом работы. Если это произойдет, все операции (изменения, дополнения и модификации) в транзакции откатываются, что означает, что вы потеряете все эти изменения.

Рекомендуемое максимальное количество пользователей в группе

Немного о прошлом, для сред Windows 2000 Active Directory рекомендуемое максимальное количество членов в группе составляет 5000. Эта рекомендация основана на количестве одновременных атомарных изменений, которые могут быть зафиксированы в одной транзакции базы данных.

Начиная с Windows Server 2003 вплоть до Windows Server 2019, возможность реплицировать отдельные изменения в связанные многозначные свойства была представлена как технология, называемая репликацией связанных значений Linked Value Replication (LVR). Чтобы включить LVR, необходимо повысить функциональный уровень леса по крайней мере до промежуточного уровня Windows Server 2003. Повышение функционального уровня леса меняет способ хранения членства в группе (и других связанных многозначных атрибутов) в базе данных и репликации между контроллерами домена. Это позволяет количеству членств в группах превышать ранее рекомендованный предел в 5000 для Windows 2000 или Windows Server 2003 на функциональном уровне леса Windows 2000. В любом случае я не представляю зачем пользователю состоять в таком количестве групп.

Рекомендуемое максимальное количество доменов в лесу

Если мы говорим про Windows Server 2019 и ниже до Windows Server 2003, то рекомендуемое максимальное количество доменов, для функционального уровня леса установленного в режиме Windows Server 2003 и выше (также известный как функциональный уровень 2 для леса), составляет 1200. Это ограничение является ограничением многозначных несвязанных атрибутов в Windows Server 2003-2019 и ограничением службы репликации (File Replication System, FRS), которая не в состоянии осуществлять репликацию папки SYSVOL между большим количеством объектов. Уверен, что вряд ли есть архитектуры активного каталога с таким количеством доменов.

Рекомендуемое максимальное количество контроллеров домена в домене

Чтобы обеспечить надежное восстановление SYSVOL, мы рекомендуем ограничить 1200 контроллеров домена на домен. Если ожидается, что какой-либо домен Active Directory в вашей сети превысит 800 контроллеров домена, и на этих контроллерах доменов размещены зоны, интегрированные в Active Directory (DNS), то нужно будет вносить некоторые изменения в DNS. В зоне DNS, интегрированной в Active Directory, имена DNS представлены объектами dnsNode, а записи DNS хранятся в виде значений в многозначном атрибуте dnsRecord объектов dnsNode, что приводит к появлению сообщений об ошибках.

Полезно будет посмотреть статью https://support.microsoft.com/en-us/help/267855/problems-with-many-domain-controllers-with-active-directory-integrated

Максимальный размер kerberos билета

Максимальный рекомендуемый размер для билета Kerberos составляет 48 000 байт, который настраивается с помощью значения MaxTokenSize.

Максимальные ограничения различных атрибутов Active Directory

  • SAM-Account-Name - Этот атрибут должен содержать не более 20 символов для пользователя и поддержки более ранних клиентов и не может содержать следующие символы "/ \ []:; | =, + *? <>. У компьютера SAM-Account-Name 16 символов
  • Common-Name - размер составляет 64 байта
  • Country-Code - 2 байта
  • Display Name — отображаемое имя пользователя. Представляет из себя комбинацию имен First name, Initials и Last name и может иметь максимальную длину 256 символов
  • Distinguished name (dn) - 256 символов
  • NetBIOS - 16 символов
  • DNS имя компьютера - 24 символа
  • Имя организационной единицы (OU) не должно превышать 64 символов
  • User logon name — имя входа пользователя. Имеет ограничение в 256 символов
  • Common name (cn) — предоставляемое имя объекта, используется для поиска. Максимальная длина 64 символа

Список всех атрибутов Active Directory со всеми их значениями и ограничениями вы можете посмотреть по ссылке - https://docs.microsoft.com/ru-ru/windows/win32/adschema/attributes-all

 

Автор - Сёмин Иван

One Response to Лимиты и масштабирование Active Directory

  1. Боря:

    Спасибо!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *