Active Directory

2.1 Зачем OU

OU имеют три рабочих назначения: делегировать ограниченные права, применять GPO к управляемому набору объектов, делать жизненный цикл объектов понятным. Они не являются списком подразделений, если подразделения не различаются по этим трём признакам. Хорошая OU отвечает на вопрос «какая политика и какой владелец здесь действуют?».

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

2.2 Стратегии OU

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

Проверка выбора:
Разные базовые GPO? → ветка по типу
Разные локальные владельцы? → ветка по географии
Нужна только отчётность? → атрибут Department, не OU

Гибрид допустим: верхний уровень — типы объектов, ниже для рабочих станций — площадки. Нельзя одновременно дублировать один компьютер в «OU=Москва» и «OU=Продажи»: объект имеет единственного родителя.

2.3 Эталонная структура

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

OU=SKL
-- OU=Accounts
| +-- OU=Standard
| +-- OU=Privileged
| +-- OU=Service
-- OU=Devices
| +-- OU=Workstations
| +-- OU=Servers
-- OU=Groups
| +-- OU=Role
| +-- OU=Resource
-- OU=Staging
-- OU=Disabled

Контейнеры по умолчанию CN=Users и CN=Computers не являются OU: на них нельзя нормальным образом линковать GPO и делегировать управление. Перенаправьте создание компьютеров и пользователей в проектные OU командой redircmp и redirusr, а существующие объекты мигрируйте планово.

2.4 Модель AGDLP

AGDLP означает Accounts → Global groups → Domain Local groups → Permissions

  1. Accounts — учётные записи
  2. Global — роли в домене
  3. Domain Local — права на ресурс
  4. Permissions — ACL

. Учётные записи входят в глобальные группы ролей; глобальные группы входят в доменные локальные группы ресурсов; права NTFS, SMB или приложения выдаются только последним. Так смена сотрудника меняет членство роли, а не ACL на десятках папок.

alice → GG_Sales_Read
 → DL_FS_Contracts_Read → \fs01\Contracts (Read)

AGUDLP для нескольких доменов:
Accounts → Global → Universal → Domain Local → Permission

Universal-группа реплицируется через GC, поэтому применяйте AGUDLP только при реальной междоменной потребности. В одно-доменном лесу AGDLP проще и дешевле для понимания. Группа — это роль или ресурс, а не «папка пользователей отдела».

2.5 Области групп

Область определяет, кого группа может содержать и где ей назначают разрешения. Тип (Security или Distribution) определяет, участвует ли она в авторизации. В современном дизайне Security-группы создают с понятным назначением и минимальным владельцем.

ОбластьТипичное назначениеГде права
GlobalРоль в одном доменеНе напрямую, через DL
Domain LocalДоступ к ресурсу доменаНа ресурсе своего домена
UniversalАгрегация ролей между доменамиЧерез DL

Не добавляйте пользователя прямо в ACL и не вкладывайте группы произвольно. Это скрывает источник доступа, ломает аудит и делает отзыв прав непроверяемым. Периодически просматривайте эффективное членство, включая вложенные группы.

2.6 Делегирование

Делегирование строят от операции к OU: службе поддержки разрешают сброс пароля и разблокировку только стандартных пользователей; команде серверов — создание и управление компьютерными объектами в OU=Servers; владельцу ресурса — управлять конкретной группой. Используйте мастер Delegation of Control как старт, затем проверяйте ACL и наследование.

OU=Accounts\Standard
 Helpdesk: Reset password, unlock, read properties
OU=Devices\Servers
 ServerOps: Create/delete computer objects
Group DL_FS_Project_RW
 Owner: Project manager (только membership)

Не делегируйте создание объектов в корне домена и не назначайте право «Full Control» ради одного сброса пароля. Защитите привилегированные OU от случайного наследования делегированных прав, а административные аккаунты держите отдельно от обычных.

2.7 Жизненный цикл

У объекта должны быть владелец, источник истины, дата проверки и путь завершения жизни. Новые устройства помещают в Staging с карантинными политиками, после проверки переводят в целевую OU; уволенных пользователей отключают, снимают сеансы и группы, затем выдерживают срок хранения перед удалением. Disabled — не архив без срока.

GG_<роль>_<доступ> GG_Sales_Contract_Read
DL_<ресурс>_<доступ> DL_FS_Contracts_Read
PC-- PC-MSK-0142
SVC_<система>_<задача> SVC_Backup_Agent

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

2.8 Антипаттерны

