Права на почтовый ящик
Права на почтовый ящик можно посмотреть с помощью двух командлетов
- Get-MailboxPermission
- Get-ADPermission
Get-MailboxPermission
- Работает с правами на сам почтовый ящик в базе Exchange (Information Store).
- Определяет, кто может открывать ящик и работать с его содержимым.
- Типичные права:
- FullAccess — полный доступ.
- DeleteItem — удаление элементов.
- ReadPermission — просмотр ACL.
- ChangePermission / ChangeOwner — изменение делегирования.
Get-ADPermission
- Работает с правами на объект почтового ящика в Active Directory.
- Определяет, кто может делегировать администрирование или выполнять действия в AD/Exchange.
- Типичные права:
- Send As — отправка писем как владелец.
- Receive As — приём писем как владелец (обычно на БД).
- User-Change-Password / Reset Password — смена или сброс пароля.
- ms-Exch-Store-Admin и другие расширенные права.
Сравнительная таблица
Критерий | 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 |
Вывод
- Get-MailboxPermission — показывает, кто может открыть чужой ящик и работать с письмами.
- Get-ADPermission — показывает, кто может отправлять письма как пользователь, менять пароль или администрировать объект в AD.
Соответствие прав в 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 отображаются только три типа прав:
- Full Access
- Send As
- Send on Behalf
Все остальные детализированные права (`DeleteItem`, `ReadPermission`, `ChangePermission`, `ChangeOwner`) видны только через PowerShell (`Get-MailboxPermission`, `Get-ADPermission`) и в ECP/EAC не показываются.
Когда появляются нестандартные права
Такие права в ACL могут появляться в следующих случаях:
- После миграции почтовых ящиков из старых версий Exchange или сторонних систем.
- Когда права назначались напрямую через Active Directory (например, через вкладку Security в ADSI Edit или вручную администратором).
- При использовании сторонних скриптов/инструментов, которые изменяют ACL объекта ящика.
- В результате наследования прав от контейнеров AD (организационные единицы, групповые политики безопасности).
- В редких случаях — как "хвосты" после удаления или изменения делегатов.
⚠️ Важно: Наличие `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
Пояснения:
- Исключаем наследованные ACE (`-not $_.IsInherited`).
- Фильтруем «системных» субъектов (SELF, SYSTEM, локальные SID’ы).
- Оставляем только те права, которых нет в ECP: DeleteItem, ReadPermission, ChangePermission, ChangeOwner.
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
Примечание:
- Здесь «нестандартные» — всё, что не Send As / Send on Behalf (их ECP показывает), но попадает в ExtendedRights.
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) Подсказки
- Если видите неожиданные права — проверьте, не пришли ли они после миграции/скриптов/наследования.
- Права Receive As (на БД/сервер) в ECP у конкретного ящика не показываются — их проверяйте на объекте БД/сервера.