Использование утверждения несколькими администраторами с Microsoft API Graph

Утверждение несколькими администраторами (MAA) обеспечивает принудительное выполнение рабочих процессов утверждения вызовов API с проверкой подлинности приложения (проверка подлинности приложений), выполняемых через Microsoft API Graph. Если в организации для управления ресурсами Intune используются субъекты служб, сценарии автоматизации или сторонние приложения, эти вызовы перехватываются MAA, когда целевой ресурс защищен политикой доступа.

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

Важно!

MAA предоставляется для каждой рабочей нагрузки для каждого клиента. Это принудительное применение применяется только к клиентам с настроенными политиками доступа MAA. Он не включает MAA автоматически и не изменяет состав клиентов, имеющих MAA. Дополнительные сведения о настройке политик доступа см. в статье "Использование политик доступа для требования утверждения несколькими администраторами".

Изменения для вызовов проверки подлинности приложения

Ранее только интерактивные (делегированные) действия администратора подлежали рабочим процессам утверждения MAA. Благодаря этому изменению автоматические вызовы и вызовы сценариев, использующие маркеры только для приложений, также перехватываются MAA, когда целевой ресурс защищен политикой доступа.

Если приложение выполняет вызовы API к ресурсам, защищенным MAA, с помощью app-auth и не включает необходимые заголовки утверждения, вызов возвращает ошибку HTTP 400. В тексте отклика указано, что операция требует утверждения несколькими администраторами.

Затронутые типы ресурсов

Политики доступа MAA могут защищать следующие типы ресурсов. Если вызовы проверки подлинности приложений нацелены на любой из этих ресурсов и политика доступа активна, это влияет на автоматизацию:

  • Приложения
  • Политики соответствия
  • Политики конфигурации
  • Действия устройства
  • Управление доступом на основе ролей
  • Сценарии
  • Конфигурация клиента

MAA применяется только к операциям, которые изменяют защищенные ресурсы (POST, PATCH, PUT, DELETE). Операции только для чтения (GET) не затрагиваются.

Предварительные условия

  • Регистрация приложения с необходимыми разрешениями приложения Microsoft Graph для ресурсов Intune, которыми управляет ваше приложение (например, DeviceManagementApps.ReadWrite.All).
  • Политики доступа MAA, настроенные для соответствующих рабочих нагрузок. Дополнительные сведения см. в статье Создание политики доступа.
  • Отдельная учетная запись администратора, которая является членом группы утверждающих для политики доступа. Приложения не могут утверждать или отклонять запросы MAA. Только интерактивные учетные записи администраторов могут утверждать запросы.

Шаг 1. Отправка запроса с заголовком обоснования

Если MAA включен, добавьте в запрос заголовок обоснования. Значение x-msft-approval-justification заголовка должно быть закодировано в кодировке Base64.

В следующем примере создается ресурс сценария PowerShell в Intune и включается обязательный заголовок обоснования:

POST https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts
Content-Type: application/json
x-msft-approval-justification: YXBwIG9ubHkgdGVzdA==

{
  "displayName": "My Test Script",
  "description": "Testing MAA with app-only token",
  "scriptContent": "V3JpdGUtT3V0cHV0ICJIZWxsbyBXb3JsZCI=",
  "runAsAccount": "system",
  "fileName": "TestScript.ps1",
  "roleScopeTagIds": ["0"]
}

Совет

Значение x-msft-approval-justification имеет кодировку Base64. Например, YXBwIG9ubHkgdGVzdA== декодирует в app only test. Закодируйте собственную строку обоснования перед отправкой.

Без заголовка обоснования запрос завершается сбоем с ошибкой, указывающей, что x-msft-approval-justification заголовок необходим.

Шаг 2. Обработка ответа на утверждение

Запрос возвращает код HTTP 412 (Precondition Failed) с внешним кодом ошибки Microsoft Graph .BadRequest Этот ответ ожидаемый и не указывает на проблему с разрешениями — так MAA сигнализирует, что запрос был получен и теперь ожидает утверждения. Сведения, требующие утверждения, вложены в сообщение об ошибке.

Ответ содержит x-msft-approval-code заголовок, необходимый для дальнейших действий. Используйте наличие этого заголовка вместе с HTTP 412 как сигнал о том, что MAA принял запрос и создал запрос на утверждение.

Пример ответа:

HTTP/1.1 412 Precondition Failed
x-msft-approval-code: aabb1234-5678-9012-abcd-ef0123456789
Content-Type: application/json

