В этой статье мы рассмотрим, как управлять доступом к почтовым ящикам и отдельным папкам в on-premises Exchange и Microsoft 365 (Exchange Online). По принципы и команды PowerShell для управления доступом к ящикам и папкам в наземном и облачном Exchange практически не отличаются (за исключением отличий в графическом интерфейсе EAC), поэтому я решил собрать всю необходимую информацию для системного администратора в одной статье.
В Exchange (как on-prem, так и облачном Microsoft 365) есть два уровня назначения прав на почтовые ящики:
- Права на уровне всего ящика – позволяют дать полный доступ к содержимому ящика и отправки писем. На этом уровне можно назначить следующие права Full Access, Send As и Send on Behalf;
- Права на уровне конкретной папки ящика – вы можете гранулировано предоставить доступ к конкретной папке в почтовом ящике пользователя. Например, полные права на управление элементами в папке Календарь и право на просмотр содержимого папки Входящие.
Рассмотрим права уровня ящика подробнее
- Право Send As — разрешает отправлять письма с этого ящика;
- Send on Behalf – право на отправку от имени ящика, когда в поле From виден настоящий отправитель письма;
- Full Access — полные права на доступ ко всем элементам ящика (кроме прав на отправку от имени ящика).
Управление правами доступа к ящику Exchange (Microsoft 365)
Вы можете назначить на почтовый ящик права Full Access, SendAs, и Send on behalf через графический интерфейс EAC. Например, в Microsoft 365 нужно открыть портал Exchange Admin Center (https://admin.exchange.microsoft.com) и перейти в раздел Mailboxes.
- Найдите ящик нужно пользователя;
- Выберите его параметры -> Mailbox permissions -> Manage mailbox delegation;
- В открывшемся окне вы можете посмотреть текущие права доступа к ящику или изменить их.
Настройка прав доступа к ящику Exchange или Microsoft 365 с помощью PowerShell
Как правило, администратор Exchange редко использует портал EAC для управления доступом к ящику. Гораздо быстрее и удобнее управлять правами на ящики пользователей через PowerShell.
Подключитесь к своему серверу Exchange или тенанту Microsoft 365 (Exchange Online):
- Вы можете удаленно подключиться к on-prem серверу Exchange из консоли PowerShell без установки Exchange Management Tools:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://msk-exch1.winitpro.ru/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session - Для подключения с Microsoft 365 с учетной записью с включенной мультифакторной аутентификацией (MFA) используйте подключения модуль Exchange Online PowerShell):
Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true
Например, для предоставления полного доступа к общему ящику, чтобы пользователи могли видеть его содержимое и отправлять письма, нужно предоставить права Full Access и Send As.
Данная команда предоставит полные права на ящик maxadm для HenriettaM и разрешит автоматическое подключение ящика в Outlook:
Add-MailboxPermission -Identity [email protected] -User [email protected] -AccessRights FullAccess -AutoMapping:$true -InheritanceType All
Следующая PowerShell команда используется для предоставления прав на отправку писем:
Add-RecipientPermission [email protected] -AccessRights SendAs -Trustee [email protected]
Чтобы предоставить право SendOnBehalf, выполните:
Get-Mailbox [email protected] | Set-Mailbox -GrantSendOnBehalfTo [email protected]
Можно предоставить права сразу нескольким пользователям. Например, назначим пользователю права SendAs на все ящики из определенного департамента:
Get-Recipient -Filter {(Department -eq "R&D")} | Add-RecipientPermission -AccessRights SendAs –Trustee [email protected]
Или предоставим полные права на общий ящик для всех членов определённой группы рассылки:
$Members = Get-DistributionGroupMember -id MSKmarketing
ForEach ($Member in $Members)
{
Add-RecipientPermission John -AccessRights SendAs –Trustee $Member.name
Add-MailboxPermission -Identity [email protected] -User $Member.name -AccessRights FullAccess -AutoMapping:$true -InheritanceType All
}
Вывести список пользователей, у которых есть полные права на почтовый ящик:
get-mailboxpermission -identity [email protected] |ft -AutoSize
Получить полный отчет со списком пользователей, у которых есть права FullAccess на любые другие ящики в тенанте (организации) Exchange:
Get-Mailbox|Get-MailboxPermission | where {($_.AccessRights -like 'Full*') -and ($_.User -notlike "nt authority\self")} | Format-Table -Auto User,Deny,IsInherited,AccessRights
Отчет по правам SendOnBehalf:
Get-Mailbox –ResultSize Unlimited | Where {$_.GrantSendOnBehalfTo -ne $null} | Select UserprincipalName,GrantSendOnBehalfTo
Вывести список пользователей с правами SendAs на ящике:
Get-RecipientPermission [email protected]
Вывести пользователей организации, на которых есть права SendAs у указанного пользователя:
Get-Recipient | Get-RecipientPermission -Trustee [email protected] | Select Identity, Trustee, AccessRights
Удалить для пользователя права SendAs на все ящики в организации:
Get-Recipient | Remove-RecipientPermission -AccessRights SendAs –Trustee [email protected]
Лишить пользователя доступа к почтовому ящику:
Remove-MailboxPermission -identity [email protected] -accessrights:fullaccess -user [email protected]
Управление правами на папки в почтовом ящике Exchange (Microsoft 365)
Вы можете предоставить пользователям права доступа к любой папке внутри почтового ящика. Например, вы можете разрешить определенному пользователю просматривать содержимое папки Inbox и редактировать любые элементы в папке Календарь.
Пользователь может самостоятельно предоставить доступ к папке другому пользователю через Outlook или OWA. Просто щелкните по имени папки и выберите Permissions.
Перед вами появится форма, на которой отображены текущие права доступа пользователей к данной папке. Здесь же можно предоставить доступа другим пользователям. Нажмите кнопку + и укажите имя пользователя, которому нужно предоставить доступ.
Вы можете выбрать уровень доступа к папке. Можно выбрать одну из предустановленных ролей или назначить конкретное разрешение.
Доступны следующие роли (как коллекции указанных разрешений):
Роль | Разрешения в роли |
---|---|
Author | CreateItems, DeleteOwnedItems, EditOwnedItems, FolderVisible, ReadItems |
Contributor | CreateItems, FolderVisible |
Editor | CreateItems, DeleteAllItems, DeleteOwnedItems, EditAllItems, EditOwnedItems, FolderVisible, ReadItems |
None | FolderVisible |
NonEditingAuthor | CreateItems, FolderVisible, ReadItems |
Owner | CreateItems, CreateSubfolders, DeleteAllItems, DeleteOwnedItems, EditAllItems, EditOwnedItems, FolderContact, FolderOwner, FolderVisible, ReadItems |
PublishingEditor | CreateItems, CreateSubfolders, DeleteAllItems, DeleteOwnedItems, EditAllItems, EditOwnedItems, FolderVisible, ReadItems |
PublishingAuthor | CreateItems, CreateSubfolders, DeleteOwnedItems, EditOwnedItems, FolderVisible, ReadItems |
Reviewer | FolderVisible, ReadItems |
AvailabilityOnly | Применяется только к папке Календарь. Позволяет просматривать информацию о доступности Free/Busy |
LimitedDetails | Применяется только к папке Календарь. Просмотр доступности, темы и местоположения |
Список возможных индивидуальных разрешений:
- CreateItems
- CreateSubfolders
- DeleteAllItems
- DeleteOwnedItems
- EditAllItems
- EditOwnedItems
- FolderContact
- FolderOwner
- FolderVisible
- ReadItems
Администратор Exchange может предоставить права на любую папку пользователя с помощью PowerShell. Следующая команда выведет список доступных папок в ящике пользователя:
Get-MailboxFolder -Identity [email protected] -Recurse
Можно получить список назначенных разрешений на определенную папку в ящике:
Get-MailboxFolderPermission -Identity "[email protected]:\Inbox"
Следующая команда предоставит право на просмотр списка папок в ящике:
Add-MailboxFolderPermission -Identity [email protected]:\ -User [email protected] -AccessRights Reviewer
Эти разрешение не наследуются вниз по иерархии папок.
Чтобы предоставить права на просмотр содержимого папки Inbox, выполните:
Add-MailboxFolderPermission -Identity "[email protected]:\Inbox" -User [email protected] -AccessRights Reviewer
Или полные права на календарь:
Add-MailboxFolderPermission -Identity [email protected]:\Calendar -User [email protected] -AccessRights Editor
Чтобы удалить права на доступ к папке в ящике, используется команда:
Remove-MailboxFolderPermission -Identity "[email protected]:\Inbox" –user [email protected]