Проверка подлинности только для приложений для автоматических сценариев в Exchange Online PowerShell и powerShell & безопасности

Сценарии аудита и создания отчетов в Microsoft 365 часто включают автоматические сценарии в Exchange Online PowerShell и PowerShell безопасности и соответствия требованиям. Раньше для автоматического входа требовалось хранить имя пользователя и пароль в локальном файле или в секретном хранилище, которое открывалось при запуске. Но, как мы все знаем, хранение учетных данных пользователя локально не является хорошей практикой безопасности.

Проверка подлинности на основе сертификатов (CBA) или проверка подлинности только для приложений, как описано в этой статье, поддерживает сценарии автоматической проверки подлинности и автоматизации с помощью приложений Microsoft Entra и самозаверяемых сертификатов.

Примечание.

  • Знаете ли вы, что можно подключиться к Exchange Online PowerShell с помощью управляемых удостоверений в Azure? См. сведения об использовании управляемых удостоверений Azure для подключения к Exchange Online PowerShell.

  • Для функций и процедур, описанных в этой статье, требуются следующие версии модуля Exchange Online PowerShell:

    • Exchange Online PowerShell (Connect-ExchangeOnline): версия 2.0.3 или более поздняя.
    • Безопасность & соответствия Требованиям PowerShell (Connect-IPPSSession): версия 3.0.0 или более поздняя.

    Инструкции по установке или обновлению модуля см. в статье Установка и обслуживание Exchange Online модуля PowerShell. Инструкции по использованию модуля в службе автоматизации Azure см. в статье Управление модулями в служба автоматизации Azure.

  • Для подключений REST API в модуле Exchange Online PowerShell версии 3 требуются модули PowerShellGet и PackageManagement. Дополнительные сведения см. в статье PowerShellGet для подключений на основе REST в Windows.

    Если процедуры, описанные в этой статье, не работают, убедитесь, что у вас нет установленных бета-версий модулей PackageManagement или PowerShellGet, выполнив следующую команду: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions.

  • В PowerShell Exchange Online нельзя использовать процедуры, описанные в этой статье, со следующими командлетами групп Microsoft 365.

    Вы можете использовать Microsoft Graph для замены большинства функциональных возможностей этих командлетов. Дополнительные сведения см. в статье Работа с группами в Microsoft Graph.

  • В разделе Безопасность & соответствия требованиям PowerShell нельзя использовать процедуры, описанные в этой статье, со следующими командлетами группы Microsoft 365:

  • Делегированные сценарии поддерживаются в Exchange Online. Рекомендуемый метод подключения с помощью делегирования — использование GDAP и согласия приложения. Дополнительные сведения см. в статье Использование модуля Exchange Online PowerShell версии 3 с GDAP и согласием приложения. Вы также можете использовать мультитенантные приложения, если отношения CSP не создаются с клиентом. Необходимые шаги для использования мультитенантных приложений описаны в обычных инструкциях в этой статье.

  • Используйте переключатель SkipLoadingFormatData в командлете Connect-ExchangeOnline, если при использовании пакета SDK для Windows PowerShell для подключения возникает следующая ошибка:The term 'Update-ModuleManifest' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Как это работает?

Модуль PowerShell Exchange Online использует библиотеку проверки подлинности Active Directory для получения маркера только для приложения, используя идентификатор приложения, идентификатор клиента (организация) и отпечаток сертификата. Объекту приложения, подготовленному внутри Microsoft Entra ID, назначена роль каталога, которая возвращается в маркере доступа. Управление доступом на основе ролей (RBAC) в этом сеансе настроено с помощью информации о роли каталога, которая доступна в маркере.

Примеры подключения

В следующих примерах показано, как использовать модуль PowerShell Exchange Online с проверкой подлинности только для приложений.

Важно!

В следующих командах подключения используйте основной .onmicrosoft.com домен организации в качестве значения параметра Organization .