{
  "error": {
    "code": "BadRequest",
    "message": "{\r\n  \"_version\": 3,\r\n  \"Message\": \"Approval Required. Request Approval using the request ID returned as part of the x-msft-approval-code response header. x-msft-approval-code: aabb1234-5678-9012-abcd-ef0123456789 - Operation ID (for customer support): 00000000-0000-0000-0000-000000000000 - Activity ID: <activity-id> - Url: <service-url>\",\r\n  \"CustomApiErrorPhrase\": \"\",\r\n  \"RetryAfter\": null,\r\n  \"ErrorSourceService\": \"\",\r\n  \"HttpHeaders\": \"{\\\"x-msft-approval-code\\\":\\\"aabb1234-5678-9012-abcd-ef0123456789\\\"}\"\r\n}"
  }
}

Извлеките x-msft-approval-code значение из ответа. Сохраните исходный метод HTTP, URL-адрес и текст запроса с этим значением, так как после утверждения необходимо повторно отправить тот же запрос на шаге 4.

Шаг 3. Дождитесь утверждения

На этом этапе запрос на утверждение должен быть рассмотрен и утвержден другим администратором в Центре администрирования Microsoft Intune. Приложения не могут утверждать или отклонять запросы MAA. Их могут утверждать только интерактивные учетные записи администраторов.

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

GET https://graph.microsoft.com/beta/deviceManagement/operationApprovalRequests?$filter=requestId eq 'aabb1234-5678-9012-abcd-ef0123456789'

Поле status указывает текущее состояние запроса. К распространенным значениям относятсяneedsApproval: rejected, approved, и cancelled. Прежде чем продолжить, подождите, пока состояние изменится approved .

Шаг 4. Повторно отправьте с кодом утверждения

После утверждения запроса повторно отправьте исходный запрос. Замените верхний колонтитул выравнивания верхним колонтитулом x-msft-approval-code и используйте код утверждения из шага 2:

POST https://graph.microsoft.com/beta/deviceManagement/deviceManagementScripts
Content-Type: application/json
x-msft-approval-code: aabb1234-5678-9012-abcd-ef0123456789

{
  "displayName": "My Test Script",
  "description": "Testing MAA with app-only token",
  "scriptContent": "V3JpdGUtT3V0cHV0ICJIZWxsbyBXb3JsZCI=",
  "runAsAccount": "system",
  "fileName": "TestScript.ps1",
  "roleScopeTagIds": ["0"]
}

Запрос успешно выполнен, и ресурс создан.

Исключение приложения из принудительного применения MAA

Если вы не можете немедленно обновить приложение, чтобы включить рабочий процесс утверждения, вы можете исключить его из принудительного применения MAA в политике доступа. Чтобы настроить исключение, измените политику доступа для рабочей нагрузки, вызываемой приложением, и добавьте приложение на вкладке Исключения . Второй администратор должен утвердить изменение, прежде чем исключение вступит в силу.

Исключения применяются только к вызовам app-auth (прошедшим проверку подлинности приложения), выполненным исключенным субъектом-службой. Интерактивные (делегированные) действия администратора в отношении одних и тех же защищенных ресурсов по-прежнему требуют утверждения MAA.

Для получения дополнительной информации об исключениях, включая области, ограничения и рекомендации по безопасности, см. Создание политики доступа.

Отслеживание активности MAA для вызовов проверки подлинности приложений

События, связанные с MAA, включая утверждение, блокировку, передачу, добавление исключения и удаление исключения, записываются в существующий журнал аудита Intune. Используйте стандартный журнал аудита и экспорт API Graph, чтобы узнать, какие вызовы проверки подлинности приложений проходят через MAA и как они обрабатываются.

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

Почему мои сценарии автоматизации завершаются сбоем?

Если автоматизация вызывает Microsoft Graph и нацелена на ресурсы, защищенные политикой доступа MAA, эти вызовы перехватываются рабочим процессом утверждения MAA независимо от того, использует ли сценарий делегированную проверку подлинности или проверку подлинности только для приложений. Обновите сценарии, включив в них заголовки обоснования и утверждения, описанные в этой статье. Если сценарий использует маркеры только для приложения (поток учетных данных клиента), вы также можете исключить приложение из политики доступа.

Влияет ли MAA на вызовы API только для чтения?

Нет. MAA применяется только к операциям, которые изменяют защищенные ресурсы (POST, PATCH, PUT, DELETE). Запросы GET не затрагиваются.

Может ли приложение утверждать собственные запросы MAA?

Нет. Приложения не могут утверждать или отклонять запросы MAA. Отдельная интерактивная учетная запись администратора, являющаяся участником утверждающей группы, должна утвердить запрос в Центре администрирования Microsoft Intune.

Разделы справки проверка, включен ли мой клиент MAA?

В Центре администрирования Microsoft Intune перейдите в раздел "Администрирование> клиентов"Политики доступа сутверждениями> нескольких администраторов. Если указаны политики активного доступа, MAA включен для этих рабочих нагрузок.

Можно ли отключить MAA, чтобы прекратить принудительное применение?

Управлять политиками доступа MAA могут администраторы с соответствующими разрешениями. Однако корпорация Майкрософт настоятельно рекомендует включить MAA в качестве лучшей практики обеспечения безопасности.