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

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

Обзор

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

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

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

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

Ниже приведены инструкции по созданию этих назначений RBAC для приложений:

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

Требования

Группа ролей "Управление организацией " имеет делегированное назначение роли для новых ролей RBAC приложения. Чтобы назначить эти разрешения, необходимо быть членом группы ролей Управление организацией. Кроме того, можно использовать Exchange Online RBAC для предоставления делегированных назначений этим ролям приложений по своему назначению. В 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 корпоративных приложений.

Примечание.

Не используйте идентификаторы со страницы Регистрация приложений, так как на ней отображаются разные значения. Красным контуром "Идентификатор приложения" является 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 ID.

При тестировании авторизации можно включить необязательный параметр ресурса, чтобы оценить, какие разрешения области применяются к целевому почтовому ящику. 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 ID. Разрешения, назначенные с помощью RBAC, действуют в дополнение к предоставленным разрешениям в Microsoft Entra ID. Microsoft Entra разрешения можно ограничить только с помощью политик доступа к приложениям.

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

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

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

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

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

  1. Создайте новую область управления, которая указывает на группу области из политики доступа к приложениям.
  2. Создание объекта указателя субъекта-службы
  3. Назначьте необходимые разрешения субъекту-службе в Exchange Online с ограничением область управления
  4. Удаление согласия на разрешение в Azure
  5. Удаление политики доступа к приложениям

При создании область управления на шаге 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 ID.

  • 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 разрешает доступ к почтовому ящику A, назначение RBAC разрешает доступ ко всем, кроме A. По сути, это обеспечивает доступ ко всему, потому что "A и не A" означает все.

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

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

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

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

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