Содержание

Права на почтовый ящик

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

Get-MailboxPermission

Get-ADPermission

Сравнительная таблица

Критерий Get-MailboxPermission Get-ADPermission
Уровень База Exchange (Information Store) Active Directory (объект пользователя/почтового ящика)
Что регулирует Доступ к содержимому почтового ящика Делегирование действий над объектом в AD
Типичные права FullAccess, DeleteItem, ChangeOwner Send As, Receive As, User-Change-Password
Где применяются Outlook, OWA, ActiveSync AD, Transport, делегирование администрирования
Видимость в ECP Только Full Access Только Send As и Send on Behalf

Вывод

Соответствие прав в Exchange

PowerShell (`Get-MailboxPermission`) Что это значит Как отображается в ECP/EAC
FullAccess Полный доступ к ящику (чтение, создание, удаление писем, работа с папками) ✅ Отображается как Full Access
SendAs (через `Get-ADPermission`) Отправка писем как владелец ящика ✅ Отображается как Send As
SendOnBehalf (через `Set-Mailbox`) Отправка писем "от имени" ✅ Отображается как Send on Behalf
DeleteItem Удаление элементов ❌ Не отображается в ECP
ReadPermission Чтение ACL (просмотр прав) ❌ Не отображается в ECP
ChangePermission Изменение прав других пользователей на ящик ❌ Не отображается в ECP
ChangeOwner Изменение владельца объекта ❌ Не отображается в ECP

Вывод

В консоли ECP/EAC отображаются только три типа прав:

Все остальные детализированные права (`DeleteItem`, `ReadPermission`, `ChangePermission`, `ChangeOwner`) видны только через PowerShell (`Get-MailboxPermission`, `Get-ADPermission`) и в ECP/EAC не показываются.

Когда появляются нестандартные права

Такие права в ACL могут появляться в следующих случаях:

⚠️ Важно: Наличие `DeleteItem`, `ChangeOwner` и подобных прав не всегда критично, но для «чистого» администрирования Exchange лучше опираться только на поддерживаемые сценарии: *Full Access*, *Send As*, *Send on Behalf*.

Нестандартные права (не видны в ECP/EAC)

1) Права из Get-MailboxPermission (кроме FullAccess)

Показываем только детальные ACL-права на сам ящик: DeleteItem, ReadPermission, ChangePermission, ChangeOwner.

# Замените user@domain на нужный ящик
Get-MailboxPermission -Identity user@domain |
  Where-Object {
      -not $_.IsInherited -and
      $_.User -notin 'NT AUTHORITY\SELF','NT AUTHORITY\SYSTEM','S-1-5-32-544','S-1-5-18' -and
      ($_.AccessRights -match 'DeleteItem|ReadPermission|ChangePermission|ChangeOwner')
  } |
  Select-Object Identity, User, Deny, AccessRights, InheritanceType |
  Format-Table -Auto

Пояснения:

2) Права из Get-ADPermission (кроме Send As / Send on Behalf)

Показываем расширенные права на объекте пользователя в AD, которые не видны в ECP.

# DistinguishedName почтового ящика
$dn = (Get-Mailbox -Identity user@domain).DistinguishedName
 
Get-ADPermission -Identity $dn |
  Where-Object {
      -not $_.IsInherited -and
      $_.ExtendedRights -and
      $_.User -notin 'NT AUTHORITY\SELF','NT AUTHORITY\SYSTEM' -and
      # Исключаем то, что видно в ECP/EAC:
      ($_.ExtendedRights -notcontains 'Send-As') -and
      ($_.ExtendedRights -notcontains 'Send on behalf') -and
      ($_.ExtendedRights -notcontains 'ms-Exch-Send-As') # встречается в старых средах
  } |
  Select-Object ObjectDN, User, Deny, @{n='ExtendedRights';e={$_.ExtendedRights -join ','}}, InheritanceType |
  Format-Table -Wrap

Примечание:

3) Функция: единый отчёт по «не-ECP» правам

function Get-NonEcpMailboxAcls {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string]$Identity
    )
 
    $mailbox = Get-Mailbox -Identity $Identity -ErrorAction Stop
    $dn = $mailbox.DistinguishedName
 
    $systemUsers = @('NT AUTHORITY\SELF','NT AUTHORITY\SYSTEM','S-1-5-32-544','S-1-5-18')
 
    $aclMailbox = Get-MailboxPermission -Identity $mailbox.Identity | Where-Object {
        -not $_.IsInherited -and
        $_.User -notin $systemUsers -and
        ($_.AccessRights -match 'DeleteItem|ReadPermission|ChangePermission|ChangeOwner')
    } | Select-Object @{n='Scope';e={'MailboxPermission'}},
                     @{n='Target';e={$mailbox.Identity}},
                     User, Deny, @{n='Right';e={($_.AccessRights -join ',')}}, InheritanceType
 
    $aclAd = Get-ADPermission -Identity $dn | Where-Object {
        -not $_.IsInherited -and
        $_.ExtendedRights -and
        $_.User -notin $systemUsers -and
        ($_.ExtendedRights -notcontains 'Send-As') -and
        ($_.ExtendedRights -notcontains 'ms-Exch-Send-As') -and
        ($_.ExtendedRights -notcontains 'Send on behalf')
    } | Select-Object @{n='Scope';e={'ADPermission'}},
                      @{n='Target';e={$dn}},
                      User, Deny, @{n='Right';e={($_.ExtendedRights -join ',')}}, InheritanceType
 
    $result = @($aclMailbox + $aclAd)
    if ($result.Count -eq 0) {
        Write-Host "Не найдено нестандартных прав, не отображаемых в ECP/EAC." -ForegroundColor Green
    } else {
        $result | Sort-Object Scope, User | Format-Table -Auto
    }
}

4) Подсказки