Контроль доступа на основе ролей для приложений в Exchange Online

В этой статье описывается использование детального и масштабируемого управления доступом на уровне ресурсов: Ролевой контроль доступа (RBAC) для приложений в Exchange Online.

Обзор

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

В основе этой системы лежит конфигурация назначений ролей управления, которая выражает намерение администратора предоставить субъекту доступ к данным. В данном случае разрешение приложению выполнять некоторую роль по отношению к набору целевых ресурсов. Например, администратор может настроить систему бронирования помещений с доступом к данным календаря только в определенных регионах, используя область управления. На следующей схеме показана модель назначения ролей.

Схема модели назначения ролей с примером.

Инструкции по настройке

Для создания этих назначений RBAC приложений можно выполнить следующие действия.

  1. Создание новой области ресурса (необязательно)
  2. Создание указателя на субъект-службу Microsoft Entra
  3. Выберите подходящую роль приложения
  4. Создание назначения роли
  5. Тестирование нового субъекта-службы

Требования

Группе ролей управления организацией назначены делегированные роли для новых ролей RBAC приложений. Чтобы назначить эти разрешения, необходимо быть участником группы ролей "Управление организацией". Кроме того, вы можете использовать RBAC Exchange Online, чтобы делегировать назначения этим ролям приложений по своему усмотрению. В Microsoft Entra ID вам необходима роль администратора Exchange для назначения этих разрешений.

Определение области ресурса

Области управления

Области управления позволяют администратору определять области почтовых ящиков на основе свойств этих объектов. Сведения о добавлении, удалении, установке см. в документации по области управления. Ниже приведен список фильтруемых свойств в области управления.

Примечание.

Хотя существует свойство с названием "Административные единицы", мы рекомендуем использовать собственный параметр Администратор Units в назначении роли, чтобы избежать создания область в качестве промежуточного объекта-указателя.

Субъекты-службы

Субъекты-службы представляют собой экземпляр приложения в организации. Следует рассматривать субъект-службу в Exchange как указатель на существующий субъект-службу в Microsoft Entra ID. Субъекты-службы нельзя создать напрямую с помощью средств Exchange Online. Средства Microsoft Entra используются для управления регистрацией субъектов-служб в организациях. Exchange предотвращает создание недопустимого указателя и автоматически отражает удаление субъектов-служб в Microsoft Entra ID.

Новый субъект-служба

New-ServicePrincipal -AppId <Client Application ID in AAD> -ObjectId <Service principal object ID in AAD> -DisplayName <name>

Следующий снимок экрана поможет вам найти эти идентификаторы в Microsoft Entra ID:

Снимок экрана: страница приложений Microsoft Entra Enterprise.

Примечание.

Не используйте идентификаторы со страницы регистрации приложений, так как там значения отображаются разные. Выделенный красным цветом "Идентификатор приложения" — это AppID, а "Идентификатор объекта" — идентификатор службы.

Чтобы найти эти идентификаторы, можно использовать другой подход, используя 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 ID.

При проверке авторизации можно включить необязательный параметр ресурса, чтобы оценить, какие ограниченные разрешения применяются к целевому почтовому ящику. InScope will = true or false чтобы указать, применяется ли это разрешение к этому почтовому ящику этого субъекта-службы или false — что субъект-служба имеет это разрешение, но не для этого конкретного почтового ящика. Если этот флажок опущен, отображается сообщение "Не выполняется".

Результаты тестирования всегда включают разрешенную область ресурсов для конкретного назначенного разрешения.

Проверка доступа субъекта-службы

Test-ServicePrincipalAuthorization -Identity <ObjectID, AppID, or DisplayName> [-Resource] <target mailbox>

Примеры

После использования команды Connect-ExchangeOnline в PowerShell выполните следующие действия.

Пример первый: настройка доступа на чтение календаря для пользователей из Канады с использованием области управления

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 users" -RecipientRestrictionFilter "CustomAttribute1 -eq '012332'"