Следующие команды подключения имеют множество доступных параметров, описанных в разделах Подключение к Exchange Online PowerShell и Подключение к PowerShell & соответствия требованиям безопасности. Например:

  • Для сред Microsoft 365 GCC High или Microsoft 365 DoD требуются следующие дополнительные параметры и значения:

    • Connect-ExchangeOnline в GCC High: -ExchangeEnvironmentName O365USGovGCCHigh.
    • Connect-IPPSSession в GCC High: -ConnectionUri https://ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common.
    • Connect-ExchangeOnline в DoD: -ExchangeEnvironmentName O365USGovDoD.
    • Connect-IPPSSession в DoD: -ConnectionUri https://l5.ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common.
  • Если команда Connect-IPPSSession отображает запрос на вход, выполните команду: $Global:IsWindows = $true перед командой Connect-IPPSSession .

  • Подключение с помощью отпечатка сертификата:

    Примечание.

    Параметр CertificateThumbprint поддерживается только в Microsoft Windows.

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

    • Exchange Online PowerShell:

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
    • PowerShell безопасности и соответствия требованиям:

      Connect-IPPSSession -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
  • Подключение с помощью объекта сертификата:

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

    • Exchange Online PowerShell:

      Connect-ExchangeOnline -Certificate <%X509Certificate2 Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
    • PowerShell безопасности и соответствия требованиям:

      Connect-IPPSSession -Certificate <%X509Certificate2 Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
  • Подключитесь с помощью локального сертификата:

    Примечание.

    Использование команды ConvertTo-SecureString для локального хранения пароля сертификата не позволяет использовать безопасный метод подключения для сценариев автоматизации. Использование команды Get-Credential для безопасного запроса пароля сертификата не подходит для сценариев автоматизации. Другими словами, на самом деле нет автоматизированного и безопасного способа подключения с помощью локального сертификата.

    • Exchange Online PowerShell:

      Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (Get-Credential).password -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      
    • PowerShell безопасности и соответствия требованиям:

      Connect-IPPSSession -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (Get-Credential).password -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contosoelectronics.onmicrosoft.com"
      

Настройка проверки подлинности только для приложений

Для проверки подлинности с помощью объектов приложения необходимо выполнить первоначальное подключение. Приложение и субъект-служба взаимозаменяемы, но приложение является объектом класса, а субъект — экземпляром класса. Дополнительные сведения см. в статье Объекты приложений и субъектов-служб в Microsoft Entra ID.

Подробные сведения о создании приложений в Microsoft Entra ID см. в разделе https://aka.ms/azuread-app.

  1. Зарегистрируйте приложение в Microsoft Entra ID.

  2. Назначьте приложению разрешения API.

    Объект приложения по умолчанию имеет разрешение делегированного APIUser.ReadMicrosoft Graph>. Для доступа к ресурсам в Exchange объекту приложения требуется разрешение API приложенияOffice 365 Exchange Online>Exchange.ManageAsApp.

  3. Создайте самозаверяющий сертификат.

    • Для проверки подлинности только для приложений в Microsoft Entra ID обычно для запроса доступа используется сертификат. Любой пользователь, у которого есть сертификат и его закрытый ключ, может использовать приложение с разрешениями, предоставленными приложению.

    • Создайте и настройте самозаверяющий сертификат X.509, который используется для проверки подлинности приложения в Microsoft Entra ID, запрашивая маркер доступа только для приложения.

    • Эта процедура аналогична созданию пароля для учетных записей пользователей. Сертификат также может быть самозаверяющим. Инструкции по созданию сертификатов в PowerShell см. далее в этой статье.

      Примечание.

      Шифрование. Сертификаты следующего поколения (CNG) не поддерживаются для проверки подлинности только для приложений в Exchange. Сертификаты CNG создаются по умолчанию в современных версиях Windows. Необходимо использовать сертификат от поставщика ключей CSP. В этом разделе рассматриваются два поддерживаемых метода создания сертификата CSP.

  4. Присоединение сертификата к приложению Microsoft Entra

  5. Назначение Microsoft Entra ролей приложению

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

Шаг 1. Регистрация приложения в Microsoft Entra ID

Примечание.

