Пометка атрибута как конфиденциального в Windows Server 2003 с пакетом обновления 1 (SP1)

В этой статье описывается, как пометить атрибут как конфиденциальный в Windows Server 2003 с пакетом обновления 1 (SP1).

Применяется к: Windows Server 2003
Исходный номер базы знаний: 922836

Сводка

В службе каталогов Active Directory для Microsoft Windows Server 2000 и Microsoft Windows Server 2003 трудно предотвратить чтение атрибута пользователем, прошедшим проверку подлинности. Как правило, если пользователь запрашивает разрешения READ_PROPERTY для атрибута или для его набора свойств, предоставляется доступ на чтение. Безопасность по умолчанию в Active Directory устанавливается таким образом, чтобы пользователи, прошедшие проверку подлинности, имели доступ на чтение ко всем атрибутам. В этой статье описывается, как запретить доступ на чтение для атрибута в Windows Server 2003 с пакетом обновления 1 (SP1).

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

В Windows Server 2003 с пакетом обновления 1 (SP1) представлен способ пометить атрибут как конфиденциальный. Для этого измените значение атрибута searchFlags в схеме. Значение атрибута searchFlags содержит несколько битов, представляющих различные свойства атрибута. Например, если задан бит 1, атрибут индексируется. Бит 7 (128) обозначает атрибут как конфиденциальный.

Требования и ограничения

Только контроллеры домена под управлением Windows Server 2003 с пакетом обновления 1 (SP1) или более поздней версии применяют проверка доступа на чтение для конфиденциальных атрибутов. Функция конфиденциальных атрибутов связана с установкой Windows Server 2003 с пакетом обновления 1 (SP1) или более поздней версии. Эта функция не зависит от того, включен ли функциональный уровень домена или леса.

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

  • На всех контроллерах домена под управлением Windows Server 2003 установлена Windows Server 2003 с пакетом обновления 1 (SP1) или более поздней версии.

  • Все контроллеры домена под управлением Windows 2000 были обновлены или удалены. Если домен содержит набор контроллеров домена под управлением Windows 2000 Server, исходной версии Windows Server 2003 и Windows Server 2003 с пакетом обновления 1 (SP1), может возникнуть следующий сценарий:

  • Если несанкционированный клиент запрашивает у контроллеров домена Windows 2000 Server и Windows Server 2003 данные конфиденциальных атрибутов, клиент может считывать эти данные.

  • Если несанкционированный клиент запрашивает у контроллера домена Windows Server 2003 с пакетом обновления 1 (SP1) данные конфиденциальных атрибутов, клиент не сможет прочитать эти данные. Атрибут базовой схемы нельзя пометить как конфиденциальный. Идентификатор сотрудника — это пример атрибута базовой схемы. Этот атрибут нельзя пометить как конфиденциальный, так как для его атрибута systemsFlags задано значение 0x10 (базовая схема). Дополнительные сведения см. в разделе "Определение того, является ли атрибут базовым атрибутом схемы" и в разделе "Как определить значение атрибута searchFlags при использовании существующего атрибута".

Тестирование

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

Проверки контроля доступа

После установки Windows Server 2003 с пакетом обновления 1 (SP1) и после того, как Active Directory выполнит проверка доступа на чтение, Active Directory проверяет наличие конфиденциальных атрибутов. Если конфиденциальные атрибуты существуют и для этих атрибутов заданы разрешения READ_PROPERTY, Active Directory также потребует CONTROL_ACCESS разрешений для атрибутов или их наборов свойств.

Примечание.

Параметр разрешения "Полный доступ" включает разрешение CONTROL_ACCESS.

Active Directory выполняет проверка доступа на чтение к объекту в следующих случаях:

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

Универсальные и объектные элементы управления доступом

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

Набор записей разрешений в дескрипторе безопасности называется списком управления доступом по усмотрению (DACL). Каждая запись разрешений в DACL называется записью управления доступом (ACE).

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

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

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

При использовании универсальной записи управления доступом предоставляются следующие разрешения:

  • Все расширенные права
  • Разрешено проходить проверку подлинности
  • Смена пароля
  • Получить как
  • Сброс пароля
  • Отправить как

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

Пользовательский интерфейс в Windows Server 2003 не предоставляет Control_Access разрешений. С помощью средства Dsacls.exe можно задать разрешения Control_Access, назначив универсальную запись управления доступом. Однако вы не можете использовать это средство для назначения записи управления доступом для конкретного объекта. Единственное средство, которое может задать Control_Access разрешения, назначив запись управления доступом для конкретного объекта, — это средство Ldp.exe.

Примечание.

Подробное обсуждение управления доступом выходит за рамки область этой статьи. Дополнительные сведения об управлении доступом см. на следующих веб-сайтах Майкрософт:
контроль доступа (авторизация)
Управление удостоверениями и контроль доступа

Использование наследования

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

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

Создание конфиденциального атрибута

  1. Определите, какой атрибут пометить как конфиденциальный, или добавьте атрибут, который необходимо сделать конфиденциальным.
  2. Предоставьте соответствующим пользователям разрешения Control_Access, чтобы пользователи могли просматривать данные атрибутов.