Name                 ScopeRestrictionType      Exclusive      RecipientRoot          RecipientFilter
----                 --------------------      ---------      -------------          ---------------
Canadian users    RecipientScope            False                                CustomAttribute1 -eq '012332'
New-ManagementRoleAssignment -App 6233fba6-0198-4277-892f-9275bf728bcc -Role "Application Calendars.Read" -CustomResourceScope "Canadian users"

Name                      Role                 RoleAssigneeName       RoleAssigneeType        AssignmentMethod
----                      ----                 ----------------       ----------------        ----------------
Application Calendar...   Application Ca...    6233fba6-0198-...      ServicePrincipal        Direct

Пример второй: настройка функции 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

Пример третий. Тестирование разрешений, назначенных субъекту-службе

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 часов в зависимости от недавнего использования приложения. При проверке конфигураций команда test обходит этот кэш. Кэш приложения без входящих вызовов API сбрасывается через 30 минут. Кэш активного приложения сохраняется до 2 часов.

Поддерживаемые протоколы

  • Microsoft Graph
  • EWS

Поддерживаемые роли приложений

Имя Протокол Список разрешений Описание
Application Mail.Read Microsoft Graph Mail.Read Разрешает приложению читать электронную почту во всех почтовых ящиках без вошедшего пользователя.
Application Mail.ReadBasic Microsoft Graph Mail.ReadBasic Приложение может читать сообщения электронной почты, кроме body, 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 Позволяет приложению создавать, читать, обновлять и удалять параметры почтовых ящиков пользователей во всех почтовых ящиках без вошедшего пользователя.
Application Calendars.Read Microsoft Graph Calendars.Read Позволяет приложению считывать события во всех календарях в случаях, когда вход пользователя не предусмотрен.
Application Calendars.ReadWrite Microsoft Graph Calendars.ReadWrite Позволяет приложению создавать, считывать, обновлять и удалять события во всех календарях в случаях, когда вход пользователя не предусмотрен.
Application Contacts.Read Microsoft Graph Contacts.Read Позволяет приложению считывать все контакты во всех почтовых ящиках в случаях, когда вход пользователя не предусмотрен.
Application Contacts.ReadWrite Microsoft Graph Contacts.ReadWrite Позволяет приложению создавать, считывать, обновлять и удалять все контакты во всех почтовых ящиках в случаях, когда вход пользователя не предусмотрен.
Application MailboxFolder.Read Microsoft Graph MailboxFolder.Read.All Позволяет приложению читать папки почтовых ящиков всех пользователей без вошедшего пользователя.
Application MailboxFolder.ReadWrite Microsoft Graph MailboxFolder.ReadWrite.All Позволяет приложению читать и записывать папки почтовых ящиков всех пользователей без вошедшего пользователя.
Application MailboxItem.Read Microsoft Graph MailboxItem.Read.All Позволяет приложению читать все элементы почтовых ящиков пользователей без вошедшего пользователя.
Application MailboxItem.ReadWrite Microsoft Graph MailboxItem.ReadWrite.All Позволяет приложению читать, записывать и удалять все элементы почтовых ящиков пользователей без вошедшего пользователя.
Application MailboxItem.Export Microsoft Graph MailboxItem.Export.All Позволяет приложению экспортировать все элементы почтовых ящиков пользователей без вошедшего пользователя.
Application MailboxItem.ImportExport Microsoft Graph MailboxItem.ImportExport.All Позволяет приложению экспортировать и импортировать все элементы почтовых ящиков пользователей без вошедшего пользователя.
Application Mail Full Access Microsoft Graph Mail.ReadWrite, Mail.Send Позволяет приложению создавать, читать, обновлять и удалять электронную почту во всех почтовых ящиках, а также отправлять почту от имени любого пользователя без вошедшего пользователя.
Application Exchange Full Access Microsoft Graph Mail.ReadWrite, Mail.Send, MailboxSettings.ReadWrite, Calendars.ReadWrite, Contacts.ReadWrite Без вошедшего пользователя: позволяет приложению создавать, читать, обновлять и удалять электронную почту во всех почтовых ящиках, а также отправлять почту от имени любого пользователя. Позволяет приложению создавать, читать, обновлять и удалять параметры почтовых ящиков пользователей во всех почтовых ящиках. Позволяет приложению создавать, читать, обновлять и удалять события всех календарей. Позволяет приложению создавать, читать, обновлять и удалять все контакты во всех почтовых ящиках.
Application EWS.AccessAsApp EWS EWS.AccessAsApp Позволяет приложению использовать веб-службы Exchange с полным доступом ко всем почтовым ящикам.
Application SMTP.SendAsApp Microsoft Graph SMTP.SendAsApp Позволяет приложению использовать отправку клиента SMTP для отправки сообщений в папку "Исходящие" пользователя.
Application MailboxConfigItem.Read Microsoft Graph MailboxConfigItem.Read Разрешает приложению читать объекты UserConfiguration без вошедшего пользователя.
Application MailboxConfigItem.ReadWrite Microsoft Graph MailboxConfigItem.ReadWrite Позволяет приложению читать, записывать, обновлять и удалять объекты UserConfiguration без вошедшего пользователя.
Application MailTips.ReadBasic.All Microsoft Graph MailTips.ReadBasic.All Разрешает приложению доступ только к метаданным подсказок, не раскрывая содержимое электронной почты и не выполняя вход пользователя
Application Mail-Advanced.ReadWrite.All Microsoft Graph Mail-Advanced.ReadWrite.All Позволяет приложению создавать, читать, обновлять и удалять все сообщения электронной почты, включая содержимое нечерновиков в почтовых ящиках пользователей, без пользователя, вошедшего в систему. Сюда не входит разрешение на отправку почты.