Если у вас возникли проблемы, проверьте необходимые разрешения, чтобы убедиться, что ваша учетная запись может создать удостоверение.

  1. Откройте Центр администрирования Microsoft Entra в https://portal.azure.com/.

  2. В поле Поиск в верхней части страницы начните вводить Регистрация приложений, а затем выберите Регистрация приложений в результатах в разделе Службы.

    Снимок экрана: Регистрация приложений в результатах поиска на домашней странице портал Azure.

    Или, чтобы перейти непосредственно на страницу Регистрация приложений, используйте https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade.

  3. На странице Регистрация приложений выберите Новая регистрация.

    Нажмите

    На открывшейся странице Регистрация приложения настройте следующие параметры.

    • Имя: введите описательное имя. Например, ExO PowerShell CBA.

    • Поддерживаемые типы учетных записей. Убедитесь, что выбраны только учетные записи в этом каталоге организации (<только имя_организации> — один клиент).

      Примечание.

      Чтобы сделать приложение мультитенантным для Exchange Online делегированных сценариев, выберите значение Учетные записи в любом каталоге организации (Любой каталог Microsoft Entra — Мультитенантный)..

    • URI перенаправления (необязательно): этот параметр является необязательным. Если вам нужно его использовать, настройте следующие параметры:

      • Платформа: выберите Интернет.
      • URI. Введите универсальный код ресурса (URI), куда отправляется маркер доступа.

      Примечание.

      Нельзя создавать учетные данные для собственных приложений, так как нельзя использовать собственные приложения для автоматизированных приложений.

      Регистрация приложения.

    По завершении работы на странице Регистрация приложений выберите Зарегистрировать.

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

Шаг 2. Назначение приложению разрешений API

Выберите один из следующих методов в этом разделе, чтобы назначить приложению разрешения API:

  • Выберите и назначьте разрешения API на портале.
  • Измените манифест приложения, чтобы назначить разрешения API. (Организации Microsoft 365 GCC High и DoD должны использовать этот метод)

Выбор и назначение разрешений API на портале

  1. На странице Обзор приложения выберите Разрешения API в разделе Управление .

    Выберите Разрешения API на странице обзора приложения.

  2. На странице Разрешения API приложения выберите Добавить разрешение.

    Выберите Добавить разрешение на странице разрешений API приложения.

  3. Во всплывающем окне Запрос разрешений API выберите вкладку API, которые использует моя организация, начните вводить Office 365 Exchange Online в поле Поиск, а затем выберите его в результатах.

    Найдите и выберите Office 365 Exchange Online на вкладке API, которые использует моя организация.

  4. Во всплывающем окне Какой тип разрешений требуется приложению? выберите Разрешения приложения.

  5. В появившемся списке разрешений разверните узел Exchange, выберите Exchange.ManageAsApp, а затем выберите Добавить разрешения.

    Найдите и выберите Exchange.ManageAsApp permissions (Разрешения приложения) на вкладке Разрешения приложения.

  6. На странице разрешений API приложения убедитесь, что Office 365 Exchange Online>Exchange.ManageAsApp отображается и содержит следующие значения:

    • Тип: Application.

    • Администратор требуется согласие: Да.

    • Состояние: текущее неверное значение не предоставлено для <организации>.

      Измените это значение, выбрав Предоставить согласие администратора для <организации>, проверив открывающееся диалоговое окно подтверждения и выбрав Да.

      Администратор согласие требуется, но не предоставлено для разрешений Exchange.ManageAsApp.

      Теперь значение Status (Состояние ) предоставлено для <организации>.

      Администратор согласие, предоставленное для разрешений Exchange.ManageAsApp.

  7. Для записи По умолчанию Microsoft Graph>User.Read выберите ...>Отмените согласие администратора, а затем выберите Да в открывшемся диалоговом окне подтверждения, чтобы вернуть состояние к пустому значению по умолчанию.

    Администратор согласие удалено из разрешений Пользователя.Чтения Microsoft Graph по умолчанию.

  8. Закройте текущую страницу Разрешения API (не вкладку браузера), чтобы вернуться на страницу Регистрация приложений. Вы используете страницу Регистрация приложений на следующем шаге.

Изменение манифеста приложения для назначения разрешений API

Примечание.