Для создания конфиденциального атрибута можно использовать такие средства, как средство Ldp.exe и средство Adsiedit.msc. LDF-файлы обычно используются для расширения схемы. Эти файлы также можно использовать для пометки атрибута как конфиденциального. Файлы, создаваемые для реализации, должны быть настроены на этапе тестирования, чтобы вы точно знали, что вы добавляете в схему при развертывании в рабочей среде. LDF-файлы помогают предотвратить ошибки.

Следующие примеры LDF-файлов можно использовать для выполнения следующих действий:

  • Добавление атрибута в схему
  • Пометка атрибута как конфиденциального
  • Добавление атрибута в класс пользователя

Примечание.

Прежде чем использовать LDF-файлы, ознакомьтесь с разделами "Идентификаторы объектов" и "Синтаксис атрибутов", чтобы получить важную информацию о добавлении объектов и атрибутов в схему.

Примеры LDF-файлов

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

dn: CN=ConfidentialAttribute-LDF,CN=Schema,Cn=Configuration,DC=domain,DC=com
changetype: add
objectClass: attributeSchema
lDAPDisplayName: ConfidentialAttribute
adminDescription: этот атрибут хранит конфиденциальные данные пользователя.
attributeID: 1.2.840.113556.1.xxxx.xxxx.1.x
attributeSyntax: 2.5.5.12
oMSyntax: 64
isSingleValued: TRUE
showInAdvancedViewOnly: TRUE
searchFlags: 128

Dn:
changeType: modify
add: schemaupdatenow
schemaupdatenow: 1
-

Следующий код добавляет новый атрибут в класс user.

dn: CN=User,CN=Schema,CN=Configuration,DC=domain,DC=com
changetype: modify
add: mayContain
mayContain: ConfidentialAttribute
-

Dn:
changeType: modify
add: schemaupdatenow
schemaupdatenow: 1
-

Предоставление пользователям, не являющихся администраторами, просматривать данные атрибутов

Примечание.

Следующие процедуры требуют использования средства Ldp.exe, входящего в состав режима приложения Active Directory (ADAM) Windows Server 2003 R2. Другие версии средства Ldp.exe не могут задавать разрешения.

Настройка разрешений Control_Access для учетной записи пользователя вручную

  1. Откройте средство Ldp.exe, входящее в состав Windows Server 2003 R2 ADAM.
  2. Подключитесь к каталогу и привяжите его.
  3. Выберите учетную запись пользователя, щелкните ее правой кнопкой мыши, выберите пункт Дополнительно, выберите пункт Дескриптор безопасности и нажмите кнопку ОК.
  4. В поле DACL щелкните Добавить ACE.
  5. В поле Доверенное лицо введите имя группы или имя пользователя, которому требуется предоставить разрешения.
  6. В поле Управление доступом проверьте изменения, внесенные на шаге 5.

Использование наследования для назначения разрешений Control_Access

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

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

  1. Откройте файл Ldp.exe, включенный в Состав Windows Server 2003 R2 ADAM.

  2. Подключение и привязка к каталогу.

  3. Выберите подразделение или контейнер, который выше в иерархии контейнеров, чем объекты с конфиденциальными атрибутами, щелкните правой кнопкой мыши подразделение или контейнер, выберите пункт Дополнительно, выберите пункт Дескриптор безопасности и нажмите кнопку ОК.

  4. В поле DACL щелкните Добавить ACE.

  5. В поле Доверенное лицо введите имя группы или имя пользователя, которому требуется предоставить разрешения.

  6. В поле Управление доступом проверьте изменения, внесенные на шаге 5.

  7. В поле Тип объекта щелкните добавленный конфиденциальный атрибут.

  8. Убедитесь, что для целевых объектов включено наследование.

Определение значения атрибута systemFlags при использовании существующего атрибута

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

Чтобы с помощью средства Ldp.exe получить значение атрибута searchFlags, выполните следующие действия.

  1. Нажмите кнопку Пуск, нажмите кнопку Выполнить, введите LDP и нажмите кнопку ОК.

  2. Щелкните Подключение, а затем — Привязать.

  3. Привязать как администратора корневого домена или как учетную запись, которая является администратором предприятия.

  4. Щелкните Вид, а затем — Дерево.

  5. Щелкните CN=schema,cn=configuration,dc=rootdomain и нажмите кнопку ОК.

  6. В левой области разверните узел CN=schema,cn=configuration,dc=rootdomain.

  7. Найдите доменное имя атрибута, который нужно пометить как конфиденциальный, и разверните его.

  8. В списке атрибутов, заполненных для объекта, найдите searchFlags , чтобы определить текущее значение атрибута searchFlags для этого объекта.

Примечание.

Чтобы определить новое значение атрибута searchFlags, используйте следующую формулу:
128 + значение currentsearchFlagsattribute = newsearchFlagsattribute.

Определение того, является ли атрибут базовым атрибутом схемы

