Ведение журнала в учетной записи пользователя, которая входит в более чем 1010 групп, может завершиться ошибкой на компьютере под управлением Windows Server

В этой статье устранена проблема, из-за которой вход в учетную запись пользователя, в которую входит более 1010 групп, завершается сбоем.

Применимо к: Windows Server 2008 R2 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 328889

Симптомы

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

Сообщение о входе. Системе не удается войти в систему из-за следующей ошибки: Во время попытки входа в систему контекст безопасности пользователя накопил слишком много идентификаторов безопасности. Повторите попытку или обратитесь к системным администраторам.

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

В приложениях и журнале событий безопасности с идентификатором 4625 может отображаться следующий код ошибки:

0xc000015a

Ошибка STATUS_TOO_MANY_CONTEXT_IDS.

Причина

Когда пользователь входит на компьютер, локальный центр безопасности (LSA, часть подсистемы локального центра безопасности) создает маркер доступа. Маркер представляет контекст безопасности пользователя. Маркер доступа состоит из уникальных идентификаторов безопасности (SID) для каждой группы, в которую входит пользователь. Эти идентификаторы безопасности включают транзитивные группы и значения идентификаторов безопасности из sidHistory пользователя и учетных записей групп.

Массив, содержащий идентификаторы безопасности членства пользователя в группах в маркере доступа, может содержать не более 1024 идентификаторов БЕЗОПАСНОСТИ. LSA не может удалить идентификатор безопасности из маркера. Таким образом, если идентификаторов безопасности больше, LSA не сможет создать маркер доступа, и пользователь не сможет войти в систему.

При построении списка идентификаторов безопасности LSA также вставляет несколько общих, хорошо известных идентификаторов БЕЗОПАСНОСТИ, помимо идентификаторов SID для членства пользователя в группах (вычисляется транзитивно). Таким образом, если пользователь является членом более чем 1010 настраиваемых групп безопасности, общее число идентификаторов БЕЗОПАСНОСТИ может превысить ограничение в 1024 идентификатора безопасности.

Важно!

  • Ограничение на маркеры для учетных записей администраторов и учетных записей, не являющихся администраторами.
  • Точное количество пользовательских идентификаторов БЕЗОПАСНОСТИ зависит от типа входа (например, интерактивной, службы, сети) и версии операционной системы контроллера домена и компьютера, создающего маркер.
  • Использование Kerberos или NTLM в качестве протокола проверки подлинности не влияет на ограничение маркеров доступа.
  • Параметр Клиента Kerberos MaxTokenSize рассматривается в статье Проблемы с проверкой подлинности Kerberos, когда пользователь принадлежит к нескольким группам. Маркер в контексте Kerberos относится к буферу для билетов, полученных узлом Windows Kerberos. В зависимости от размера билета, типа идентификаторов безопасности и включения сжатия идентификаторов безопасности буфер может содержать меньше или больше идентификаторов БЕЗОПАСНОСТИ, чем в маркере доступа.

Список пользовательских идентификаторов БЕЗОПАСНОСТИ будет включать:

  • Основные идентификаторы безопасности пользователя или компьютера и группы безопасности, в которые входит учетная запись.
  • Идентификаторы безопасности в атрибуте SIDHistory групп в область входа.

Так как атрибут SIDHistory может содержать несколько значений, ограничение в 1024 идентификатора безопасности можно быстро достичь, если учетные записи переносятся несколько раз. Количество идентификаторов безопасности в маркере доступа будет меньше общего числа групп, членом которых является пользователь в следующей ситуации:

  • Пользователь находится из доверенного домена, где отфильтровываются идентификаторы SIDHistory и SID.
  • Пользователь находится из доверенного домена через доверие, где идентификаторы БЕЗОПАСНОСТИ помещаются в карантин. Затем включаются только идентификаторы безопасности из того же домена, что и у пользователя.
  • Включаются только идентификаторы БЕЗОПАСНОСТИ локальной группы домена из домена ресурса.
  • Включены только идентификаторы siD локальной группы сервера ресурсов.

Из-за этих различий пользователь может войти на компьютер в одном домене, но не на компьютер в другом домене. Пользователь также может войти на один сервер в домене, но не на другой сервер в том же домене.

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

  • пользователи, которые находятся за пределом в 1024 идентификатора безопасности
  • пользователи, которые находятся в так много групп, что Kerberos не получает билет, даже с 65 535 байт буфера

