Поделиться через


Программное создание подписок MCA в клиентах Microsoft Entra

Эта статья поможет программным способом создать подписку Клиентское соглашение Майкрософт (MCA) в клиентах Microsoft Entra. В некоторых ситуациях может потребоваться создать подписки MCA в клиентах Microsoft Entra, но связать их с одной учетной записью выставления счетов. Примерами таких ситуаций являются поставщики SaaS, желающие разделить размещенные клиентские службы от внутренних ИТ-служб или внутренних сред, которые имеют строгие требования к соответствию нормативным требованиям, таких как индустрия карт оплаты (PCI).

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

  • Исходный идентификатор Microsoft Entra (source.onmicrosoft.com). Он представляет исходного арендатора, где существует учетная запись выставления счетов MCA.
  • Идентификатор целевого облака Microsoft Entra (destination.onmicrosoft.com). Он представляет целевой клиент, в котором создаются новые подписки MCA.

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

Примечание.

Существует два метода для программного создания подписок MCA в клиентах Microsoft Entra. Метод, описанный в этой статье, включает двухэтапный процесс, который предоставляет исходному клиенту контроль над подписками, созданными в конечных клиентах. Этот метод может быть предпочтительнее, если вам нужен более жесткий контроль над созданием подписок в конечных арендаторах. Другой способ использования связанных клиентов — упрощенная версия, которая сводит к минимуму затраты на управление и упрощает процесс создания подписки путем передачи разрешений на создание подписок MCA полностью целевому клиенту.

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

У вас уже должны быть созданы следующие арендаторы:

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

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

Регистрация приложения в исходном клиенте

Чтобы программно создать подписку MCA, необходимо зарегистрировать приложение Microsoft Entra и предоставить соответствующее разрешение на управление доступом на основе ролей Azure (RBAC). На этом шаге убедитесь, что вы вошли в исходный клиент (source.onmicrosoft.com) с учетной записью с разрешениями на регистрацию приложений Microsoft Entra.

Выполните шаги, указанные в кратком руководстве: Регистрация приложения на платформе удостоверений Microsoft.

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

Сохраните следующие сведения, чтобы протестировать и настроить среду:

  • Идентификатор каталога (арендатора)
  • Идентификатор приложения (клиент)
  • Код объекта
  • Созданное значение секрета приложения. Значение видно только в момент создания.

Создание назначения роли выставления счетов для приложения в исходном клиенте

Чтобы определить соответствующую область и роль для выставления счетов для приложения, ознакомьтесь с информацией в разделе "Административные роли в Microsoft Customer Agreement" в Azure.

После определения области и роли используйте сведения об управлении ролями выставления счетов в портале Azure, чтобы создать назначение ролей для приложения. Найдите приложение с помощью имени, используемого при регистрации приложения в предыдущем разделе.

Зарегистрируйте приложение в целевом клиенте

Чтобы принять подписку на MCA из целевого клиента (destination.onmicrosoft.com), необходимо зарегистрировать приложение Microsoft Entra и добавить его в роль администратора выставления счетов Microsoft Entra. На этом шаге убедитесь, что вы вошли в целевой клиент (destination.onmicrosoft.com) с учетной записью с разрешениями на регистрацию приложений Microsoft Entra. Он также должен иметь разрешение администратора выставления счетов.

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

  • Идентификатор каталога (арендатора)
  • Идентификатор приложения (клиент)
  • Код объекта
  • Значение секрета приложения, которое было сгенерировано. Значение видно только на момент создания.

Добавьте целевое приложение к роли администратора по выставлению счетов Microsoft Entra.

Чтобы добавить целевое приложение, созданное в предыдущем разделе, в роль администратора выставления счетов Microsoft Entra в целевом клиенте, используйте информацию из Назначение ролей администратора и неадминистратора пользователям с идентификатором Microsoft Entra.

Программное создание подписки

При настройке приложений и разрешений используйте следующие сведения для программного создания подписок.

Получите идентификатор сервисного принципала целевого приложения