Вы можете заметить, что эти роли представляют разрешения Microsoft Graph, на которые вы можете согласиться в другом месте платформы удостоверений Azure. Эти разрешения имеют тот же эффект, что и разрешения Graph, за исключением назначений ролей, позволяющих получить детальный доступ к ресурсам.

Вопросы и ответы

Почему мое приложение по-прежнему имеет доступ к почтовым ящикам, не предусмотренным областью, используемой в приложении Exchange Online RBAC?

Вам необходимо убедиться, что вы удалили неограниченные разрешения для всей организации, назначенные в Microsoft Entra ID. Разрешения, назначенные с помощью RBAC приложений, действуют в дополнение к грантам, которые вы предоставляете в Microsoft Entra ID. Разрешения Microsoft Entra можно ограничить только с помощью политик доступа к приложениям. Другими словами, назначенные разрешения — это операция объединения с разрешениями из Microsoft Entra ID и разрешениями, назначенными в RBAC в Exchange Online. Каждый орган власти может действовать независимо.

Например, если субъект-служба предоставил Mail.Read в Microsoft Entra ID и вы настраиваете разрешение на область Mail.Read ресурса в RBAC приложения, важно удалить назначение Mail.Read из Microsoft Entra ID. В противном случае объединение неограниченного Mail.Read гранта от Microsoft Entra и гранта на основе ресурсов Mail.Read в Application RBAC приводит к неэффективному ограничению ресурсов.

Как просмотреть и изменить все разрешения приложения в одном интерфейсе?

Чтобы обеспечить администраторам консолидированное представление разрешений приложений, мы отображаем эти разрешения, предоставленные в Exchange Online, в интерфейсе администратора Microsoft Entra. Эта функция скоро появится, следите за обновлениями.

Как перейти с политик доступа к приложениям на RBAC для приложений?

Благодаря политикам доступа к приложениям у вас есть субъект-служба, согласие на разрешения в Azure и политика, связанная с субъектом-службой в Exchange Online. Вы можете реструктурировать свой механизм определения области с помощью областей управления Exchange или административных единиц. Ниже приведены некоторые рекомендации по повторному использованию групп в политике доступа к приложениям в качестве область для вашего гранта RBAC для приложений. Этот процесс не приводит к прерыванию использования приложения.