Процедуры в этом разделе добавляют существующие разрешения по умолчанию для приложения (делегированные разрешения User.Read в Microsoft Graph) с необходимыми разрешениями приложения Exchange.ManageAsApp в Office 365 Exchange Online.

  1. На странице обзор приложения выберите Манифест в разделе Управление .

    Выберите Манифест на странице обзора приложения.

  2. На странице манифеста приложения найдите requiredResourceAccess запись (в строке 42 или около нее) и сделайте запись похожей на следующий фрагмент кода:

    "requiredResourceAccess": [
        {
            "resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
            "resourceAccess": [
                {
                    "id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
                    "type": "Role"
                }
            ]
        },
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                    "type": "Scope"
                }
            ]
        }
    ],
    

    Примечание.

    Среды Microsoft 365 GCC High или DoD имеют доступ только к PowerShell & соответствия требованиям безопасности. Используйте следующие значения для requiredResourceAccess записи:

    "requiredResourceAccess": [
        {
            "resourceAppId": "00000007-0000-0ff1-ce00-000000000000",
            "resourceAccess": [
                {
                    "id": "455e5cd2-84e8-4751-8344-5672145dfa17",
                    "type": "Role"
                }
            ]
        },
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                    "type": "Scope"
                }
            ]
        }
    ],
    

    По завершении работы на странице Манифест нажмите кнопку Сохранить.

  3. На странице Манифест выберите Разрешения API в разделе Управление .

    Выберите Разрешения API на странице Манифест.

  4. На странице Разрешения API убедитесь, что Office 365 Exchange Online>Exchange.ManageAsApp указан и содержит следующие значения:

    • Тип: Application.

    • Администратор требуется согласие: Да.

    • Состояние. Текущее неверное значение не предоставлено для <записи Office 365 Exchange Online Exchange.ManageAsApp для организации>>.

      Измените значение состояния , выбрав Предоставить согласие администратора для <организации>, прочитав открывающееся диалоговое окно подтверждения, а затем выберите Да.

      Администратор согласие требуется, но не предоставлено для разрешений Exchange.ManageAsApp.

      Теперь значение Status (Состояние ) предоставлено для <организации>.

      Администратор согласие, предоставленное для разрешений Exchange.ManageAsApp.

  5. Для записи По умолчанию Microsoft Graph>User.Read выберите ...>Отмените согласие администратора, а затем выберите Да в открывшемся диалоговом окне подтверждения, чтобы вернуть состояние к пустому значению по умолчанию.

    Администратор согласие удалено из разрешений Пользователя.Чтения Microsoft Graph по умолчанию.

  6. Закройте текущую страницу Разрешения API (не вкладку браузера), чтобы вернуться на страницу Регистрация приложений. Вы используете страницу Регистрация приложений на следующем шаге.

Шаг 3. Создание самозаверяющего сертификата

Создайте самозаверяющий сертификат x.509 с помощью одного из следующих способов.

  • Рекомендуется. Используйте командлеты New-SelfSignedCertificate, Export-Certificate и Export-PfxCertificate в сеансе Windows PowerShell с повышенными правами (запуск в качестве администратора), чтобы запросить самозаверяющий сертификат и экспортировать его в .cer и .pfx (SHA1 по умолчанию). Например:

    # Create certificate
    $mycert = New-SelfSignedCertificate -DnsName "contoso.org" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange
    
    # Export certificate to .pfx file
    $mycert | Export-PfxCertificate -FilePath mycert.pfx -Password (Get-Credential).password
    
    # Export certificate to .cer file
    $mycert | Export-Certificate -FilePath mycert.cer
    
  • Используйте сценарий Create-SelfSignedCertificate, чтобы создать сертификаты SHA1.

    .\Create-SelfSignedCertificate.ps1 -CommonName "MyCompanyName" -StartDate 2021-01-06 -EndDate 2022-01-06
    

Шаг 4. Присоединение сертификата к приложению Microsoft Entra