При создании подписки MCA в исходном клиенте необходимо указать субъект-службу или имя участника-службы приложения в целевом клиенте в качестве владельца. Чтобы получить идентификатор, используйте один из следующих методов. В обоих методах значение, используемое для пустого GUID, — это идентификатор целевого приложения (клиента), созданного ранее.

Azure CLI

Войдите в Azure CLI и используйте команду az ad sp show :

az ad sp show --id aaaaaaaa-bbbb-cccc-1111-222222222222 --query 'id'

Azure PowerShell

Войдите в Azure PowerShell и используйте командлет Get-AzADServicePrincipal:

Get-AzADServicePrincipal -ApplicationId 00001111-aaaa-2222-bbbb-3333cccc4444 | Select-Object -Property Id

Сохраните Id значение, возвращаемое командой.

Создание подписки

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

Получение токена доступа к исходному приложению

Замените {{placeholders}} фактическим идентификатором арендатора, идентификатором приложения (клиента) и значениями секрета приложения, которые вы сохранили при создании приложения источника ранее.

Вызовите запрос и сохраните access_token значение из ответа для использования на следующем шаге.

POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F

Получите идентификаторы для учетных записей выставления счетов, профилей и счетов.

Используйте информацию в разделе «Найти учетные записи выставления счетов, к которым у вас есть доступ» и «Найти профили выставления счетов и разделы счетов для создания подписок», чтобы получить идентификаторы учетных записей выставления счетов, профилей и разделов счетов.

Примечание.

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

Создание псевдонима подписки

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

  • {{guid}}: может быть допустимым ИДЕНТИФИКАТОРом GUID.
  • {{access_token}}: маркер доступа исходного клиентского приложения, полученного ранее.
  • {{billing_account}}: идентификатор ранее полученной учетной записи для выставления счетов.
  • {{billing_profile}}: идентификатор профиля выставления счетов, полученного ранее.
  • {{invoice_section}}: идентификатор раздела счета, полученного ранее.
  • {{destination_tenant_id}}: идентификатор арендатора назначения, как указано при предыдущем создании приложения арендатора назначения.
  • {{destination_service_principal_id}}: идентификатор субъекта-службы для целевого клиента, полученный из раздела "Получить идентификатор субъекта-службы назначения" ранее.

Отправьте запрос и запишите значение заголовка Location в ответе.

PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json

{
  "properties": {
    "displayName": "{{subscription_name}}",
    "workload": "Production",
    "billingScope": "/billingAccounts/{{billing_account}}/billingProfiles/{{billing_profile}}/invoiceSections/{{invoice_section}}",
    "subscriptionId": null,
    "additionalProperties": {
      "managementGroupId": null,
      "subscriptionTenantId": "{{destination_tenant_id}}",
      "subscriptionOwnerId": "{{destination_service_principal_id}}"
    }
  }
}

Принятие владения подпиской

Последний этап завершения процесса — принять владение подпиской.

Получите токен доступа к целевому приложению

Замените {{placeholders}} фактическим идентификатором клиента, идентификатором приложения (клиента) и значениями секретов приложений, сохраненными при создании целевого приложения клиента ранее.

Вызовите запрос и сохраните access_token значение из ответа на следующий шаг.

POST https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={{client_id}}&client_secret={{app_secret}}&resource=https%3A%2F%2Fmanagement.azure.com%2F

Принятие прав владения

Используйте следующую информацию, чтобы принять владение подпиской в целевом арендаторе.

  • {{subscription_id}}: идентификатор подписки, созданной в разделе "Создание псевдонима подписки". Он находится в заголовке «Местоположение», который вы указали.
  • {{access_token}}: маркер доступа, созданный на предыдущем шаге.
  • {{subscription_display_name}}: отображаемое имя подписки в вашей среде Azure.
POST https://management.azure.com/providers/Microsoft.Subscription/subscriptions/{{subscription_id}}/acceptOwnership?api-version=2021-10-01
Authorization: Bearer {{access_token}}
Content-Type: application/json

{
  "properties": {
    "displayName": "{{subscription_display_name}}",
    "managementGroupId": null
  }
}

Следующие шаги