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


Стратегии проверки подлинности службы контроля Marketplace

Служба контроля Marketplace поддерживает две стратегии проверки подлинности:

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

Использование маркера безопасности Microsoft Entra

Применимые типы предложений: продаваемые SaaS и приложения Azure с планом управляемого приложения.

Отправка пользовательских счетчиков с помощью предопределенного фиксированного идентификатора приложения Microsoft Entra для проверки подлинности.

Для предложений SaaS Azure AD является единственным доступным вариантом. Это обязательный шаг для публикации любого предложения SaaS, как описано в разделе Регистрация приложения SaaS.

Для приложений Azure с планом управляемого приложения эту стратегию следует использовать в следующих случаях.

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

При регистрации приложения вы можете программно запросить маркер безопасности Microsoft Entra. Ожидается, что издатель будет использовать этот токен и отправит запрос на его разрешение.

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

Получение маркера на основе приложения Microsoft Entra

Метод HTTP

POST

Request URL (URL-адрес запроса)

https://login.microsoftonline.com/*{tenantId}*/oauth2/token

Параметр универсального кода ресурса

Имя параметра Обязательный Description
tenantId Истина Идентификатор клиента зарегистрированного приложения Microsoft Entra.

Заголовок запроса

Имя заголовка Обязательный Description
Content-Type Истина Связанный с этим запросом тип содержимого. Значение по умолчанию — application/x-www-form-urlencoded.

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

Имя свойства Обязательный Description
Grant_type Истина Тип предоставления разрешения. Используйте client_credentials.
Client_id Истина Идентификатор клиента или приложения, связанный с приложением Microsoft Entra.
client_secret Истина Секрет, связанный с приложением Microsoft Entra.
Resource Истина Целевой ресурс, для которого запрашивается токен. Используйте 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Response

Имя Тип Description
200 OK TokenResponse Запрос успешно выполнен.

TokenResponse

Пример токена ответа.

  {
      "token_type": "Bearer",
      "expires_in": "3600",
      "ext_expires_in": "0",
      "expires_on": "15251…",
      "not_before": "15251…",
      "resource": "20e940b3-4c77-4b0b-9a53-9e16a1b010a7",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9…"
  }

Использование маркера удостоверений, управляемых Azure

Применимые типы предложений — это предложения приложений Kubernetes и приложения Azure с типом плана управляемого приложения.

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

Примечание.

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

Управляемое приложение может содержать ресурсы различных типов — от виртуальных машин до Функций Azure. Дополнительные сведения о проверке подлинности с помощью управляемых удостоверений для различных служб см. в статье Использование управляемых удостоверений для ресурсов Azure.

Например, выполните следующие действия для проверки подлинности с помощью виртуальной машины Windows.

  1. Убедитесь, что управляемое удостоверение настроено с помощью одного из следующих методов:

  2. Получите маркер доступа для идентификатора приложения службы измерения Marketplace (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) с помощью системного удостоверения, RDP на виртуальную машину, откройте консоль PowerShell и выполните команду:

    # curl is an alias to Web-Invoke PowerShell command
    # Get system identity access tokenn
    $MetadataUrl = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F"
    $Token = curl -H @{"Metadata" = "true"} $MetadataUrl | Select-Object -Expand Content | ConvertFrom-Json
    $Headers = @{}
    $Headers.Add("Authorization","$($Token.token_type) "+ " " + "$($Token.access_token)")
    
  3. Получите идентификатор управляемого приложения из текущего свойства групп ресурсов ManagedBy (не требуется для предложений приложений Kubernetes).

    # Get subscription and resource group
    $metadata = curl -H @{'Metadata'='true'} http://169.254.169.254/metadata/instance?api-version=2019-06-01 | select -ExpandProperty Content | ConvertFrom-Json 
    
    # Make sure the system identity has at least reader permission on the resource group
    $managementUrl = "https://management.azure.com/subscriptions/" + $metadata.compute.subscriptionId + "/resourceGroups/" + $metadata.compute.resourceGroupName + "?api-version=2019-10-01"
    $resourceGroupInfo = curl -Headers $Headers $managementUrl | select -ExpandProperty Content | ConvertFrom-Json
    $managedappId = $resourceGroupInfo.managedBy 
    
  4. Используйте API службы контроля Marketplace для порождения использования.

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

  1. Идентификатор клиента управляемого удостоверения службы приложения (MSI) необходимо использовать для создания маркера проверки подлинности для обмена данными с API измерения Microsoft Marketplace. Дополнительные сведения см . в примере кода.

    # Audience for the token to be generated 
    resource = '20e940b3-4c77-4b0b-9a53-9e16a1b010a7'
    clientId = <identity client id>
    url = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&clientId={0}&resource={1}".format(clientId,resource)
    headers = {'Metadata': 'true'}
    # Need to import requests module 
    response = requests.get(url)
    response = requests.get(url, headers=headers)
    authToken = response.json()
    
  2. Использование API службы измерения Marketplace для отправки данных об использовании