Зарегистрировав сертификат в приложении, вы сможете использовать для проверки подлинности закрытый ключ (файл .pfx) или отпечаток.

  1. На вкладке Собственные приложения на странице Регистрация приложений в конце шага 2 выберите свое приложение.

    Если вам нужно вернуться на страницу регистрации приложений , используйте https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps, убедитесь, что выбрана вкладка Принадлежащие приложения , а затем выберите свое приложение.

    Страница регистрации приложений, на которой вы выбираете свое приложение.

  2. На открывающейся странице приложения выберите Сертификаты & секреты в разделе Управление .

    Выберите Сертификаты & Секреты на странице свойств приложения.

  3. На странице Сертификаты & секреты выберите Отправить сертификат.

    Выберите Отправить сертификат на странице Сертификаты & секреты.

    В открывшемся диалоговом окне перейдите к самозаверяющему сертификату (файл .cer), созданному на шаге 3.

    Перейдите к сертификату и нажмите кнопку Добавить.

    Когда вы закончите, нажмите Добавить.

    Сертификат теперь отображается в разделе Сертификаты.

    Страница приложения с демонстрацией добавленного сертификата.

  4. Закройте текущую страницу Сертификаты и секреты и страницу Регистрация приложений, чтобы вернуться к главной странице https://portal.azure.com/. Она вам понадобится на следующем шаге.

Если вы сделали приложение мультитенантным для Exchange Online делегированных сценариев на шаге 1, необходимо предоставить согласие администратора на разрешение Exchange.ManageAsApp, чтобы приложение пустилось в Exchange Online в каждой организации клиента. Для этого создайте URL-адрес согласия администратора для каждого клиента клиента. Прежде чем кто-либо использует мультитенантное приложение для подключения к Exchange Online в организации клиента, администратор клиента должен открыть следующий URL-адрес:

https://login.microsoftonline.com/<tenant-id>/adminconsent?client_id=<client-id>&scope=https://outlook.office365.com/.default

  • <tenant-id> — это идентификатор клиента.
  • <client-id> — это идентификатор мультитенантного приложения.
  • Для предоставления приложению разрешений используется область по умолчанию.

Дополнительные сведения о синтаксисе URL-адресов см. в разделе Запрос разрешений у администратора каталога.

Шаг 5. Назначение Microsoft Entra ролей приложению

У вас есть два варианта:

  • Назначение Microsoft Entra ролей приложению
  • Назначение пользовательских групп ролей приложению с помощью субъектов-служб. Этот метод поддерживается только при подключении к Exchange Online PowerShell или PowerShell & безопасности в режиме REST API. Безопасность & соответствия PowerShell поддерживает режим REST API в версии 3.2.0 или более поздней версии.

Примечание.

Вы также можете объединить оба метода для назначения разрешений. Например, можно использовать Microsoft Entra роли "Администратор получателя Exchange", а также назначить пользовательскую роль RBAC для расширения разрешений.

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

Назначение Microsoft Entra ролей приложению

Поддерживаемые роли Microsoft Entra описаны в следующей таблице:

Role Exchange Online
PowerShell
Безопасность и соответствие требованиям
PowerShell
Администратор соответствия
Администратор Exchange*
Администратор получателей Exchange
Глобальный администратор*
Глобальный читатель
Администратор службы поддержки
Администратор безопасности*
Читатель сведений о безопасности

* Роли глобального администратора и администратора Exchange предоставляют необходимые разрешения для любой задачи в Exchange Online PowerShell. Например:

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

Роль администратора безопасности не имеет необходимых разрешений для этих задач.

Общие инструкции по назначению ролей в Microsoft Entra ID см. в статье Назначение Microsoft Entra ролей пользователям.

Примечание.

Следующие действия немного отличаются в Exchange Online PowerShell и PowerShell безопасности и соответствия требованиям. Показаны действия для обеих сред. Чтобы настроить роли для обеих сред, повторите действия из этого раздела.

  1. В Центр администрирования Microsoft Entra в https://portal.azure.com/начните вводить роли и администраторы в поле Поиск в верхней части страницы, а затем выберите Microsoft Entra роли и администраторы в результатах в разделе Службы.

    Снимок экрана: Microsoft Entra ролей и администраторов в результатах поиска на домашней странице портал Azure.

    Или, чтобы перейти непосредственно на страницу Microsoft Entra ролей и администраторов, используйте https://portal.azure.com/#view/Microsoft_AAD_IAM/AllRolesBlade.

  2. На открывшейся странице Роли и администраторы найдите и выберите одну из поддерживаемых ролей, щелкнув название роли (не флажок) в результатах.

    • Exchange Online PowerShell. Например, найдите и выберите роль администратора Exchange.

      Найдите и выберите поддерживаемую роль Exchange Online PowerShell, щелкнув имя роли.

    • Безопасность & соответствия Требованиям PowerShell. Например, найдите и выберите роль Администратор соответствия требованиям .

      Найдите и выберите поддерживаемую роль PowerShell

  3. На открывающейся странице Назначения выберите Добавить назначения.

    • Exchange Online PowerShell:

      Выберите

    • PowerShell безопасности и соответствия требованиям:

      Выберите Добавить назначения на странице назначения ролей в разделе Безопасность & соответствие PowerShell.

  4. В появившейся всплывающей области Добавить назначения найдите и выберите приложение, созданное на шаге 1.

    Найдите и выберите приложение во всплывающей области

    По завершении во всплывающем окне Добавление назначений нажмите кнопку Добавить.

  5. Вернитесь на страницу Назначения и убедитесь, что роль назначена приложению.

    • Exchange Online PowerShell:

      Страница назначений ролей после того, как приложение добавлено в роль Exchange Online PowerShell.

    • PowerShell безопасности и соответствия требованиям:

      Страница назначений ролей после, чтобы добавить приложение в роль powerShell для обеспечения безопасности & соответствия требованиям.

