Рубрика:
Администрирование /
Администрирование
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ИВАН КОРОБКО
Управляем объектами в Active Directory Часть 4
Группа безопасности – один из основных объектов Active Directory, определяющего правила доступа к ресурсам домена. Умение управлять этим объектом дает большие возможности в автоматизации управления Active Directory.
Группа безопасности, так же как и учетная запись пользователя, – очень важный объект, значение которого нельзя недооценивать, несмотря на его простоту по сравнению с последним. С помощью групп безопасности определяют уровень доступа к сетевым или локальным ресурсам; используя членство пользователей в группах, создают интеллектуальные сценарии регистрации пользователей в сети.
В этой статье, являющейся четвертой частью цикла статей о внутреннем устройстве Active Directory, рассмотрим анатомию группы Active Directory и принципы программного управления этим объектом.
Основные понятия
Прежде чем перейти к описанию объектной модели группы безопасности, рассматривать вопрос членства учетных записей пользователей в группе, необходимо определить понятие «группа безопасности».
Группа безопасности (security group) – объект, в котором могут содержаться дочерние объекты: учетные записи групп и пользователей. Она используется для определения разрешений доступа к файлам и другим ресурсам. Любая группа безопасности характеризуется двумя параметрами: ее типом и областью действия (см. таблицу 1).
Таблица 1. Параметры группы
Параметр мастера |
Атрибут объекта в Active Directory |
Тип данных |
Описание |
Group name |
cn, name |
String |
Название группы в домене |
Group name (Pre-Windows 2000) |
sAMAccountname |
String |
Название группы, используемое для совместимости с доменом Windows NT |
Group scope |
groupType |
Radio Button |
Суммарным значением параметра описывается область действия и тип создаваемой группы безопасности |
Тип группы (group type) определяет, является ли группа – группой рассылки или же группой безопасности.
Существует два типа групп: Security (безопасности) и Distribution (распространения).
Вторая важная характеристика – область действия группы (Group scope). Областью действия определяют, каким образом может быть использована группа: как локальная, как глобальная или как универсальная. При наличии в лесу двух и более доменов область действия группы играет значение, однако при наличии в нем одного домена – область действия не имеет значения.
Создание группы
Существует минимум два способа создания группы безопасности: с помощью мастера и сценария. Рассмотрим сначала работу мастера, уделив особое внимание изменениям, которые происходят в это время в каталоге Active Directory. Основные параметры, задаваемые при создании группы администратором – ее имя и тип. Изменение остальных параметров возможно только после создания объекта с помощью соответствующего мастера.
Создание группы с помощью мастера
Запуск мастера создания группы осуществляется из MMC-консоли Active Directory Users and Computers выбором пункта «New > Group» из контекстного меню папки, в которой необходимо создать учетную запись. Таким образом, определяется местоположение объекта, которому в Active Directory соответствует значение атрибута объекта distinguishedName.
Работа мастера состоит из одного шага (см. рис. 1). Во время создания группы безопасности необходимо назначить имя и тип группы, определить область действия и имя группы для совместимости (Pre-Windows 2000) с доменом Windows NT (см. таблицу 1).
Рисунок 1. Создание группы с помощью мастера
Рассмотрим параметры, задаваемые мастером во время создания учетной записи. Первым из них является название группы (атрибут Group). В каталоге Active Directory ему соответствует атрибут cn. Значение атрибута name – отображаемое имя, назначается автоматически, идентично значению cn. Однако впоследствии оно может быть изменено в свойствах группы безопасности.
Одновременно с этим значением назначается имя группы, используемое для совместимости с доменами Windows NT – значение параметра Group name (Pre-Windows 2000). В каталоге Active Directory ему соответствует атрибут sAMAccountName.
Значения атрибута cn и sAMAccount-Name можно изменить, только переименовав объект. Изменяя имя объекта с помощью мастера, администратор изменяет только его отображаемое имя.
С помощью двух оставшихся блоков определяют тип и область действия группы. По умолчанию мастер предлагает создать глобальную группу безопасности (groupType = -2147483646). Каждому из выбранных значений соответствует цифровой эквивалент (см. таблицу 2). В каталог Active Directory записывается суммарное значение в числовое поле groupType.
Таблица 2. Расшифровка значений параметра groupType
Тип группы |
Значение |
Тип группы |
Значение |
Global Security Group |
-2147483648 |
Global Distribution Group |
2 |
Local Security Group |
-2147483644 |
Local Distribution Group |
4 |
BuiltIn Group |
-2147483643 |
Universal Distribution Group |
8 |
Universal Security Group |
-2147483640 |
– |
– |
Создание группы с помощью сценария
Для создания учетной записи группы программным способом (VBScript), как и при работе мастера, необходимо жестко задать несколько параметров. В листинге 1 приведен сценарий, позволяющий создать учетную запись группы. Исходные данные для его создания приведены в таблице 3.
Листинг 1. Создание учетной записи группы
set RootDSE = GetObject("LDAP://RootDSE")
Domain = rootDSE.Get("defaultNamingContext")
Set objUsers = GetObject("LDAP://OU=WorkGroup," & Domain)
Set objNewUser = objUsers.Create("group", "cn=Test")
objNewUser.Put "sAMAccountName", "Test"
objNewUser.Put "groupType", "-2147483646"
objNewUser.SetInfo
Обратите внимание! Если в листинге не указать тип и область действия группы с помощью параметра groupType, то система автоматически создаст этот параметр, присвоив этому параметру значение -2147483646, что эквивалентно глобальной группе безопасности.
Таблица 3. Параметры сценария для создания учетной записи пользователя
Параметр |
Описание |
Способ назначения |
сn = Test |
Отображаемое имя |
Явный |
sAMAccountName = Test |
Имя в сети для совместимости с доменами Windows NT |
Явный |
groupType = -2147483646 |
Область действия и тип группы |
Явный |
distinguishedName = CN=Test,OU=WorkSpace,DC=Island,DC=ru |
Путь к создаваемой учетной записи группы |
Неявный |
Рассмотрим работу листинга. В первых двух строках сценария осуществляется определение RDN-имени (relative distinguished name, относительное составное имя) текущего домена с помощью виртуального объекта RootDSE. Затем в контейнере WorkSpace, находящемся в корне схемы Active Directory, создается группа безопасности с помощью функции Create(), имеющей два параметра. Первый параметр – тип объекта (последний элемент массива objectType), второй – имя объекта в формате «cn = …».
Замечание. RDN является одним из обязательных атрибутов объекта, значение которого характеризует его положение в иерархической структуре домена. Максимальная длина RDN-имени составляет 255 символов, однако схема Active Directory накладывает свои ограничения на его составные части. Например длина атрибута cn ограничивается 64 символами. Подробно о RDN см. [1].
Удаление группы
Аналогично описанию процесса создания группы рассмотрим удаление группы с двух ракурсов: работы мастера и сценария, их взаимосвязи.
Удаление группы с помощью мастера
Для запуска мастера удаления учетной записи какого-либо объекта, в том числе и группы, необходимо установить курсор на удаляемый объект (в данном случае – группа). Таким образом, определяют один из важнейших параметров – путь к объекту (поле distinguishedName). Вызвав контекстное меню объекта с помощью правой кнопки мыши, удаляют объект, выбрав пункт меню delete (см. рис. 2).
Рисунок 2. Удаление учетной записи группы с помощью мастера
Удаление объекта с помощью сценария
В сценарии удаления объекта необходимо указать тип удаляемого объекта и путь к этому объекту в каталоге Active Directory. Оба параметра в сумме составляют значение distinguishedName. Например, если требуется удалить группу Test, то необходимо определить значение параметра distinguishedName. Затем – имя объекта (значение cn) и папку, в которой он находится.
Листинг 2. Удаление учетной записи группы
set RootDSE = GetObject("LDAP://RootDSE")
Domain = rootDSE.Get("defaultNamingContext")
Set objUsers = GetObject("LDAP://OU=WorkGroup," & Domain)
objUsers.delete "group", "cn=Test"
Set objUsers = nothing
Членство в группах
В группах безопасности можно производить операции:
- получать список объектов;
- добавлять объекты;
- удалять объекты.
Каждый из этих способов можно реализовать как программно, так и с помощью мастера ММС-консоли, открыв вкладку Members учетной записи в свойствах группы (см. рис. 3).
Рисунок 3. Вкладка Members свойств группы безопасности
Получение списка членов группы
Членами группы безопасности могут быть группы или пользователи. Список членов группы хранится в массиве Member, который хранится в виде составного LDAP-пути (см. листинг 3а).
В графической оболочке отображается преобразованное каноническое имя, которому соответствует значение поля cn. Такое преобразование приведено в листинге 3б.
Листинг 3а. Получение списка членов группы (стандартный вариант)
path = …
Set objGroup = GetObject("LDAP:// " & path)
temp = ""
For Each obj In objGroup.member
temp = temp + obj + vbNewLine
Next
MsgBox temp
Листинг 3б. Получение списка членов группы (улучшенный вариант)
path = …
Set objGroup = GetObject("LDAP:// " & path)
For Each obj In objGroup.member
temp = temp + GetObject("LDAP:// " & ?
obj.cn) + vbNewLine
Next
MsgBox temp
Добавление и удаление объекта в группе
Поскольку механизм добавления и удаления членов в группу одинаков, то рассмотрим их вместе.
Алгоритм работы сценария в обоих случаях следующий. На первом этапе с помощью функции GetObject() получают доступ к группе. Затем, вызывая функцию, аргумент которой составное имя группы или учетной записи, осуществляют требуемое действие, причем вызывать setInfo() для записи данных в каталог Active Directory не нужно.
Для добавления учетной записи используется функция Add (см. листинг 4а), а для удаления – Remove (см. листинг 4б).
Листинг 4а. Добавление объектов в группу
path = …
objPath=…
Set objGroup = GetObject("LDAP:// " & path)
objGroup.Add("LDAP:// " & objPath)
Листинг 4б. Удаление объектов из группы
path = …
objPath=…
Set objGroup = GetObject("LDAP:// " & path)
objGroup.Remove("LDAP:// " & objPath)
Заключение
Практическая ценность использования групп безопасности заключается в том, что на основе членства в группе пользователю можно предоставлять определенный администратором набор сервисов, причем независимо от рабочей станции, на которой работает пользователь. Широкое применение эта идея нашла в сценариях регистрации пользователей в сети.
Надеюсь, эта статья поможет автоматизировать некоторые процессы в вашей сети.
- Object Naming – http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/distrib/dsbb_act_kjpw.mspx?mfr=true.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|