Приложения, использующие NetUserGetInfo и аналогичные API, используют доступ на чтение к определенным объектам AD.
В этой статье рассматривается проблема, из-за которой приложения, использующие API нижнего уровня класса NetUser или NetGroup, например NetUserGetInfo
или NetGroupGetInfo
сбой с ошибкой ACCESS DENIED.
Исходный номер базы знаний: 2281774
Итоги
У вас есть приложение, использующее API нижнего уровня класса NetUser или NetGroup, например NetUserGetInfo
, , NetUserEnum
NetUserSetInfo
, NetGroupSetInfo
NetGroupEnum
NetLocalGroupGetInfo
NetGroupGetInfo
NetLocalGroupSetInfo
и .NetLocalGroupEnum
В этой схеме API класса NetUser также используются для управления учетной записью компьютера.
Те же API используются при вызове поставщика ADSI WINNT.
Эти API могут завершиться ошибкой с ПОМОЩЬЮ ACCESS DENIED, хотя у учетной записи вызова есть достаточные разрешения для целевых учетных записей. Причиной этого является то, что реализация API на стороне клиента не имеет связи 1:1 с API RPC диспетчера учетных записей безопасности (SAM). Клиентская сторона выполняет дополнительные проверки и подготовку этих вызовов, требующих дополнительных разрешений в Active Directory.
Одно приложение, использующее эти API, — это служба кластера, а в журнале службы кластера вы увидите следующее:
00000a78.000021b8::2010/06/15-00:00:47.911 WARN [RES] Network Name <cluster-resource1>: не удалось определить, отключен ли кластер-ресурс учетной записи компьютера. состояние 5
Другим признаком этого эффекта может быть чрезмерная запись аудита в журнале событий безопасности для этих вызовов API и объектов, приведенных ниже, если включен аудит доступа к вызову или сбою доступа к учетной записи вызова.
Дополнительная информация
Реализация API использует несколько вызовов RPC, направленных на контроллер домена, для настройки сеанса и проверки домена. Он обращается к следующим объектам с доступом на чтение:
Корневой объект домена: он ищет основной домен контроллера домена и открывает домен для чтения, который, в свою очередь, открывает объект AD для домена, например DC=contoso,dc=com.
Встроенный контейнер: это корневой объект встроенного домена. Он открыт, как вызывающий хочет проверить его существование. Таким образом вызывающий объект должен иметь доступ на чтение к контейнеру CN=Builtin,DC=contoso,dc=com.
Объект сервера SAM: этот объект сохраняет общие разрешения для общего доступа к учетной записи SAM и перечисления. Он будет использоваться только для определенных вызовов. Имя объекта — cn=server,cn=system,DC=contoso,dc=com.
В большинстве доменов Active Directory разрешения для этих объектов предоставляются на основе членства в универсальных группах, таких как прошедшие проверку подлинности, все или группа доступа, совместимая с Windows 2000. Изменение триггера проблемы, возможно, было, что пользователь был удален из последней группы (возможно, вместе с всеми, и /или разрешения для перечисленных объектов были удалены в переходе для защиты разрешений Active Directory.
Подходы к устранению проблемы — предоставить необходимые разрешения на чтение или изменить приложение на использование LDAP вместо старых API или поставщика ADSI WINNT. LDAP не будет касаться указанных выше объектов, и он также будет поддерживать детализированные разрешения, которые вы могли задать в целевом объекте.
Чрезмерное аудит
Если вы включили аудит этих объектов, вы увидите до трех записей аудита для объектов выше для открытия и закрытия объектов, а также фактического доступа к целевому объекту. Если события регистрируются чрезмерно, рекомендуется удалить записи в списке ACL аудита, чтобы эти универсальные типы доступа больше не регистрировались. Проблема заключается в том, что корневой объект домена и встроенный контейнер наследуются многим подчиненным объектам.
Чтобы решить эту проблему, необходимо разбить наследование на встроенном контейнере и переопределить acEs, наследуемые только к этому объекту. Кроме того, необходимо коснуться acES в корневом объекте домена, чтобы проблемы SACEs больше не применялись к корневому объекту домена. Точные шаги зависят от фактических параметров SACL, которые применяются в вашей среде.