Назначение пользовательских групп ролей приложению с помощью субъектов-служб

Примечание.

Прежде чем создавать субъект-службу, необходимо подключиться к Exchange Online PowerShell или PowerShell & безопасности. Создание субъекта-службы без подключения к PowerShell не будет работать (идентификатор приложение Azure и идентификатор объекта необходимы для создания нового субъекта-службы).

Этот метод поддерживается только при подключении к Exchange Online PowerShell или PowerShell & соответствия безопасности в режиме REST API. Безопасность & соответствия PowerShell поддерживает режим REST API в версии 3.2.0 или более поздней версии.

Сведения о создании настраиваемых групп ролей см. в разделах Создание групп ролей в Exchange Online и Создание групп ролей Email & совместной работы на портале Microsoft Defender. Настраиваемая группа ролей, назначенная приложению, может содержать любое сочетание встроенных и настраиваемых ролей.

Чтобы назначить пользовательские группы ролей приложению с помощью субъектов-служб, сделайте следующее:

  1. В Microsoft Graph PowerShell выполните следующие команды, чтобы сохранить сведения о приложении Microsoft Entra, зарегистрированном на шаге 1, в переменной:

    Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All,Application.Read.All
    
    $<VariableName1> = Get-MgServicePrincipal -Filter "DisplayName eq '<AppName>'"
    

    Например:

    Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All,Application.Read.All
    
    $AzureADApp = Get-MgServicePrincipal -Filter "DisplayName eq 'ExO PowerShell CBA'"
    

    Подробные сведения о синтаксисе и параметрах см. в разделе Get-MgServicePrincipal.

  2. В том же окне PowerShell подключитесь к Exchange Online PowerShell или PowerShell & безопасности и выполните следующие команды:

    • Создайте объект субъекта-службы для приложения Microsoft Entra.
    • Сохраните сведения о субъекте-службе в переменной, используемой на следующем шаге.
    New-ServicePrincipal -AppId $<VariableName1>.AppId -ObjectId $<VariableName1>.Id -DisplayName "<Descriptive Name>"
    
    $<VariableName2> = Get-ServicePrincipal -Identity "<Descriptive Name>"
    

    Например:

    New-ServicePrincipal -AppId $AzureADApp.AppId -ObjectId $AzureADApp.Id -DisplayName "SP for Azure AD App ExO PowerShell CBA"
    
    $SP = Get-ServicePrincipal -Identity "SP for Azure AD App ExO PowerShell CBA"
    

    Подробные сведения о синтаксисе и параметрах см. в разделе New-ServicePrincipal.

  3. В Exchange Online PowerShell или Безопасность & соответствия PowerShell выполните следующую команду, чтобы добавить субъект-службу в качестве члена настраиваемой группы ролей:

    Add-RoleGroupMember -Identity "<CustomRoleGroupName>" -Member <$<VariableName2>.Identity | $<VariableName2>.ObjectId | $<VariableName2>.Id>
    

    Например:

    Add-RoleGroupMember -Identity "Contoso View-Only Recipients" -Member $SP.Identity
    

    Дополнительные сведения о синтаксисе и параметрах см. в разделе Add-RoleGroupMember.