Слишком глубокое дерево OU создаёт непредсказуемое наследование GPO; блокировка наследования и Enforced как стандартный приём делают результат неаудируемым. Ещё хуже — OU по проекту для временных участников, когда членство в группе выражает это точнее. Не переносите объект между OU и чтобы выдать доступ к папке: меняйте группу роли.

Проверка качества:

  1. для любой OU можно назвать её GPO, делегата и правило жизненного цикла
  2. для любой ACL — доменную локальную группу
  3. для любой группы — владельца и бизнес-цель. Если ответа нет, объект следует перепроектировать

2.9 OU и GPO

GPO связывается с сайтом, доменом или OU, но объект получает итоговую политику по порядку LSDOU: Local, Site, Domain, OU. При вложенных OU более близкая политика обычно побеждает при конфликте. Это не повод строить глубокую иерархию: каждый уровень усложняет объяснение результата. Сначала создайте небольшое число базовых политик, затем отдельные политики для чётко определённых классов устройств или пользователей.

Domain: базовая безопасность
 OU=Devices: общие настройки устройств
 OU=Servers: серверное усиление
 OU=Tier0: политика DC/критичных систем

Наследование — часть дизайна, не случайный эффект.

Security filtering и WMI filter применяйте только когда OU не выражает целевой набор без искусственного перемещения объектов. Фильтрация должна быть документирована и минимальна: сложная WMI-проверка при каждом входе повышает время обработки, трудность диагностики. Если политика относится к устройству и не привязывайте её к OU пользователей из-за удобства.

OU выражает устойчивую границу управления, а GPO — конфигурационное намерение. Раздельная модель позволяет изменить правило без перемещения объекта и проверить применение через Resultant Set of Policy. Названия политик должны описывать действие и область, например SEC-Servers-Baseline, а не имя администратора или дату.
Частая ошибка: block Inheritance и Enforced — аварийные инструменты, а не нормальный способ «починить» конфликт. Они скрывают связи между политиками и создают исключения, о которых забывают. Не копируйте один и тот же параметр в десять GPO: определите владельца настройки и один уровень приоритета.
МеханизмХорошее применениеПлохое применение
OU linkСтабильный класс объектовВременный проект
Security filterНебольшая ролевая выборкаЗамена всей структуры OU
WMI filterРеальная аппаратная разницаСложная бизнес-логика
gpresult /h C:\Temp\policy.html
Get-GPInheritance -Target "OU=Servers,DC=skl,DC=local"
Get-GPOReport -All -ReportType Html -Path C:\Temp\gpo.html

2.10 Владение доступом

AGDLP работает только вместе с управлением жизненным циклом групп. У каждой группы должны быть технический владелец, бизнес-владелец, описание ресурса, тип доступа, срок следующего пересмотра и правило утверждения членства. Технический владелец понимает последствия изменения ACL; бизнес-владелец подтверждает, кому доступ действительно нужен. Один человек может выполнять обе роли лишь в небольшой среде и это должно быть явно зафиксировано.

При выдаче доступа создавайте или используйте роль, а не меняйте ресурс напрямую. Заявка должна отвечать: какая функция сотрудника требует права, к какому ресурсу, на какой срок, кто утвердил и какая группа реализует решение. При отзыве доступа удаляется членство в глобальной группе роли; доменная локальная группа и ACL остаются стабильными. Это предотвращает «дрейф разрешений», когда уход сотрудника оставляет неизвестные записи на файлах.

Бизнес-заявка → GG_Finance_Invoice_Approve
 → DL_APP_Invoice_Approve
 → роль приложения

Аудит идёт справа налево:
ресурс → DL → GG → учётная запись → владелец
Разделение ролей и ресурсов позволяет повторно использовать роли и не заставляет владельца файловой папки понимать все кадровые изменения. Оно также делает проверку доступа масштабируемой: аудитору достаточно пройти цепочку групп, а не искать SID пользователей в каждом ACL.
Частая ошибка: не используйте одну группу «All-IT» одновременно для рассылки, VPN, администратора сервера и доступа к исходному коду. Смешение целей делает минимальные права невозможными. Не делайте пользователя владельцем группы только потому, что ему иногда нужно добавить коллегу: назначьте ограниченного владельца роли и настройте процесс утверждения.

Чек-лист группы:

  1. имя соответствует шаблону
  2. назначение описано
  3. тип и область оправданы
  4. владелец назначен
  5. прямые пользователи разрешены только в роли
  6. вложения проверены
  7. дата ревизии запланирована