Выполните следующие действия:

  1. Откройте командную строку на компьютере со средствами управления AD (контроллер домена или компьютер с RSAT).

  2. Перейдите к средству gro mem eva , а затем получите доступные команды, как показано на следующем снимку экрана:

    Снимок экрана: выходные данные после выполнения команды gro mem eva.

  3. Подключитесь к контроллерам домена, необходимым для оценки:

    • Настройка домена учетной записи %s — контроллер домена пользователя
    • Настройка глобального каталога %s — сборка мусора леса пользователя
    • Настройка домена ресурса %s — контроллер домена ресурсов
    • Задайте учетные данные по мере необходимости или подробные журналы, если результаты кажутся неверными или коллекция завершается сбоем.
  4. Выполните оценку следующим образом (например, для Администратор в contoso.com):

    Run contoso.com Admin

  5. Выполнение соберет сведения о пользователе на шагах 1–2, сведения о группе домена ресурсов — на шаге 3, а затем компилирует отчет на шагах 4 и 5.

  6. Результаты будут храниться в файле TSV в текущем каталоге, как показано на следующем снимке экрана:

    Снимок экрана: результаты будут храниться в файле TSV в текущем каталоге.

Ознакомьтесь со следующим руководством по чтению TSV-файла:

  • Тип идентификатора безопасности: Сообщает, является ли это основным идентификатором безопасности группы или пользователя или SIDHistory.
  • Количество идентификаторов безопасности: сколько идентификаторов безопасности из SIDHistory содержит эта учетная запись?
  • One Level MemberOf Count: Сколько идентификаторов БЕЗОПАСНОСТИ добавляет эта запись в коллекцию на одном уровне (член записи)?
  • Total MemberOf Count: сколько идентификаторов БЕЗОПАСНОСТИ добавляет эта запись в коллекцию в общей сложности?
  • Владелец группы. Для сред с делегированным управлением группами вы можете получить подсказки о том, как использовать слишком много групп для атаки на вход пользователей.
  • Тип группы: тип sid. WellKnown, идентификатор безопасности пользователя, глобальные и универсальные группы безопасности будут находиться во всех маркерах, созданных для этого пользователя. Локальная группа безопасности домена будет находиться только в этом домене ресурса. Это может быть важно, если у пользователя возникли проблемы со входом только в определенном домене ресурсов.
  • Member WhenChanged (UTC): последнее изменение членства в группе. Это может помочь сопоставить время, когда пользователи впервые сообщили о проблемах со входом.

Указания по поиску групп для изменения:

  • Группы с SIDHistory имеют хорошие рычаги, помогающие сократить число идентификаторов безопасности.

  • Группы, которые вводят многие другие группы через вложение, имеют большое значение для уменьшения числа идентификаторов безопасности.

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

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

Ограничения:

  • Средство не включает некоторые типы специальных идентификаторов безопасности WellKnown, перечисленные ниже в этой статье. Поэтому помните, что пользователь должен очистить несколько идентификаторов безопасности из 1024 в отчете, прежде чем он сможет успешно войти в систему.

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

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

Примечание.

Запустите от имени администратора в командной строке с повышенными привилегиями.

Net localgroup | findstr * > %computername%-grouplist.txt

Чтобы получить список участников из домена, выполните следующие действия:

Md server-groups

For /f "delims=*" %d in (%computername%-grouplist.txt) do Net localgroup %d | findstr \ > server-groups\%d-domain-memberlist.txt**

Смешайте и совместите группы, сообщаемые там, с пользовательским отчетом из NTDSUTIL.

Разрешение

Чтобы устранить эту проблему, используйте один из следующих методов в соответствии с вашей ситуацией.

Способ 1

Это решение применяется к следующей ситуации:

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

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

Параметры для уменьшения количества идентификаторов БЕЗОПАСНОСТИ в маркере пользователя включают следующие. Сбор данных из NTDSUTIL должен помочь вам увидеть, какие группы находятся в область для изменения или удаления:

  • Удалите пользователя из достаточного количества групп безопасности.

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

  • Определите, используют ли субъекты безопасности журнал безопасности для доступа к ресурсам. В противном случае удалите атрибут SIDHistory из этих учетных записей. Значение атрибута можно получить с помощью полномочного восстановления.

