Использование платформы модели безопасного приложения

Корпорация Майкрософт вводит безопасную масштабируемую платформу для проверки подлинности партнеров поставщика облачных решений (CSP) и поставщиков панели управления (CPV) с помощью архитектуры многофакторной проверки подлинности (MFA) Microsoft Entra.

Нова модель позволяет повысить уровень безопасности вызовов интеграции к API Центра партнеров. Это помогает всем сторонам (включая майкрософт, партнеров CSP и ЦП) защитить свою инфраструктуру и данные клиентов от рисков безопасности.

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

Область

Эта статья касается как поставщиков облачных решений (CSP), так и поставщиков панелей управления (CPV).

Поставщики CPV:

  • CPV — это независимый поставщик программного обеспечения, разрабатывающий приложения для интеграции с интерфейсами API Центра партнеров, которые будут использовать партнеры в рамках CSP.
  • CPV не является партнером CSP с прямым доступом к Центру партнеров или API.

CSP

  • Косвенные поставщики и прямые партнеры в рамках CSP, которые используют проверку подлинности по идентификатору приложения и пользователю, а также напрямую интегрируются с APII-интерфейсами Центра партнеров.

Требования к безопасности

Дополнительные сведения о требованиях безопасности к партнерам см. в этой статье.

Модель безопасных приложений

Приложения Marketplace должны олицетворять привилегии партнеров CSP при вызове интерфейсов API корпорации Майкрософт. Атаки на эти уязвимые приложения могут привести к компрометации пользовательских данных.

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

Примеры

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

REST

Чтобы создавать вызовы REST с помощью примера кода для платформы Модели безопасных приложений, выполните следующие действия:

  1. Создание веб-приложения.

Создание веб-приложения.

  1. Войдите на портал Azure.

  2. Создайте приложение Microsoft Entra.

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

    1. Центр партнеров Майкрософт (некоторые клиенты показывают SampleBECApp)

    2. API управления Azure (если вы планируете вызывать API Azure)

    3. Windows Azure Active Directory.

  4. Убедитесь, что URL-адрес главной страницы приложения указывает на правильную конечную точку, где работает веб-приложение. Это приложение должно принять код авторизации из вызова входа Microsoft Entra. Например, в коде из следующего раздела веб-приложение работает в конечной точке https://localhost:44395/.

  5. Обратите внимание на следующие сведения из параметров веб-приложения в идентификаторе Microsoft Entra ID:

    • Application ID
    • Секрет приложения

Примечание.

Мы рекомендуем использовать сертификат безопасности в качестве секрета приложения. Но вместо этого вы можете создать ключ приложение на портале Azure. В примере кода из следующего раздела используется вариант с ключом приложения.

Получение кода авторизации

Чтобы принять вызов входа Microsoft Entra, необходимо получить код авторизации для веб-приложения:

  1. Войдите в идентификатор Microsoft Entra.

    Обязательно войдите в систему с учетной записью пользователя, из которой выполняется вызов API Центра партнеров (например, агент администрирования или учетная запись агента продаж).

  2. Замените идентификатор приложения идентификатором приложения Microsoft Entra (GUID).

  3. При появлении запроса войдите в систему с учетной записью пользователя, для которой настроена многофакторная проверка подлинности.

  4. При появлении запроса введите дополнительные сведения MFA (номер телефона или адрес электронной почты), чтобы проверить имя входа.

  5. После входа браузер перенаправит вызов в конечную точку веб-приложения с кодом авторизации. Например, в следующем примере кода перенаправление выполняется на адрес https://localhost:44395/.

Трассировка вызова для получения кода авторизации

POST https://localhost:44395/ HTTP/1.1
Origin: https://login.microsoftonline.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referrer: https://login.microsoftonline.com/kmsi
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: OpenIdConnect.nonce.hOMjjrivcxzuI4YqAw4uYC%2F%2BILFk4%2FCx3kHTHP3lBvA%3D=dHVyRXdlbk9WVUZFdlFONVdiY01nNEpUc0JRR0RiYWFLTHhQYlRGNl9VeXJqNjdLTGV3cFpIWFg1YmpnWVdQUURtN0dvMkdHS2kzTm02NGdQS09veVNEbTZJMDk1TVVNYkczYmstQmlKUzFQaTBFMEdhNVJGVHlES2d3WGlCSlVlN1c2UE9sd2kzckNrVGN2RFNULWdHY2JET3RDQUxSaXRfLXZQdG00RnlUM0E1TUo1YWNKOWxvQXRwSkhRYklQbmZUV3d3eHVfNEpMUUthMFlQUFgzS01RS2NvMXYtbnV4UVJOYkl4TTN0cw%3D%3D