2.11 Миграция OU

Перестройка OU — это изменение области GPO, делегирования, поэтому её не проводят массовым перетаскиванием в рабочее время. Сначала инвентаризируйте объекты, текущие GPO links, ACL OU, группы, скрипты, приложения, которые используют distinguishedName. Затем создайте целевую структуру, назначьте базовые политики, проведите пилот на небольшой группе устройств и только после проверки перенесите следующую волну.

Инвентаризация → Целевая OU → Пилот 5 устройств
 ↓  ↓
 план отката gpresult + вход + приложение
 ↓  ↓
 поэтапный перенос → ревизия ACL

DN не является постоянным идентификатором объекта: перенос меняет DN, но сохраняет objectGUID, SID. Однако плохо написанные сценарии, интеграции часто хранят путь OU строкой. Найдите их до миграции. Если старую OU нужно оставить временно, сделайте её переходной, запретите создание новых объектов и назначьте дату удаления.

Пилот показывает фактическое наследование политики, которое схема на бумаге не всегда раскрывает. План отката ограничивает последствия: вы заранее знаете, какую ссылку GPO вернуть, кто принимает решение остановить волну. Обязательно фиксируйте до-, послесостояние, иначе невозможно доказать и что доступ не был расширен.
Частая ошибка: не переименовывайте OU и группы «для чистоты» без учёта зависимостей. Не используйте Staging как постоянную свалку: у объекта должен быть срок и автоматическое уведомление владельцу. Не перемещайте отключённые учётные записи в рабочую OU, надеясь, что флаг Disabled сам решит все риски.
Get-ADComputer -SearchBase "OU=Legacy,DC=skl,DC=local" -Filter * |
 Move-ADObject -TargetPath "OU=Workstations,OU=Devices,OU=SKL,DC=skl,DC=local"
Get-ADOrganizationalUnit -Filter * |
 Select-Object Name,DistinguishedName

После миграции сравните отчёты GPO, журнал делегирования и количество объектов по OU. «Объекты отображаются в новой папке» не является критерием готовности.

2.12 Практикум

Проектирование структуры OU, групп, GPO и делегирования должно быть доказуемым. Сначала собирают факты: владельцев сервисов, перечень зависимых систем, сетевые ограничения, требования к доступности, срокам восстановления, аудиту. Затем формулируют несколько вариантов, выбирают минимально сложный, записывают измеримые критерии успеха. Формулировка «так исторически сложилось» не является требованием и не должна переживать пересмотр дизайна.

Полезный приём — отделить решение от реализации. Решение описывает границу, владельца, допустимый риск, ожидаемое поведение при отказе; реализация перечисляет конкретные OU, DNS-зоны, контроллеры, группы или команды. Тогда изменение имени сервера не превращает архитектурный документ в ложный а новый инженер может проверить намерение до изменения конфигурации.

Стабильная структура по типам объектов и ролям делает права понятными: доступ меняется через членство, конфигурация — через назначенную GPO, а локальная поддержка получает только нужную делегацию. Такой подход уменьшает число неявных исключений. Он позволяет команде объяснить не только нормальную работу, но и последствия отказа, расширения организации или появления нового приложения. Хороший дизайн выдерживает вопрос «кто изменит это через два года и по каким правилам?».
Частая ошибка: нельзя принимать аккуратное дерево OU за признак качества: проверяйте фактическое наследование GPO, вложенные группы, владельцев и путь от пользователя до ACL ресурса. Антипаттерн обычно выглядит быстрее в день внедрения, но переносит цену в инциденты и аудит. Исключение допустимо только с владельцем, сроком пересмотра, мониторингом и планом удаления. Если исключение становится типовым, надо изменить базовую модель, а не размножать ручные настройки.

Методика проверки

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

Проектный чек-лист:

  1. определена цель
  2. известен владелец
  3. описана граница ответственности
  4. есть метрика успеха
  5. проверен отказ
  6. задокументирован откат
  7. назначена дата ревизии
  8. исключения имеют обоснование
Требование → вариант → риск → владелец
 ↓ ↓ ↓
 тестовый проверка решение об
 сценарий отказа эксплуатации

Документация обновляется после проверки,
а не до того, как факт подтверждён.
Get-ADGroupMember 'Domain Admins' -Recursive
Get-GPInheritance -Target 'OU=Servers,DC=skl,DC=local'
gpresult /r

Настройки

Цветовая схема

Тема