Чтобы определить, является ли атрибут базовым атрибутом схемы, используйте средство Ldp.exe для проверки значения атрибута systemFlags.

Выходные данные LDP идентификатора сотрудника — systemFlags: 0x10 = (FLAG_SCHEMA_BASE_OBJECT)

В следующем примере выходных данных Ldp.exe Ldp.exe определяет значение атрибута systemFlags как 0x10 и как атрибут базовой схемы. Поэтому этот атрибут нельзя пометить как конфиденциальный.

>> Dn: CN=Employee-ID,CN=Schema,CN=Configuration,DC=domain,DC=com
2> objectClass: top; attributeSchema;
1> cn: Employee-ID;
1> различающееся имя: CN=Employee-ID,CN=Schema,CN=Configuration,DC=domain,DC=com;
1> instanceType: 0x4 = ( IT_WRITE );
1> whenCreated: <DateTime>;
1> whenChanged: <DateTime>;
1> uSNCreated: 220;
1> attributeID: 1.2.840.113556.1.4.35;
1> attributeSyntax: 2.5.5.12 = ( SYNTAX_UNICODE_TYPE );
1> isSingleValued: TRUE;
1> rangeLower: 0;
1> rangeUpper: 16;
1> uSNChanged: 220;
1> showInAdvancedViewOnly: TRUE;
1> adminDisplayName: Employee-ID;
1> adminDescription: Employee-ID;
1> oMSyntax: 64 = ( OM_S_UNICODE_STRING );
1> searchFlags: 0x0 = ( );
1> lDAPDisplayName: employeeID;
1> имя: Идентификатор сотрудника;
1> objectGUID: 64fb3ed1-338f-466e-a879-595bd3940ab7;
1> schemaIDGUID: bf967962-0de6-11d0-a285-00aa003049e2;
1> systemOnly: FALSE;
1> systemFlags: 0x10 = ( FLAG_SCHEMA_BASE_OBJECT );
1> objectCategory: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=domain,DC=com;

Выходные данные LDP Employee-Number systemFlags: 0x0 = ( )

В следующем примере выходных данных Ldp.exe Ldp.exe определяет значение атрибута systemFlags как 0. Этот атрибут можно пометить как конфиденциальный.

>> Dn: CN=Employee-Number,CN=Schema,CN=Configuration,DC=warrenw,DC=com
2> objectClass: top; attributeSchema;
1> cn: Номер сотрудника;
1> различающеесяname: CN=Employee-Number,CN=Schema,CN=Configuration,DC=warrenw,DC=com;
1> instanceType: 0x4 = ( IT_WRITE );
1> whenCreated: <DateTime>;
1> whenChanged: <DateTime>;
1> uSNCreated: 221;
1> attributeID: 1.2.840.113556.1.2.610;
1> attributeSyntax: 2.5.5.12 = ( SYNTAX_UNICODE_TYPE );
1> isSingleValued: TRUE;
1> rangeLower: 1;
1> rangeUpper: 512;
1> mAPIID: 35943;
1> uSNChanged: 221;
1> showInAdvancedViewOnly: TRUE;
1> adminDisplayName: Employee-Number;
1> adminDescription: Employee-Number;
1> oMSyntax: 64 = ( OM_S_UNICODE_STRING );
1> searchFlags: 0x0 = ( );
1> lDAPDisplayName: employeeNumber;
1> имя: Номер сотрудника;
1> objectGUID: 2446d04d-b8b6-46c7-abbf-4d8e7e1bb6ec;
1> schemaIDGUID: a8df73ef-c5ea-11d1-bbcb-0080c76670c0;
1> systemOnly: FALSE;
1> systemFlags: 0x0 = ( );
1> objectCategory: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=warrenw,DC=com;

Идентификаторы объектов

При добавлении атрибута или объекта класса в схему одним из обязательных атрибутов является идентификатор объекта (также известный как OID). Идентификаторы объектов используются для уникального определения классов и атрибутов объектов. Убедитесь, что ваша компания получает уникальный идентификатор объекта для идентификации его атрибута. Средства, создающие идентификаторы объектов, такие как средство Oidgen.exe, не поддерживаются. Чтобы получить идентификатор объекта от корпорации Майкрософт, посетите следующий веб-сайт Майкрософт:
Получение идентификатора объекта от корпорации Майкрософт

Синтаксис атрибутов

Атрибут attributeSyntax также требуется для добавления новых объектов в схему. Этот атрибут определяет представление хранилища, порядок байтов и правила сопоставления для сравнения типов свойств. Синтаксис определяет, должно ли значение атрибута быть строкой, числом или единицей времени. Каждый атрибут каждого объекта связан с одним синтаксисом. Убедитесь, что выбран правильный синтаксис атрибута для нового атрибута. Это особенно важно при синхронизации каталога LDAP с другим каталогом LDAP. После добавления атрибута в схему его синтаксис атрибута нельзя изменить.

Дополнительные сведения об атрибуте attributeSyntax см. в разделе Атрибут атрибута Attribute-Syntax.

Дополнительные сведения см. в атрибуте Search-Flags .