Настройка атрибутов

Разряд конфиденциальности был введен в Windows Server 2003 SP1. Как видно из названия, он позволяет настраивать определенные атрибуты в AD как конфиденциальные. При этом для получения доступа на чтение этих атрибутов обычных привилегий для чтения оказывается недостаточно. Чуть позже мы поговорим о том, как маркировать атрибут как конфиденциальный и как предоставить доступ на чтение конфиденциального атрибута. Основная идея заключается в следующем.
1. Разряд конфиденциальности устанавливается как разряд 7 (=128 в десятичном коде) для свойства searchFlags соответствующего объекта attributeSchema в схеме AD. Чтобы обозначить атрибут как конфиденциальный, к любому существующему значению добавляется 128.
2. Для предоставления права доступа к конфиденциальному атрибуту ограниченному кругу пользователей или групп необходимо дать им разрешение CONTROL_ ACCESS в отношении данного атрибута. При этом в AD применяются дополнительные проверки безопасности в рамках контроля доступа на чтение выбранных атрибутов.
Используя разряд конфиденциальности, следует помнить о важном ограничении, а именно о его неприменимости к атрибутам базовой схемы. Другими словами, преимущества разряда конфиденциальности неприменимы к 90% стандартных атрибутов AD. Атрибутами базовой схемы являются объекты attributeSchema категории 1, идентифицируемые по включенному биту 4 (= 16 в десятичном коде) атрибута SystemFIags. Однако не все стандартные атрибуты принадлежат категории 1. В Windows 2000 схема AD насчитывала 863 стандартных атрибута; в Windows Server 2003 - уже 1070. В Windows Server 2003 R2 был введен еще 81 атрибут (главным образом для служб для UNIX (SFU) и репликации DFS (DFSR)). С тех пор каждая версия Windows Server пополняет базовую схему новыми атрибутами. В Windows Server 2012 базовая схема насчитывает 1264 атрибута.
Чтобы выяснить, какие атрибуты принадлежат категории 1, воспользуемся инструментом LDAP-запросов LDP.exe, с помощью которого найдем все объекты attributeSchema с включенным разрядом 4. Можно просто вывести все объекты attributeSchema вместе со свойством systemFlag, применив фильтр (например, ObjectCategory = attributeSchema), и проанализировать результаты с помощью другого инструмента, например Microsoft Excel. Однако удобнее составить LDAP-запрос, который сразу выдаст конечный результат. Однако нельзя выполнить поиск для простого десятичного значения в свойстве systemFlag, ведь атрибут может иметь и другие разряды, установленные в system Flags. Поэтому LDAP-запрос необходимо дополнить поразрядным тестом, добавив в поисковый фильтр идентификатор RuleOlD 1.2.840.113556.1.4.803. Для поразрядных операций существует два идентификатора RulcOID, различаемых по правилам сопоставления: 1.2.840.113556.1.4.803 (условие «И», то есть «истина» только при совпадении всех разрядов десятичного значения) и 1.2.840.113556.1.4.804 (условие «ИЛИ», то есть «истина» при совпадении любого разряда десятичного значения). В результате наш поисковый фильтр LDAP будет выглядеть так: (& (objectCategory=attributeSchema) (system Flags:1.2.840.113556.1.4.803:=16)) Ожидаемое значение превышает 1000, поэтому запрос нужно сделать постраничным в программе LDP. Откройте окно параметров. В зависимости от используемой версии LDP, поле Attributes может присутствовать только в окне поиска, где также можно ввести значение 1.1 и получить аналогичный результат.