code=AuthorizationCodeValue&id_token=IdTokenValue&<rest of properties for state>

Получение маркера обновления

Теперь вам нужно получить маркер обновления с помощью кода авторизации.

  1. Вызов POST к конечной точке https://login.microsoftonline.com/CSPTenantID/oauth2/token входа Microsoft Entra с кодом авторизации. Пример такого вызова можно изучить здесь.

  2. Зафиксируйте полученный в ответе маркер обновления.

  3. Сохраните маркер обновления в Azure Key Vault. Дополнительные сведения см. в документации по API Key Vault.

Важно!

Этот маркер обновления следует сохранить как секрет в Key Vault.

Пример вызова для получения маркера обновления

Заполнитель запроса:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 966
Expect: 100-continue

Текст запроса:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id&client_secret=Application-Secret&grant_type=authorization_code&code=AuthorizationCodeValue

Заполнитель ответа:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

Текст ответа

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","ext_expires_in":"3599","expires_on":"1547579127","not_before":"1547575227","resource":"https://api.partnercenter.microsoft.com","access_token":"Access

Получить маркер доступа

Вам необходимо получить маркер доступа, прежде чем выполнять вызовы к API Центра партнеров. Для получения маркера доступа необходимо использовать маркер обновления, так как маркеры доступа обычно имеют ограниченное время существования (например, менее часа).

Заполнитель запроса:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 1212
Expect: 100-continue

Текст запроса:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id &client_secret= Application-Secret&grant_type=refresh_token&refresh_token=RefreshTokenVlaue&scope=openid

Заполнитель ответа:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

Текст ответа

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

Выполнение вызовов к API Центра партнеров

При обращении к API Центра партнеров вам следует использовать маркер доступа. Пример приводится ниже.

Пример вызова к API Центра партнеров

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
Authorization: Bearer AccessTokenValue
Accept: application/json
X-Locale: en-US
Host: api.partnercenter.microsoft.com

PowerShell

Модуль PowerShell Центра партнеров можно использовать для управления ресурсами Центра партнеров. Это проект с открытым исходным кодом, поддерживаемый сообществом партнеров и официально не поддерживаемый корпорацией Майкрософт. При необходимости вы можете получить помощь от сообщества или опубликовать проблему в GitHub.

С помощью модуля PowerShell для Центра партнеров вы можете уменьшить строгость требований к инфраструктуре для обмена кода авторизации на код доступа. Это альтернативный метод для выполнения вызовов к REST API Центра партнеров.

Дополнительные сведения об этом процессе см. в этой статье в документации по PowerShell.

  1. Установите модули Microsoft Entra ID и Центра партнеров PowerShell.

    Install-Module AzureAD
    
    Install-Module PartnerCenter
    
  2. С помощью команды New-PartnerAccessToken подтвердите согласие и получите необходимый маркер обновления.

    $credential = Get-Credential
    
    $token = New-PartnerAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://api.partnercenter.microsoft.com/user_impersonation' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
    

    Примечание.

    Параметр ServicePrincipal используется с командой New-PartnerAccessToken, так как используется приложение Microsoft Entra с типом Веб/API. Приложениям такого типа необходимо, чтобы идентификатор и секрет клиента включались в запрос маркера доступа. При вызове команды Get-Credential вам будет предложено ввести имя пользователя и пароль. Введите в качестве имени пользователя идентификатор приложения. Введите в качестве пароля секрет приложения. При вызове команды New-PartnerAccessToken вам будет предложено снова ввести учетные данные. Введите учетные данные используемой учетной записи службы. Это должна быть партнерская учетная запись с достаточным уровнем разрешений.

  3. Скопируйте значение маркера обновления.

    $token.RefreshToken | clip
    

Маркер обновления нужно хранить в защищенном репозитории, например в Azure Key Vault. Дополнительные сведения об использовании модуля безопасного приложения с PowerShell см. в статье о многофакторной проверке подлинности .