Управление доступом на основе ролей для приложений в Exchange Online
В этой статье описывается использование детализированного и масштабируемого управления доступом на уровне ресурсов: управление доступом на основе ролей (RBAC) для приложений в Exchange Online.
Обзор
RBAC для приложений в Exchange Online позволяет администраторам предоставлять разрешения приложению, которое независимо обращается к данным в Exchange Online. Это предоставление можно связать с областью доступа (областью ресурса), чтобы указать, к каким почтовым ящикам может обращаться приложение. Эта функция расширяет текущую модель RBAC в Exchange Online и заменяет политики доступа к приложениям.
Примечание.
Служба автообнаружения недоступна при использовании ролей приложения RBAC. Если вам нужно выполнять запросы автообнаружения в Exchange Online, используйте разрешения Microsoft Entra ID с политикой доступа к приложениям , чтобы ограничить доступ к почтовым ящикам.
В основе этой системы лежит конфигурация назначения ролей управления, которая выражает намерение администратора разрешить субъекту доступ к данным. В этом случае приложение может выполнять определенную роль по отношению к набору целевых ресурсов. Например, администратор может настроить систему бронирования помещений с доступом к данным календаря только в определенных регионах с помощью области управления. См. схему ниже, иллюстрируя модель назначения ролей:
Инструкции по настройке
Ниже приведены инструкции по созданию этих назначений RBAC для приложений:
- Создание новой области ресурсов (необязательно)
- Создание указателя на субъект-службу Microsoft Entra
- Выберите соответствующую роль приложения
- Создание назначения новой роли
- Тестирование нового субъекта-службы
Требования
Группа ролей "Управление организацией " имеет делегированное назначение роли для новых ролей RBAC приложения. Чтобы назначить эти разрешения, необходимо быть членом группы ролей Управление организацией. Кроме того, можно использовать Exchange Online RBAC для предоставления делегированных назначений этим ролям приложений по своему назначению. Для назначения этих разрешений в Microsoft Entra ID требуется роль администратора Exchange.
Определение области ресурсов
- Области управления:Сущность Exchange , представляющая набор почтовых ящиков с помощью выражения фильтра для свойств этих почтовых ящиков.
- Единицы администрирования: Ресурс Microsoft Entra, который может быть контейнером для других ресурсов Microsoft Entra, содержащих только группы пользователей или устройства. Дополнительные сведения см. в разделах Административные единицы в Идентификаторе Microsoft Entra и Создание или удаление административных единиц.
Области управления
Области управления позволяют администратору ограничить набор почтовых ящиков на основе свойств этих объектов. Сведения о добавлении, удалении, настройке см. в документации по области управления. Ниже приведен список фильтруемых свойств в области управления.
Примечание.
Хотя существует свойство с именем Административные единицы, рекомендуется использовать собственный параметр Admin Units для назначения роли, чтобы избежать создания области в качестве промежуточного объекта указателя.
Субъекты-службы
Субъекты-службы представляют экземпляр приложения в клиенте. Субъект-служба в Exchange следует рассматривать как указатель на существующий субъект-службу в идентификаторе Microsoft Entra. Субъекты-службы нельзя создавать напрямую с помощью средств Exchange Online. Средства Microsoft Entra используются для управления регистрациями субъектов-служб в клиентах. Exchange предотвращает создание недопустимого указателя и автоматически отражает любые удаления субъектов-служб в идентификаторе Microsoft Entra.
Новый субъект-служба
New-ServicePrincipal -AppId <Client Application ID in AAD> -ObjectId <Service principal object ID in AAD> -DisplayName <name>
На следующем снимке экрана показано, как найти эти идентификаторы в идентификаторе Microsoft Entra:
Примечание.
Не используйте идентификаторы со страницы Регистрация приложений, так как на ней отображаются разные значения. Красным контуром "Идентификатор приложения" является AppID, а "Идентификатор объекта" — ServiceID.
Вы можете использовать другой подход для поиска этих идентификаторов с помощью Get-MgServicePrincipal.
Удаление субъекта-службы
Remove-ServicePrincipal -Identity <ObjectID, AppID, or DisplayName>
Настройка субъекта-службы
Set-ServicePrincipal -Identity <ObjectID, AppID, or DisplayName > -DisplayName <Updated name>
Роли приложения
Роли приложения — это особый тип роли управления в Exchange Online, которую можно назначить только приложению. Эти роли можно перечислить с помощью Get-ManagementRole.
Назначения ролей
Назначения ролей управления связывают между собой субъект, роль и область доступа к пользовательскому ресурсу. Это назначение выступает в качестве назначения разрешений для субъекта-службы, выполняющего роль в области.
Назначение новой роли
New-ManagementRoleAssignment [[-Name] <String>] -Role <RoleIdParameter> -App <ObjectID, AppID, or DisplayName> -CustomResourceScope <Management Scope> (or -RecipientAdministrativeUnitScope)
Задание назначения ролей
Set-ManagementRoleAssignment [-Identity] <RoleAssignmentIdParameter> -CustomResourceScope <Management Scope> (or -RecipientAdministrativeUnitScope)
Удаление назначения ролей
Сведения об удалении назначения ролей см. в разделе Удаление назначения управления.
Проверка авторизации
Командлет теста можно использовать для имитации поведения, включенного назначениями RBAC для конкретного субъекта-службы.
Примечание.
Этот метод исключает разрешения, которые могут предоставляться отдельно в идентификаторе Microsoft Entra.
При тестировании авторизации можно включить необязательный параметр ресурса, чтобы оценить, какие разрешения области применяются к целевому почтовому ящику.
InScope will = true or false
значение , если значение true, что разрешение применяется к данному почтовому ящику для этого субъекта-службы, или значение false, что субъект-служба имеет это разрешение, но не относится к конкретному почтовому ящику. Пропуск этого флага приведет к тому, что "Не выполняется".
Результаты теста всегда включают разрешенную область ресурсов для определенного назначенного разрешения.
Проверка доступа к субъекту-службе
Test-ServicePrincipalAuthorization -Identity <ObjectID, AppID, or DisplayName> [-Resource] <target mailbox>
Примеры
После использования Connect-ExchangeOnline в PowerShell выполните следующие действия.
Пример 1. Настройка доступа на чтение календаря для канадских сотрудников с помощью области управления
New-ServicePrincipal -AppId 71487acd-ec93-476d-bd0e-6c8b31831053 -ObjectId 6233fba6-0198-4277-892f-9275bf728bcc -DisplayName "example"
DisplayName ObjectId AppId
----------- --------- -----
example 6233fba6-0198-4277-892f-9275bf728bcc 71487acd-ec93-476d-bd0e-6c8b3183105
New-ManagementScope -Name "Canadian employees" -RecipientRestrictionFilter "CustomAttribute1 -eq '012332'"
Name ScopeRestrictionType Exclusive RecipientRoot RecipientFilter
---- -------------------- --------- ------------- ---------------
Canadian employees RecipientScope False CustomAttribute1 -eq '012332'
New-ManagementRoleAssignment -App 6233fba6-0198-4277-892f-9275bf728bcc -Role "Application Calendars.Read" -CustomResourceScope "Canadian Employees"
Name Role RoleAssigneeName RoleAssigneeType AssignmentMethod
---- ---- ---------------- ---------------- ----------------
Application Calendar... Application Ca... 6233fba6-0198-... ServicePrincipal Direct
Пример 2. Настройка Mail.Read для всех почтовых ящиков подразделения администрирования в Европе
New-ServicePrincipal -AppId eb19847b-5563-42ea-b719-ea47cb0cf4b3 -ObjectId 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 -DisplayName "example"
DisplayName ObjectId AppId
----------- --------- -----
example 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 eb19847b-5563-42ea-b719-ea47cb0cf4b3
New-ManagementRoleAssignment -App 59b7c6cb-58d3-4ee8-a409-8c1f9dbb5d36 -Role "Application Mail.Read" -RecipientAdministrativeUnitScope 4d819ce9-9257-44d7-af20-68a49e6697f4
Name Role RoleAssigneeName RoleAssigneeType AssignmentMethod
---- ---- ---------------- ---------------- ----------------
Application Mail.Rea... Application Ma... 59b7c6cb-58d3-... ServicePrincipal Direct
Пример 3. Тестирование разрешений, назначенных субъекту-службе
Test-ServicePrincipalAuthorization -Resource b -Identity "DemoB" | Format-Table
RoleName GrantedPermissions AllowedResourceScope ScopeType InScope
-------- ------------------ -------------------- --------- ------
Application Mail.Read Mail.Read Scope-MESGaDN CustomRecipientScope False
Application Calendars.Read Calendars.Read Scope-DL1 CustomRecipientScope False
Application Contacts.Read Contacts.Read Scope-MESGa CustomRecipientScope False
Ограничения
- Приложения не могут входить в группу ролей.
- Роли приложений могут назначаться только субъектам-службам.
- Роли приложения невозможно скопировать или получить.
- Монопольные области управления не ограничивают доступ к приложениям.
- Изменения разрешений приложения подлежат обслуживанию кэша, которое варьируется от 30 минут до 2 часов в зависимости от недавнего использования приложения. При тестировании конфигураций команда теста обходит этот кэш. Для приложения без входящих вызовов API кэш сбрасывается через 30 минут, тогда как активно используемое приложение будет поддерживать кэш в течение 2 часов.
Поддерживаемые протоколы
- Microsoft Graph
- EWS
Поддерживаемые роли приложения
Имя | Протокол | Список разрешений | Описание |
---|---|---|---|
Приложение Mail.Read | Microsoft Graph | Mail.Read | Позволяет приложению читать электронную почту во всех почтовых ящиках без вошедшего пользователя. |
Приложение Mail.ReadBasic | Microsoft Graph | Mail.ReadBasic | Позволяет приложению читать сообщения электронной почты, кроме текста, previewBody, вложений и любых расширенных свойств во всех почтовых ящиках без вошедшего пользователя. |
Application Mail.ReadWrite | Microsoft Graph | Mail.ReadWrite | Позволяет приложению создавать, читать, обновлять и удалять сообщения электронной почты во всех почтовых ящиках без вошедшего пользователя. Не включает разрешение на отправку почты. |
Application Mail.Send | Microsoft Graph | Mail.Send | Позволяет приложению отправлять почту от имени любого пользователя в случаях, когда вход пользователя не предусмотрен. |
Application MailboxSettings.Read | Microsoft Graph | MailboxSettings.Read | Позволяет приложению считывать параметры почтового ящика пользователя во всех почтовых ящиках без вошедшего пользователя. |
Application MailboxSettings.ReadWrite | Microsoft Graph | MailboxSettings.ReadWrite | Позволяет приложению создавать, считывать, обновлять и удалять параметры почтового ящика пользователя во всех почтовых ящиках без вошедшего пользователя. |
Календари приложений.Чтение | Microsoft Graph | Calendars.Read | Позволяет приложению считывать события во всех календарях в случаях, когда вход пользователя не предусмотрен. |
Календари приложений.ReadWrite | Microsoft Graph | Calendars.ReadWrite | Позволяет приложению создавать, считывать, обновлять и удалять события во всех календарях в случаях, когда вход пользователя не предусмотрен. |
Контакты приложения.Чтение | Microsoft Graph | Contacts.Read | Позволяет приложению считывать все контакты во всех почтовых ящиках в случаях, когда вход пользователя не предусмотрен. |
Application Contacts.ReadWrite | Microsoft Graph | Contacts.ReadWrite | Позволяет приложению создавать, считывать, обновлять и удалять все контакты во всех почтовых ящиках в случаях, когда вход пользователя не предусмотрен. |
Полный доступ к почте приложения | Microsoft Graph | Mail.ReadWrite, Mail.Send | Позволяет приложению создавать, читать, обновлять и удалять сообщения электронной почты во всех почтовых ящиках и отправлять почту от имени любого пользователя, не выполнившего вход. |
Полный доступ к Application Exchange | Microsoft Graph | Mail.ReadWrite, Mail.Send, MailboxSettings.ReadWrite, Calendars.ReadWrite, Contacts.ReadWrite | Без вошедшего пользователя. Позволяет приложению создавать, читать, обновлять и удалять сообщения электронной почты во всех почтовых ящиках и отправлять почту как любому пользователю. Позволяет приложению создавать, считывать, обновлять и удалять параметры почтового ящика пользователя во всех почтовых ящиках. Позволяет приложению создавать, считывать, обновлять и удалять события всех календарей. Позволяет приложению создавать, читать, обновлять и удалять все контакты во всех почтовых ящиках. |
EWS приложения. AccessAsApp | EWS | EWS. AccessAsApp | Позволяет приложению использовать веб-службы Exchange с полным доступом ко всем почтовым ящикам. |
Вы можете заметить, что эти роли представляют разрешения Microsoft Graph, на которые можно предоставить согласие в другом месте на платформе удостоверений Azure. Эти разрешения будут иметь тот же эффект, что и разрешения Graph, за исключением этих назначений ролей, что обеспечивает детализированный доступ к ресурсам.
Вопросы и ответы
Почему мое приложение по-прежнему имеет доступ к почтовым ящикам, которые не предоставляются с помощью RBAC?
Необходимо убедиться, что вы удалили разрешения на уровне клиента, назначенные в идентификаторе Microsoft Entra. Разрешения, назначенные с помощью RBAC, действуют в дополнение к предоставленным вами разрешениям в идентификаторе Microsoft Entra. Разрешения Microsoft Entra можно ограничить только с помощью политик доступа к приложениям.
Как просмотреть и изменить все разрешения приложений в одном интерфейсе?
Чтобы администраторы имели консолидированное представление разрешений приложений, мы будем просматривать эти разрешения, предоставленные в Exchange Online, в интерфейсе администрирования Microsoft Entra. Эта функция ожидается, следите за новостями.
Как перейти с политик доступа к приложениям на RBAC для приложений?
С помощью политик доступа к приложениям у вас есть субъект-служба, согласие на разрешения в Azure и политика, связанная с субъектом-службой в Exchange Online. Хотя вы можете изменить структуру механизма определения области любым способом, который подходит вам с помощью областей управления Exchange или административных единиц, ниже приведены некоторые рекомендации по повторному использованию групп в политике доступа к приложениям в качестве области предоставления RBAC для приложений. Этот процесс не приведет к прерыванию использования приложения.
Этапы миграции.
- Создайте новую область управления, которая указывает на группу области из политики доступа к приложениям.
- Создание объекта указателя субъекта-службы
- Назначение необходимых разрешений субъекту-службе в Exchange Online с ограничением области управления
- Удаление согласия на разрешение в Azure
- Удаление политики доступа к приложениям
При создании области управления на шаге 1 вы будете использовать фильтр получателей с параметром MemberOfGroup
фильтра .
Вот пример: MemberOfGroup -eq 'CN=mesga20220818210551,OU=Fabrikam346.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=NAMPR00A001,DC=prod,DC=outlook,DC=com'"
Примечание.
Этот параметр фильтра использует различающееся имя группы, которое можно найти с помощью командлетов Get-Group.
Ограничения:
- Вложенные члены группы считаются вне области действия. Только прямое членство в группе приводит к тому, что участник рассматривается в области авторизации.
- Поддерживаются группы Microsoft 365, группы безопасности Mail-Enabled и списки рассылки.
Как RBAC для приложений работает вместе с политиками доступа к приложениям?
Совместимость с политикой доступа к приложениям
RBAC для приложений заменяет политики доступа к приложениям.
Взаимодействие авторизации можно описать следующим образом:
Политики доступа к приложениям ограничивают только разрешения, назначенные в Идентификаторе Microsoft Entra.
RBAC для приложений предлагает альтернативное выражение авторизации со связанной областью ресурса.
Приложение может иметь как разрешения Microsoft Entra, так и назначения RBAC. Мы ожидаем этот случай, когда приложение имеет mail.Read и Mail.Send с областью действия клиента, например.
Разрешения являются аддитивными.
Пример 1. Согласия от двух систем
- Приложение имеет Mail.Read в Microsoft Entra ID
- Это приложение относится к группе безопасности 1 с поддержкой почты с помощью политики доступа к приложениям.
- В том же приложении есть согласие Calendar.Readed for Management Scope 1 in RBAC for Applications
- Почтовый ящик A находится в группе безопасности с поддержкой почты 1
- Почтовый ящик B находится в области управления 1
Доступ MS Graph к конечной точке, для которой требуется как Mail.Read, так и Calendar.Read для приложения 1:
- Нацеливание на почтовый ящик A: сбой
- Назначение почтового ящика B: сбой
Этой конечной точке требуется как Mail.Read, так и Calendar.Read. Хотя приложение имеет эти разрешения по отдельности для двух отдельных почтовых ящиков, оно не имеет обоих разрешений для одного почтового ящика.
Пример 2. Назначение одного и того же разрешения дважды
- Приложение имеет Mail.Read в Microsoft Entra ID
- Это приложение относится к группе безопасности 1 с поддержкой почты с помощью политики доступа к приложениям.
- В том же приложении есть согласие Mail.Read для области управления 1 с помощью RBAC для приложений
- Почтовый ящик A находится в группе безопасности с поддержкой почты 1
- Область управления 1 позволяет получить доступ к каждому почтовому ящику, кроме почтового ящика A (в соответствии с некоторыми фильтрами, такими как "Псевдоним -ne mbxa"))
Доступ MS Graph к конечной точке, для которой требуется Mail.Read для приложения 1:
- Нацеливание на почтовый ящик A: разрешить
- Назначение почтового ящика B: разрешить
В то время как Mail.Read от Microsoft Entra-only разрешает доступ к почтовому ящику A, назначение RBAC разрешает доступ ко всем, кроме A. По сути, это обеспечивает доступ ко всему, потому что "A и не A" означает все.
Хотя мы изложили эти пограничные варианты для полноты, мы не ожидаем, что политики доступа к приложениям обычно используются с RBAC для приложений. Разрешения на уровне клиента должны назначаться в идентификаторе Microsoft Entra, а разрешения на уровне ресурсов должны предоставляться с помощью RBAC для приложений.
Сколько приложений поддерживает RBAC для приложений?
Вы можете использовать до 10 000 приложений на клиент с помощью RBAC для приложений. Сообщите нам, является ли это ограничение проблемой для вас. Мы создали RBAC для приложений в высокомасштабируемом способе, чтобы удовлетворить потребности наших крупнейших клиентов.
Отзыв об этой функции
Отзывы об этой функции можно предоставить с помощью exoapprbacpreview@microsoft.com.