Поиск разрешений, необходимых для запуска командлета Exchange

Оболочка PowerShell позволит найти разрешения, необходимые для запуска командлетов Exchange или Exchange Online. В этой процедуре описаны роли управления доступом на основе ролей (RBAC) и соответствующие группы ролей, позволяющие получить доступ к определенному командлету, даже если в вашей организации предусмотрены настраиваемые роли, группы ролей или специальные назначения ролей.

Совет

В настоящее время процедуры, описанные в этой статье, не работают с командлетами группы Microsoft 365 (*-UnifiedGroup) в Exchange Online PowerShell.

Что нужно знать перед началом работы

  • Предполагаемое время для завершения каждой процедуры: менее 5 минут.

  • Для выполнения этих процедур можно использовать только PowerShell.

  • Процедуры, описанные в этой статье, не работают в Security & Compliance PowerShell. Дополнительные сведения о разрешениях для обеспечения безопасности & соответствия требованиям см. в следующих статьях:

  • Вам должны быть назначены разрешения, прежде чем вы сможете выполнять процедуры, описанные в этой статье. Возможны следующие варианты:

    • Разрешения Exchange Server: Членство в одной из следующих групп ролей:

      • Управление соответствием требованиям
      • Управление санацией
      • Organization Management
      • View-Only Organization Management
    • Разрешения Exchange Online: Членство в одной из следующих групп ролей:

      • Управление соответствием требованиям
      • Делегированная установка
      • Управление санацией
      • Organization Management
      • View-Only Organization Management
    • Разрешения Microsoft Entra: членство в ролях глобального администратора* или глобального читателя предоставляет пользователям необходимые разрешения и разрешения для других функций в Microsoft 365.

      Важно!

      * Корпорация Майкрософт рекомендует использовать роли с минимальным количеством разрешений. Использование учетных записей с более низким уровнем разрешений помогает повысить безопасность организации. Глобальный администратор — это роль с высокими привилегиями, которую следует ограничивать экстренными сценариями, когда вы не можете использовать существующую роль.

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

  1. Если вы еще не сделали этого, откройте интересующую вас среду Exchange PowerShell:

  2. Замените <Cmdlet> и при необходимости <Parameter1>,<Parameter2>,... на значения, которые необходимо использовать, и выполните следующую команду:

    $Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
    

    Совет

    Если задано несколько параметров, возвращаются только те роли, которые содержат все указанные параметры командлета.

  3. Выполните следующую команду:

    $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
    

Интерпретация результатов

Результаты содержат сведения, указанные ниже.

  • Роль: Указывает, какая роль предоставляет доступ к командлету или сочетанию командлета и параметров. Имена ролей, начинающиеся с "Мои", — это роли пользователей, которые позволяют обычным пользователям работать с объектами, которые им принадлежат (например, с собственным почтовым ящиком или группами рассылки).

  • RoleAssigneeType и RoleAssigneeName: эти значения взаимосвязаны:

    • RoleAssigneeType — это тип объекта, которому назначена роль. Для ролей администраторов это значение, как правило, представляет собой группу ролей, но также может быть политика назначения ролей, группа безопасности или пользователь.
    • RoleAssigneeName — это имя группы ролей, политики назначения ролей, группы безопасности или пользователя.

Устранение неполадок

Что делать, если результаты не отображаются?

  • Убедитесь, что имена командлета и его параметров введены верно.
  • Несколько параметров для командлета могут не быть определены в одной роли (некоторые параметры могут быть связаны с одной ролью, а другие — с другой). Делайте это шаг за шагом:
    • Запустите первую команду без параметров, а затем выполните вторую команду.
    • Добавьте один параметр в первую команду, а затем запустите вторую команду.
    • Повторите предыдущий шаг, добавив другие параметры в первую команду перед запуском второй команды.

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

  • Командлет или параметры определяются в роли, которая по умолчанию не назначена ни одной группе ролей.
  • Командлет или параметры недоступны в вашей среде. Например, вы указали командлет Exchange Online или параметры Exchange Online в локальной среде Exchange.

Чтобы найти в своей среде роли (если таковые имеются), которые содержат командлет или параметры, замените <Cmdlet> и (необязательно) значения, которые вы хотите использовать, и выполните следующую команду: <Parameter1>,<Parameter2>,...

Get-ManagementRoleEntry -Identity *\<Cmdlet> [-Parameters <Parameter1>,<Parameter2>,...]

Совет

Вы можете использовать подстановочные знаки (*) в командлетах и именах параметров (например, *-Mailbox*).

Если команда возвращает ошибку с сообщением о том, что объект найти не удалось, значит в вашей среде недоступны командлет или параметры.

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

$na = Get-ManagementRole; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}

Включение областей ролей управления

Области ролей управления (в частности, области записи) определяют, где могут работать командлеты. Например, для всей организации или только для определенных объектов пользователей.

Чтобы включить сведения об области в раздел "Используйте PowerShell для поиска разрешений, необходимых для запуска выходных данных командлета", добавьте *Scope* вторую команду:

$Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-List Role,RoleAssigneeType,RoleAssigneeName,*Scope*}

Подробные сведения об областях ролей управления см. в разделе Общие сведения об областях ролей управления.

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

Чтобы просмотреть все роли, назначенные определенному пользователю, замените их <UserIdentity> именем, псевдонимом или адресом электронной почты пользователя и выполните следующую команду:

Get-ManagementRoleAssignment -RoleAssignee <UserIdentity> -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType

Например, вы можете:

Get-ManagementRoleAssignment -RoleAssignee julia@contoso.com -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType

Совет

Параметр RoleAssignee возвращает как прямые назначения ролей пользователям (редко), так и косвенные назначения ролей, предоставленные пользователю через его членство в группах ролей.

Поиск всех пользователей с определенной ролью

Чтобы увидеть всех пользователей, которым назначена определенная роль, замените <Role name> ее именем и выполните следующую команду:

Get-ManagementRoleAssignment -Role "<Role name>" -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod

Например, вы можете:

Get-ManagementRoleAssignment -Role "Mailbox Import Export" -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod

Поиск участников группы ролей

Чтобы просмотреть участников определенной группы ролей, замените <Role group name> их именем группы ролей и выполните следующую команду:

Get-RoleGroupMember "<Role group name>"

Например, вы можете:

Get-RoleGroupMember "Organization Management"

Совет

Чтобы просмотреть имена всех доступных групп ролей, запустите Get-RoleGroup.