Exchange 2010 - Делегируем управление контактами

imageВозникла потребность делегировать права управления почтовыми Контактами Exchange Server 2010 (SP2) отдельной группе пользователей. Процесс предоставления такого уровня прав подразумевает два этапа:

1) Делегирование прав на создание/изменение/удаление объектов типа Контакт в определённой организационной единице (OU) Active Directory (AD) для определённой группы пользователей.

2) Делегирование прав на работу с командлетами Exchange Management Shell (EMS), отвечающими за управление почтовыми контактами.

Создадим в домене универсальную группу безопасности. В нашем примере это будет группа KOM-SRV-EXCHANGE-Contact-Managers-TCV2. В оснастке Active Directory - Users and Computers установив курсор на том OU, к которому нужно выдать права вызовем мастер делегирования управления

image

В мастере добавим ранее созданную универсальную группу безопасности

image

Далее выберем создание особой задачи для делегирования

image

Затем укажем то, что мы хотим разрешить управление только объектами типа Контакт (включим опции создания и удаления)

image

Разрешения выберем полные…

image

Завершаем работу мастера и переходим ко второму этапу – настройке прав доступа на Exchange 2010. Нас интересуют две предопределённые роли в механизме управления доступом к объектам Exchange на основе ролей (Role Based Access Control, RBAC):

  • Mail Recipients
  • Mail Recipient Creation

Именно в этих ролях присутствуют командлеты EMS отвечающие за создание/изменение/удаление контактов Exchange. Посмотрим в EMS какие командлеты нам доступны:

Get-ManagementRoleEntry "Mail Recipient*\*" | Where {$_.Name -like "*contact*"} | ft –AutoSize

image

Как видим, из обоих ролей нам доступно 8 командлетов, и теперь наша задача состоит в том, чтобы создать на основе этих двух предопределённых ролей новые дочерние роли, которые будут содержать в себе только нужные нам командлеты.

Сначала создаём новую роль на основе предопределённой существующей роли Mail Recipients. Эта роль будет отвечать за командлеты редактирования Контактов. Из созданной роли удаляем все командлеты не относящиеся к управлению Контактами

$vRName1 = "KOM Contact Managers - Redaction" 
New-ManagementRole -Name $vRName1 -Parent "Mail Recipients" 
$vRoles = Get-ManagementRoleEntry "$vRName1\*" | Where { $_.Name -NotLike "*Contact*" } 
Foreach ($vRole in $vRoles) {Remove-ManagementRoleEntry -Identity "$($vRole.Identity)\$($vRole.Name)" -Confirm:$False} 
Get-ManagementRoleEntry "$vRName1\*"

В итоге, в новой роли мы получим следующий набор командлетов:

image

Затем создаём новую роль на основе предопределённой существующей роли Mail Recipient Creation. Эта роль будет отвечать за командлеты создания и удаления контактов. Из созданной роли удаляем все командлеты не относящиеся к управлению Контактами

$vRName2 = "KOM Contact Managers - Creation" 
New-ManagementRole -Name $vRName2 -Parent "Mail Recipient Creation" 
$vRoles = Get-ManagementRoleEntry "$vRName2\*" | Where { $_.Name -NotLike "*Contact*" } 
Foreach ($vRole in $vRoles) {
    Remove-ManagementRoleEntry -Identity "$($vRole.Identity)\$($vRole.Name)" -Confirm:$False
} 
Get-ManagementRoleEntry "$vRName2\*"

 

В итоге, в новой роли мы получим следующий набор командлетов:

image

Теперь нужно объединить две созданные роли в группу ролей и назначить эту группу на доменную группу пользователей, которой мы делегируем право управления Контактами. Сделаем это с помощью веб-интерфейса Exchange Control Panel (ECP). Перейдём на закладку управления ролями и аудитом и вызовем окно создания новой группы ролей

image

Заполним имя группы, выберем доменную орг.единицу (OU) к которой мы ранее  делегировали права доступа AD, добавим две созданные нами роли и доменную группу безопасности.

image

После этого можно проверять работоспособность настроенных делегаций. На компьютере пользователей, входящих в указанную доменную группу безопасности нет необходимости устанавливать инструменты управления Exchange Server, а достаточно лишь наличия консоли PowerShell 2.0. На стороне сервера Exchange для возможности использования удалённых сессий PS должны быть обеспечены условия описанные в статье Connect Remote Exchange Management Shell to an Exchange Server 

Итак, на клиентском компьютере запускаем консоль PS и создаём сессию удалённого подключения к модулю управления Exchange:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri "http://MAILBOXSRV.holding.com/PowerShell/" -Authentication Kerberos 
Import-PSSession $Session

После того как сессия успешно создана, пробуем по очереди основные командлеты управления Контактами Exchange. Например, создаём новый контакт в AD/Exchange:

New-MailContact -ExternalEmailAddress 'SMTP:Vasiliy.Chapaev@RedHotArmy.ru' -Name 'Василий Чапаев' -Alias 'V.Chapaev' -FirstName 'Василий' -Initials '' -LastName 'Чапаев' -OrganizationalUnit 'holding.com/KOM/KOM-TCV/Contacts'

Пример создания mail-контакта из существующего в AD контакта:

Enable-MailContact -Identity 'holding.com/KOM/KOM-TCV/Contacts/Вася Пупкин' -ExternalEmailAddress 'SMTP:Vasya.Pupkin@Company.org' -Alias 'V.Pupkin'

Пример изменения атрибутов существующего контакта Exchange:

Set-Contact -City 'Сыктывкар' -Company 'Торговый дом "Красные перцы"' -Department 'Руководство' -Fax '88085554477' -HomePhone '88085554422' -Initials 'И.' -MobilePhone '+78085554433' -Office 'Офис №1' -Pager '88085554444' -Phone '88085554433' -PostalCode '167000' -StateOrProvince 'Республика Коми' -StreetAddress 'Проспект Ленина 28' -Title 'Исполнительный директор' -Identity 'holding.com/KOM/KOM-TCV/Contacts/Василий Чапаев'

Пример отключения контакта в Exchange но сохранения контакта в AD:

Disable-MailContact -Identity 'holding.com/KOM/KOM-TCV/Contacts/Петр Колобков'

Пример удаления контакта из AD/Exchange:

Remove-MailContact -Identity 'holding.com/KOM/KOM-TCV/Contacts/Вася Пупкин'

После того как работа с командлетами Exchange завершена, не забываем выполнить закрытие удалённой сессии командой согласно рекомендации Disconnect Remote Exchange Management Shell from an Exchange Server:

Remove-PSSession $Session

Всего комментариев: 4 Комментировать

  1. odarchuk /

    Круто! А как делегировать право на создание учеток и ПЯ для кадровиков? Сейчас это делается с остнастки Exchange. Я могу через RemoteApp предоставить к ней доступ HR"у :)

  2. Миша /

    там ошибка небольшая. в втором скрипте

    у вас
    Foreach ($vRole in $vRoles) {
    Remove-ManagementRoleEntry -Identity "$($vRole.Identity)$($vRole.Name)" -Confirm:$False
    }

    а надо
    Foreach ($vRole in $vRoles) {
    Remove-ManagementRoleEntry -Identity "$($vRole.Identity)\$($vRole.Name)" -Confirm:$False
    }

    "слешь" потерян..

    1. Алексей Максимов / Автор записи

      Спасибо, поправили.

      1. Миша /

        вам спасибо. по делу и в тему.

Добавить комментарий