Примечание.

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

Способ 2

Решение применяется к ситуации, когда учетная запись администратора не может войти на компьютер.

Если пользователь, которому не удалось выполнить вход из-за слишком большого числа участников в группах, является членом группы администраторов, администратор, имеющий учетные данные учетной записи администратора (т. е. учетная запись с известным относительным идентификатором [RID] 500), должен перезапустить контроллер домена, выбрав параметр Безопасный режим запуска (или выбрав параметр Безопасный режим с сетевым запуском). В безопасном режиме администратор должен войти в контроллер домена, используя учетные данные учетной записи администратора.

Корпорация Майкрософт изменила алгоритм создания маркеров. LSA может создать маркер доступа для учетной записи администратора, чтобы администратор смог войти в систему независимо от того, сколько транзитивных или нетранслятивных групп является членом учетной записи администратора. Если используется один из этих параметров запуска в безопасном режиме, маркер доступа, созданный для учетной записи администратора, включает идентификаторы безопасности всех встроенных и всех глобальных групп домена, в которые входит учетная запись администратора.

К этим группам обычно относятся:

  • Все (S-1-1-0)
  • BUILTIN\Users (S-1-5-32-545)
  • BUILTIN\Administrators (S-1-5-32-544)
  • NT AUTHORITY\INTERACTIVE (S-1-5-4)
  • NT AUTHORITY\Прошедшие проверку подлинности пользователи (S-1-5-11)
  • LOCAL (S-1-2-0)
  • Пользователи домена и домена (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzzzz-513)
  • Администраторы домена и домена (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-512)
  • BUILTIN\Pre-Windows 2000 Compatible Access(S-1-5-32-554), если все члены этой группы
  • NT AUTHORITY\This Organization (S-1-5-15), если контроллер домена работает под управлением Windows Server 2003

Примечание.

Если используется параметр безопасного режима запуска, пользовательский интерфейс оснастки Пользователи и компьютеры Active Directory недоступен. В Windows Server 2003 администратор может также войти в систему, выбрав безопасный режим с сетевым запуском. в этом режиме доступен пользовательский интерфейс оснастки Пользователи и компьютеры Active Directory.

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

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

Способ 3

Этот вариант имеет наибольшую привлекательность, если у вас есть много групп, созданных для предоставления доступа к ресурсам, которые используются на определенном наборе серверов, и они не относятся ко многим другим серверам. Маркер доступа пользователей всегда содержит идентификаторы безопасности пользователей, глобальных и универсальных групп. Однако он содержит только идентификаторы безопасности Domain-Local групп домена, в котором находятся серверы ресурсов. Таким образом, из 600 групп, членом которых является пользователь, 400 помогают предоставить доступ к ресурсам файлового сервера на двух группах серверов, и тогда могут быть реализованы следующие идеи:

  • Разделите серверы на несколько групп по количеству Domain-Local групп.
  • Вместо одного домена ресурсов, содержащего все группы и серверы, используйте несколько доменов, в которых определены только группы, содержащие необходимые серверы.
  • У вас есть отдельный домен для серверов с небольшой потребностью в локальных группах домена. Одним из примеров могут быть серверы Exchange, так как Exchange имеет строгие предпочтения для универсальных групп.

Дополнительная информация

Универсальные идентификаторы безопасности учетной записи часто включают:

  • Все (S-1-1-0)
  • BUILTIN\Users (S-1-5-32-545)
  • BUILTIN\Administrators (S-1-5-32-544)
  • NT AUTHORITY\Прошедшие проверку подлинности пользователи (S-1-5-11)
  • Идентификатор сеанса входа (S-1-5-5-X-Y)
  • BUILTIN\Pre-Windows 2000 Compatible Access(S-1-5-32-554), если пользователь является членом этой группы (вложенный)

Важно!

Средство Whoami часто используется для проверки маркеров доступа. Это средство не отображает идентификатор безопасности сеанса входа.