Этапы миграции:

  1. Создайте новую область управления, которая указывает на группу области из политики доступа к приложениям.

  2. Создайте объект указателя субъекта-службы.

  3. Назначьте необходимые разрешения субъекту-службе в Exchange Online с ограничением области управления.

  4. Удаление согласия на разрешение в Azure.

  5. Удалите политику доступа к приложениям.

    При создании области управления на шаге 1 используется фильтр получателей с параметром MemberOfGroupfilter . Пример:

    "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 ID.

  • RBAC для приложений предлагает альтернативное выражение авторизации со связанной областью ресурса.

  • Приложение может иметь как разрешения Microsoft Entra, так и назначения RBAC. Мы ожидаем этого случая, когда приложение имеет (например) всю Mail.Read организацию и область Mail.Send.

  • Согласия на разрешения суммируются.

Пример первый: согласия из 2 систем:

  • У приложения есть Mail.Read Microsoft Entra ID.
  • Это приложение ограничено группой безопасности 1 с поддержкой почты с помощью политики доступа к приложениям.
  • Это же приложение получило Calendar.Read согласие на область управления 1 в RBAC для приложений.
  • Почтовый ящик A входит в группу безопасности 1 с поддержкой почты.
  • Почтовый ящик B находится в области областей управления 1.

Доступ MS Graph к конечной точке, требующей обоих Mail.Read действий, а Calendar.Read также для Приложения 1:

  • Нацеливание на почтовый ящик А: сбой.
  • Нацеливание на почтовый ящик B: сбой.

Для этой конечной точки необходимы оба Mail.Read и .Calendar.Read Хотя у приложения есть эти разрешения по отдельности для двух отдельных почтовых ящиков, у него нет обоих разрешений для одного почтового ящика.

Пример второй: назначение одного и того же разрешения дважды:

  • У приложения есть Mail.Read Microsoft Entra ID.
  • Это приложение ограничено группой безопасности 1 с поддержкой почты с помощью политики доступа к приложениям.
  • Это же приложение предоставило Mail.Read согласие для области управления 1 с помощью RBAC для приложений.
  • Почтовый ящик A входит в группу безопасности 1 с поддержкой почты.
  • Область управления 1 позволяет получить доступ ко всем почтовым ящикам, кроме почтового ящика A (в соответствии с некоторыми фильтрами, такими как Alias -ne mbxa).

Доступ MS Graph к конечной точке, необходимой Mail.Read для Приложения 1:

  • Нацеливание почтового ящика A: разрешить.
  • Адресованный почтовый ящик B: allow.

В Mail.Read то время как из Microsoft Entra только в почтовом ящике A назначение RBAC позволяет получить доступ ко всему, кроме A. По сути, это назначение предоставляет доступ ко всему, потому что «А, а не А» означает все.

Хотя мы описали эти пограничные случаи для полноты картины, мы не ожидаем, что политики доступа к приложениям будут использоваться совместно с RBAC для приложений. Разрешения для всей организации должны назначаться в Microsoft Entra ID, а разрешения на уровне ресурсов следует предоставлять с помощью RBAC для приложений.

Сколько приложений поддерживает RBAC для приложений?

С помощью RBAC для приложений на организацию можно иметь до 10 000 приложений. Сообщите нам, если это ограничение представляет для вас проблему. Мы создали RBAC для приложений с широкими возможностями масштабирования, чтобы удовлетворить потребности наших крупнейших клиентов.

Почему автообнаружение не работает?

В настоящее время нет доступа к службе автообнаружения при использовании ролей приложений RBAC.

Если удалить субъект-службу в Microsoft Entra, что произойдет в Exchange?

Удаленные субъекты в Microsoft Entra также автоматически удаляются в Exchange. При этом удаляются все назначения, назначенные этим субъектам службы, но не затрагиваются области управления.

Отзывы об этой функции

Отзывами об этой функции можно поделиться с exoapprbacpreview@microsoft.com.