RBAC роль “MyDistributionGroups” и скрытые из GAL группы

В OWA для Exchange существует замечательная возможность: предоставить пользователю самому управлять членством в группах, где этот пользователь является владельцем. Возможность замечательная. Но проблема начинается, когда по каким-то причинам такую группу необходимо скрыть из GAL, но оставить возможность управлять ее членством кем-либо.


Для пояснения я буду использовать следующие объекты:

  • пользователь Msft является членом и владельцем следующих групп: Group1, Group2, Group3
  • пользователь Msft имеет роль Organization Management
  • пользователь test.user1 является членом групп Group1, Group2 и владельцем групп Group2, Group3
  • пользователь test.user1 является рядовым пользователем без каких-либо административных прав
  • группы Group1 и Group2 обычные группы
  • группа Group3 группа, скрытая из GAL (с помощью параметра “Hide this group from address lists”)


Проблема

Ниже показаны 2 скришота с разделом групп из OWA (для пользователей Msft и test.user1 соответственно):

image

image

Как видно, у пользователя test.user1 отсутствует информация о группе Group3, владельцем которой он является. При этом, эта же группа есть в списке у пользователя Msft. В чем же причина такого поведения?


RBAC recipient read scope

Если посмотреть на параметр ImplicitRecipientReadScope роли MyDistributionGroup мы увидим, что он имеет значение MyGAL:

image

Дело в том, что нахождение пользователя в группе Organization Management позволяет ему видеть все объекты в организации Exchange независимо от того, скрыты эти объекты из GAL или нет.

Раздавать всем пользователям права Organization Management, мягко говоря, крайне неправильно. Изменить значение параметра ImplicitRecipientReadScope – тоже невозможно. Что делать?


Мастерим новую роль

Выход из этой ситуации прост – создать новую роль, аналогичную MyDistributionGroups, но со значением Organization в параметре ImplicitRecipientReadScope.

Для этой цели воспользуемся ролью “Distribution Groups” в качестве родительской.


Шаг 1. Создаем новую роль:

[PS] C:\>New-ManagementRole -Name 'Hidden Groups Management' -Parent "Distribution Groups"

Name                                    RoleType
----                                    --------
Hidden Groups Management                DistributionGroups

Шаг 2. Проверяем ImplicitRecipientReadScope у новой роли:

image

Шаг 3. Убираем из роли все командлеты:

[PS] C:\>Get-ManagementRole "Hidden Groups Management" | Get-ManagementRoleEntry | ? Name -NotLike "*Write-AdminAuditLog*" | Remove-ManagementRoleEntry -Confirm:$false
[PS] C:\>
[PS] C:\>
[PS] C:\>Get-ManagementRole "Hidden Groups Management" | Get-ManagementRoleEntry


Name                           Role                      Parameters
----                           ----                      ----------
Write-AdminAuditLog            Hidden Groups Management  {Comment, Confirm, ...

Обратите внимание, что на этом шаге я исключил 1 командлет из удаляемых. Это необходимо, т.к. удалить абсолютно все командлеты из роли – невозможно.

Шаг 4. Добавляем все командлеты из роли “MyDistributionGroups” в роль “Hidden Groups Management”:

[PS] C:\>$cmdlets = Get-ManagementRole "MyDistributionGroups" | Get-ManagementRoleEntry | ? Name -notlike "*Write-AdminAuditLog*"
[PS] C:\>
[PS] C:\>foreach ($cmdlet in $cmdlets){Add-ManagementRoleEntry -Identity "Hidden Groups Management\$($cmdlet.Name)"}

Шаг 5. Проверяем командлеты в роли “Hidden Groups Management”:

image

Шаг 6. Создаем группу для этой роли:

[PS] C:\>New-RoleGroup -Name "Hidden Groups Mgmt" -Roles "Hidden Groups Management"

Name                AssignedRoles       RoleAssignments     ManagedBy
----                -------------       ---------------     ---------
Hidden Groups Mgmt  {Hidden Groups M... {Hidden Groups M... {Deploy2013.Guid...

Шаг 7. Добавляем в группу необходимых пользователей:

[PS] C:\>Add-RoleGroupMember -Identity "Hidden Groups Mgmt" -Member test.user1

Шаг 8. Проверяем работу новой роли (заходим в настройки через OWA этим пользователем):

image

Как видно, теперь скрытая группа отображается у его владельца.



Недостаток

В этом сценарии есть один недостаток. Если пользователь зайдет напрямую в ECP, то он пападет в EAC и сможет видеть все группы в организации.

image

Избежать этого можно, например, сделав группу с ограничение по OU:

New-RoleGroup -Name 'Strict Hidden Groups Mgmt' -Roles "Hidden Groups Management" -RecipientOrganizationalUnitScope 'Deploy2013.Guide/Test'

image

Читайте также:

1 комментарий

  1. Если не ошибаюсь, то такая же проблема и в случае скрытия общего п/я из GAL с предоставленными правами доступа для пользователя.

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