Примеры идентификаторов безопасности в зависимости от типа сеанса входа:

  • LOCAL (S-1-2-0)
  • ВХОД В КОНСОЛЬ (S-1-2-1)
  • NT AUTHORITY\NETWORK (S-1-5-2)
  • NT AUTHORITY\SERVICE (S-1-5-6)
  • NT AUTHORITY\INTERACTIVE (S-1-5-4)
  • NT AUTHORITY\TERMINAL SERVER USER (S-1-5-13)
  • NT AUTHORITY\BATCH (S-1-5-3)

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

  • Доменные компьютеры (S-1-5-21-xxxxxxxx-yyyyyyyy-zzzzzzzzzzzz-515)
  • Пользователи домена и домена (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzzzz-513)
  • Администраторы домена и домена (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-512)

Идентификаторы безопасности, которые документируют, как был проверен сеанс входа, одно из следующих значений:

  • Подтверждение удостоверения центра проверки подлинности (S-1-18-1)
  • Удостоверение, утверждаемое службой (S-1-18-2)

Идентификаторы БЕЗОПАСНОСТИ, предоставляющие сведения о контексте маркера и утверждениях, несколько возможных:

  • Используемые утверждения устройства (S-1-5-21-0-0-0-0-496)
  • Используемые утверждения пользователей (S-1-5-21-0-0-0-497)
  • Сертификат организации (S-1-5-65-1)
  • Токен был создан с помощью проверенного удостоверения PKI (S-1-18-4)
  • Токен был создан с использованием подхода MFA (S-1-18-5)
  • Использовался Credential Guard (S-1-18-6)

Наиболее распространенные примеры — идентификаторы безопасности, описывающие уровень согласованности маркера.

  • Средний обязательный уровень (S-1-16-8192)
  • Высокий обязательный уровень (S-1-16-12288)

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

  • NT AUTHORITY\OTHER_ORGANIZATION (S-1-5-1000)
  • NT AUTHORITY\This Organization (S-1-5-15), если учетная запись находится в том же лесу, что и компьютер.

Примечание.

  • Как видно из примечания, приведенного в записи sid Logon Session SID SID, не учитывайте идентификаторы безопасности в списке выходных данных средства и предполагайте, что они завершены для всех целевых компьютеров и типов входа. Вы должны учитывать, что учетная запись находится под угрозой превышения этого ограничения, если она имеет более 1000 идентификаторов БЕЗОПАСНОСТИ. Не забывайте, что в зависимости от компьютера, на котором создан маркер, можно также добавить локальные группы сервера или рабочей станции.
  • xxxxxxxx-yyyyyy-zzzzzzzz — указывает на компоненты домена или рабочей станции идентификатора безопасности.

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

В этом примере предположим, что Joe принадлежит к домену A и является членом локальной группы домена Домен A\Chicago Users. Джо также является членом локальной группы домена Домен B\Chicago Users. Когда Joe входит на компьютер, принадлежащий к домену A (например, домен A\Workstation1), на компьютере создается маркер для Joe, а маркер содержит, помимо всех универсальных и глобальных членств в группах, идентификатор безопасности для пользователей домена A\Chicago. Он не будет содержать идентификатор безопасности для пользователей домена B\Chicago, так как компьютер, на котором вошел Джо (домен A\Workstation1), принадлежит домену A.

Аналогичным образом, когда Joe входит на компьютер, принадлежащий к домену B (например, домен B\Workstation1), на компьютере создается маркер для Joe, а маркер содержит, помимо всех универсальных и глобальных групп, идентификатор безопасности для пользователей домена B\Chicago; он не будет содержать идентификатор безопасности для доменных пользователей A\Chicago, так как компьютер, на котором вошел Джо (домен B\Workstation1), принадлежит домену B.

Однако при входе Joe на компьютер, принадлежащий к домену C (например, домен C\Workstation1), на компьютере с входом создается маркер для Джо, который содержит все универсальные и глобальные членства в группах для учетной записи пользователя Joe. Ни идентификатор безопасности для доменов A\Chicago Users, ни идентификатор безопасности для доменов B\Chicago Users не отображаются в маркере, так как локальные группы домена, членом которых является Джо, находятся в домене, отличном от домена компьютера, на котором вошел Джо (домен C\Workstation1). И наоборот, если Joe был членом какой-то локальной группы домена, которая принадлежит к домену C (например, домен C\Chicago Users), маркер, созданный для Joe на компьютере, будет содержать, помимо всех универсальных и глобальных членств в группах, идентификатор безопасности для пользователей домена C\Chicago.

Ссылки