Каждый объект, хранящийся в Active Directory (пользователь, группа, организационная единица и т.п.) имеет свои собственные разрешения доступа. С помощью этих разрешений администратор домена может делегировать права на управление пользователями, группами или компьютерами любому пользователю, например чтобы освободиться от выполнения рутинных задач. Одной из проблем делегирования является необходимость сделать хранящиеся в AD данные видимыми только для тех пользователей, которым это необходимо для работы и скрыть от всех остальных. О том, как это можно сделать и пойдет сегодня речь.
Начнем с того, что в AD есть встроенная группа Authenticated Users (Прошедшие проверку), в которую входят все пользователи, успешно прошедшие процедуру аутентификации в домене. По умолчанию для группы Authenticated Users предоставляется разрешение на просмотр всех организационных единицах (OU) в домене. Проще говоря, любой пользователь домена, имеющий доступ к оснастке Active Directory Users and Computers (ADUC) или к любому другому инструменту для доступа к AD может беспрепятственно просматривать содержимое любой OU.
Для примера возьмем OU Employees, в которой находится дочерняя OU Security. Об этой OU обычным пользователям знать необязательно, поэтому ее необходимо скрыть.
Для перехода к свойствам Employees правым щелчком мыши откроем контекстное меню и выберем пункт Properties.
Затем в свойствах OU перейдем на вкладку Security и посмотрим текущие настройки безопасности. Как видите, у группы Authenticated Users есть разрешение на чтение (Read) для данной организационной единицы.
Примечание. Для отображения вкладки «Security» необходимо в меню «View» включить опцию «Advanced features».
По кнопке «Advanced» перейдем к расширенным настройкам безопасности. Для более детального просмотра всех разрешения для группы Authenticated Users выделим ее и нажмем Edit.
Как видите, в базовое разрешение Read входит разрешение List Contents, которое и дает пользователю возможность просматривать содержимое OU вне зависимости от того, есть у него разрешения на дочерние объекты или нет.
Здесь надо уточнить, что при отсутствии у пользователя прав доступа к объекту оснастка ADUC не сможет корректно отобразить тип объекта и покажет его как неизвестный (Unknown). Поэтому, если у группы Authenticated Users отобрать права на чтение OU Security, то получится несколько неприглядная 🙂 картина.
Дело в том, что по умолчанию служба AD не рассматривает разрешения для объектов, расположенных внутри контейнера (напр. OU) к которому обращается пользователь. И если у пользователя есть разрешение List Contents, то ему доступно для просмотра все содержимое контейнера.
Исправить положение и скрыть от пользователя объекты, к которым у него нет доступа, можно с помощью режима List Object (List Object Mode). Если активировать List Object Mode, то прежде чем возвратить пользователю список объектов, служба AD проверит разрешения для каждого дочернего объекта и покажет только те, на которые у него есть необходимые разрешения.
Включение List Object Mode
Перед тем, как приступить к настройке, следует знать что:
• Включение List Object Mode осуществляется для всего леса. Активировать List Object Mode для отдельного домена или группы доменов невозможно;
• Для включения List Object Mode необходимы полномочия уровня Enterprise Admin.
Включение List Object Mode осуществляется путем изменения одного из свойств объекта Directory Services в разделе конфигурации AD. Для этого запускаем редактор ADSIEdit, в поле «Select a well known Naming Context» выбираем «Configuration» и жмем OK.
Переходим в раздел CN=Configuration -> CN=Services -> CN=Windows NT, кликаем правой кнопкой по CN=Directory Service и в контекстном меню выбираем Properties.
Затем находим свойство dsHeuristics и задаем его значение равное 001.
Применяем изменения и выходим из ADSIEdit, режим List Object Mode уже включен. Теперь в расширенных настройках безопасности OU кроме List content появилось новое разрешение List object.
После включения List Object Mode доступ к объектам в AD регулируется сочетанием разрешений List content и List object на родительском и на дочернем объектах. Возможны следующие сочетания:
Родительский контейнер | Дочерние объекты | Результат |
---|---|---|
List Contents и List Object | отсутствует | Доступен родительский контейнер доступен и все его содержимое, вне зависимости от наличия разрешений на дочерние объекты |
List Object | List Object | Доступен родительский контейнер и дочерние объекты, на которые у пользователя имеется разрешение List Object |
List Contents | отсутствует | Отсутствует доступ к родительскому контейнеру, но можно просматривать дочерние объекты |
отсутствует | отсутствует | Отсутствует доступ к родительскому контейнеру и дочерним объектам |
Так в нашем примере для группы Authenticated Users произведем следующие изменения: у OU Employees уберем разрешение List Contents оставив List Object, а также уберем разрешение List Object для OU Security . После этого обычные пользователи, открыв OU Employees просто не увидят OU Security.
И еще одна тонкость, без которой включение List Object Mode не произведет должного эффекта. Если открыть расширенные свойства безопасности для OU Employees, то в них можно найти группу Pre-Windows 2000 Compatible Access, которая имеет права List Contents.
Это встроенная (BuiltIn) группа безопасности, предназначенная для обеспечения совместимости с устаревшими ОС Windows.
Для нормальной работы List Object Mode необходимо открыть свойства этой группы и удалить из ее членов группу Authenticated Users.
В завершение напомню, что изменения в Active Directory могут привести к непредсказуемым последствиям, поэтому перед применением в производственной среде их желательно протестировать в тестовом окружении.
А если надо закрыть объект от всех кроме некоторых пользователей?